/* Shared UI scale; controller-compatible labels, larger cabinet page titles. */
:root{--text-dense:12px;--text-note:14px;--text-body:16px;--text-heading:18px;--text-display:24px;--text-page:28px}
/* Общая шкала и палитра интерфейса контроллера. */
:root{color-scheme:light;--bg:#f4f6f8;--card:#fff;--ink:#1f2933;--muted:#697386;--line:#e5e9f0;--orange:#f97316;--accent:#c2410c;--green:#0a8f4d;--blue:#1769aa;--red:#c62828;--yellow:#a86b17;--soft:#f8fafc;--selected:#fff1e6;--font-ui:"Segoe UI Variable Text","Segoe UI",Tahoma,Arial,sans-serif}
:root[data-theme=dark]{color-scheme:dark;--bg:#1f2024;--card:#27292f;--ink:#e7e9ed;--muted:#a6adba;--line:#3b404a;--accent:#fb923c;--green:#34d399;--blue:#60a5fa;--red:#f87171;--yellow:#fbbf24;--soft:#22252b;--selected:#3b2c23}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font:var(--text-body)/1.45 var(--font-ui);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea,table{font:inherit}button,a.button{cursor:pointer}button{border:0}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,svg:focus-visible,summary:focus-visible{outline:3px solid var(--orange);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:var(--text-page);letter-spacing:-.6px;line-height:1.2;margin-bottom:8px;font-weight:650}h2{font-size:var(--text-heading);margin-bottom:12px;line-height:1.3}h3{font-size:var(--text-body);margin:12px 0 9px}.muted{color:var(--muted)}.small,small,footer{font-size:var(--text-note)}.eyebrow{font-size:var(--text-note);letter-spacing:.7px;font-weight:650;color:var(--muted);margin-bottom:9px}[hidden]{display:none!important}
.brand{display:flex;align-items:center;gap:11px;max-width:440px;color:var(--ink);line-height:1.35}.brand-logo{display:block;width:46px;height:46px;flex:0 0 46px;object-fit:contain}.brand-copy{display:flex;flex-direction:column;min-width:0;gap:4px}.brand-copy strong{font-size:var(--text-heading);font-weight:700}.brand-copy>span{font-size:var(--text-note);color:var(--muted);line-height:1.4}
.primary,.button,button.secondary{padding:10px 16px;border:1px solid transparent;border-radius:8px;font-size:var(--text-body);font-weight:650;line-height:1.25;display:inline-flex;align-items:center;justify-content:center;gap:12px;text-align:center;background:#c94c0b;color:#fff;transition:background .15s}.primary:hover,.button:hover{background:#a83b08}.secondary{background:#344154;color:#fff}.secondary:hover{background:#253245}.wide{width:100%;justify-content:space-between}.heading-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.icon-button{font-size:var(--text-display);background:transparent;color:var(--muted);padding:4px 6px;line-height:1.2}
.theme-toggle{position:fixed;z-index:50;right:16px;top:12px;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);box-shadow:0 2px 8px #00000008}.theme-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.theme-sun{display:none}:root[data-theme=dark] .theme-sun{display:block}:root[data-theme=dark] .theme-moon{display:none}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);padding:10px 12px;min-height:42px}input:focus,select:focus{border-color:var(--orange)}input[type=checkbox]{width:18px;height:18px;min-height:0;vertical-align:middle;accent-color:var(--orange)}label{display:block;font-size:var(--text-note);font-weight:600;margin:13px 0 6px}.helptext{display:block;font-size:var(--text-note);color:var(--muted);margin-top:6px}.errorlist{padding:0;list-style:none;font-size:var(--text-note);color:var(--red);margin:6px 0}form .primary{margin-top:18px}.form-submit-status{margin:14px 0 0;color:var(--red);font-size:var(--text-note)}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-main{padding:34px 9%;background:var(--card);display:flex;flex-direction:column}.auth-form{max-width:420px;width:100%;margin:auto;padding:35px 0}.auth-form>.muted{margin-bottom:20px}.auth-form h1{font-size:var(--text-page)}.auth-links{margin-top:19px;text-align:center;font-size:var(--text-note)}.auth-links a{color:var(--accent)}.auth-links p{margin-top:16px;color:var(--muted)}footer{color:var(--muted)}.auth-art{background:#222b37;color:white;padding:44px 9% 30px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-art:before{content:'';position:absolute;width:540px;height:540px;border:1px solid #ffffff0b;border-radius:50%;top:-50px;left:0;box-shadow:0 0 0 60px #ffffff03,0 0 0 120px #ffffff02;pointer-events:none}.auth-art h2{font-size:var(--text-page);line-height:1.08;letter-spacing:-1.5px;font-weight:550;position:relative}.auth-art h2 span{color:var(--orange)}.auth-art .eyebrow,.art-caption,.art-footer{color:#b9c1cd}.art-caption{font-size:var(--text-body);line-height:1.5;position:relative}.art-footer{font-size:var(--text-note);display:flex;gap:9px;align-items:center;flex-wrap:wrap}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#71bd8e}.energy-orbit{width:210px;height:210px;border:1px solid #ffffff13;border-radius:50%;margin:24px auto;display:grid;place-items:center;position:relative}.battery-visual{height:120px;width:70px;border:2px solid #f9731666;border-radius:14px;transform:rotate(-16deg);padding:10px;display:flex;flex-direction:column-reverse;gap:5px;box-shadow:0 0 65px #f9731622}.battery-visual:before{content:'';position:absolute;top:-9px;left:23px;height:7px;width:22px;background:var(--orange);border-radius:4px 4px 0 0}.battery-visual i{display:block;height:13px;border-radius:2px;background:var(--orange)}.battery-visual i:last-child{opacity:.15}.battery-visual i:nth-last-child(2){opacity:.4}.energy-dot{position:absolute;left:15px;top:40px;border:5px solid #222b37;background:var(--orange);height:18px;width:18px;border-radius:50%}
.app-shell{display:grid;grid-template-columns:258px 1fr;min-height:100vh}.sidebar{background:var(--card);border-right:1px solid var(--line);padding:23px 18px 18px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:258px}.sidebar .brand{gap:9px}.sidebar .brand-logo{width:40px;height:40px;flex-basis:40px}.sidebar .brand-copy strong{font-size:var(--text-body)}.sidebar .brand-copy>span{font-size:var(--text-note)}.sidebar-label{margin:30px 0 9px;padding:0 11px}.nav-list{display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;font-size:var(--text-body);font-weight:650}.nav-item.active{background:var(--selected);color:var(--accent)}.nav-item span{font-size:var(--text-display);line-height:1}.sidebar-bottom{margin-top:auto;display:flex;gap:9px;align-items:center;padding-top:15px;border-top:1px solid var(--line)}.account-icon{width:33px;height:33px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font-weight:650;flex-shrink:0}.account{min-width:0;flex:1}.account b{font-size:var(--text-note);display:block}.account small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace{grid-column:2;padding:0 28px;display:flex;flex-direction:column;min-width:0}.topbar{min-height:64px;display:flex;gap:20px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:var(--text-note);color:var(--muted);margin-bottom:20px;padding:12px 40px 12px 0}.topbar-right{font-size:var(--text-note);white-space:nowrap}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.page-heading .muted{margin-bottom:0;font-size:var(--text-note)}.count{font-size:var(--text-body);font-weight:500;border:1px solid var(--line);padding:2px 8px;border-radius:6px;margin-left:12px;color:var(--muted);vertical-align:middle}.page-heading>.primary{white-space:nowrap}.workspace-footer{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:auto;padding:23px 0 16px}.back-link{color:var(--muted);font-size:var(--text-note);margin-bottom:12px}
.device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px;align-items:start}.device-card{background:var(--card);border:1px solid var(--line);padding:18px;border-radius:12px;transition:border-color .15s;min-width:0}.device-card:hover{border-color:var(--orange)}.device-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px;gap:8px}.equipment-icon{color:var(--orange);font-size:var(--text-page)}.pill{border:1px solid var(--line);border-radius:20px;padding:5px 10px;font-size:var(--text-note);background:var(--card);color:var(--muted);line-height:1.3}.pill.live{color:var(--green);background:color-mix(in srgb,var(--green) 6%,var(--card));border-color:color-mix(in srgb,var(--green) 25%,var(--line))}.pill.stale{color:var(--yellow);background:color-mix(in srgb,var(--yellow) 6%,var(--card))}.device-card h2{font-size:var(--text-display);margin-bottom:12px;overflow-wrap:anywhere}.device-card .eyebrow{font-size:var(--text-note);margin-bottom:5px}.card-bottom{margin-top:13px;border-top:1px solid var(--line);padding-top:11px;display:flex;justify-content:space-between;font-size:var(--text-note)}.card-bottom>span:last-child{color:var(--accent);font-size:var(--text-heading)}.card-measurements{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.mini-metric{display:flex;justify-content:space-between;gap:8px;align-items:baseline;min-width:0}.mini-metric span{font-size:var(--text-note);color:var(--muted)}.mini-metric strong{font-size:var(--text-body);font-weight:650;white-space:nowrap}.card-power{grid-column:1/-1;border-top:1px solid var(--line);padding-top:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.card-power .mini-metric{display:block}.card-power .mini-metric span,.card-power .mini-metric strong{display:block}.card-status{grid-column:1/-1;font-size:var(--text-note);color:var(--muted);margin:0}
.device-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.device-toolbar select{max-width:250px;font-size:var(--text-body);padding:8px 10px}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);min-width:0;max-width:100%;overflow-x:auto}.tabs button{font-size:var(--text-body);color:var(--muted);background:transparent;padding:9px 0 11px;border-bottom:2px solid transparent;white-space:nowrap}.tabs .selected{color:var(--accent);border-color:var(--orange)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.stat{background:var(--card);border:1px solid var(--line);padding:12px 15px;border-radius:10px}.stat p{color:var(--muted);font-size:var(--text-note);margin-bottom:5px}.stat strong{font-size:var(--text-display);font-weight:600;letter-spacing:-.4px}.stat small{margin-left:5px;color:var(--muted)}.panel{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:17px;margin-bottom:14px;min-width:0}.panel h2{font-size:var(--text-heading)}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}.panel-head .muted{font-size:var(--text-note)}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.chart-grid>.panel{margin:0}.chart{width:100%;height:220px;display:block;touch-action:pan-y}.chart-tick{font-size:var(--text-note);fill:var(--muted)}.chart-grid-line{stroke:var(--line)}.chart-crosshair{stroke:var(--muted);stroke-dasharray:3 3;pointer-events:none}.chart-value{font-size:var(--text-note);color:var(--muted);margin-top:7px;min-height:24px}.chart-legend{display:flex;gap:7px 15px;flex-wrap:wrap;font-size:var(--text-note);margin-top:7px}.chart-legend span{display:flex;align-items:center;gap:6px}.series-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}.chart-help{font-size:var(--text-note);color:var(--muted);margin:5px 0 0}.energy-panel h2{margin-bottom:4px}.energy-svg{display:block;width:100%;height:300px}.energy-unit{fill:var(--soft);stroke:var(--line)}.energy-inverter{fill:var(--bg);stroke:var(--orange)}.energy-label{font-size:var(--text-note);fill:var(--muted)}.energy-value{font-size:var(--text-heading);fill:var(--ink);font-weight:650}.energy-icon{fill:none;stroke:var(--orange);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.energy-wire{fill:none;stroke:var(--line);stroke-width:2}.energy-line[data-direction=forward] .energy-wire,.energy-line[data-direction=reverse] .energy-wire{stroke:var(--orange)}.energy-dot-flow{fill:var(--orange);display:none}.energy-line[data-direction=forward] .energy-dot-flow,.energy-line[data-direction=reverse] .energy-dot-flow{display:block;animation:energy-flow 3s linear infinite;offset-rotate:0deg}.energy-line[data-direction=reverse] .energy-dot-flow{animation-direction:reverse}@keyframes energy-flow{from{offset-distance:0%}to{offset-distance:100%}}.energy-caption{font-size:var(--text-note);color:var(--muted);margin:0 0 12px}.runtime{display:flex;align-items:center;gap:24px;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px}.runtime h3{font-size:var(--text-body);margin:0 0 5px}.runtime strong{font-size:var(--text-display);font-weight:600;white-space:nowrap}.runtime p{font-size:var(--text-note);color:var(--muted);margin:0;max-width:620px}.runtime-basis{margin-top:5px!important}
.metric-search{max-width:400px;margin-bottom:13px}.metric-group{margin-top:14px}.metric-group:first-of-type{margin-top:0}.metric-list{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.metric-row{display:flex;justify-content:space-between;gap:15px;padding:7px 0;border-bottom:1px solid var(--line);align-items:baseline;min-width:0}.metric-row dt{font-size:var(--text-note);color:var(--muted);overflow-wrap:anywhere}.metric-row dd{font-size:var(--text-body);font-weight:600;margin:0;text-align:right;overflow-wrap:anywhere;flex-shrink:0;max-width:48%}.flags-list{display:flex;flex-wrap:wrap;gap:7px}.flag{font-size:var(--text-note);border:1px solid var(--line);border-radius:6px;padding:5px 9px}.flag.alarm{color:var(--red);border-color:color-mix(in srgb,var(--red) 30%,var(--line))}.cell-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(86px,1fr));gap:7px}.cell{border:1px solid var(--line);padding:8px 4px;text-align:center;border-radius:7px;background:var(--soft)}.cell small{display:block;color:var(--muted);font-size:var(--text-note);margin-bottom:4px;line-height:1.3}.cell b{font-size:var(--text-body);white-space:nowrap}.cell.min{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 8%,var(--card))}.cell.max{border-color:var(--orange);background:color-mix(in srgb,var(--orange) 8%,var(--card))}.cell-legend{font-size:var(--text-note);color:var(--muted);margin:8px 0 0}.loading{padding:28px;text-align:center;color:var(--muted)}
.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-body)}.data-table td,.data-table th{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.data-table th{font-size:var(--text-note);color:var(--muted);font-weight:600}.data-table td{overflow-wrap:anywhere}.data-table .actions{white-space:nowrap}.compact-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.compact-form select{width:auto;max-width:240px}.compact-form .primary,.compact-form .button{margin:0;padding:8px 12px;font-size:var(--text-body)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 18px}.form-grid p{margin-bottom:6px}.settings-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.settings-layout .panel{margin:0}.settings-values{font-size:var(--text-note);color:var(--muted)}.settings-values strong{color:var(--ink);font-size:var(--text-body)}.section-note{font-size:var(--text-note);color:var(--muted);margin-bottom:12px}.empty-state{border:1px solid var(--line);border-radius:12px;background:var(--card);text-align:center;padding:35px 20px;min-height:310px}.empty-state h2{font-size:var(--text-display)}.empty-state .muted{font-size:var(--text-note);margin-bottom:20px}.empty-graphic{height:95px;width:150px;position:relative;margin:0 auto 16px}.empty-battery{width:55px;height:73px;border:2px solid var(--line);border-radius:8px;position:absolute;left:46px;top:6px;padding:8px;display:flex;flex-direction:column-reverse;gap:4px;transform:rotate(-12deg)}.empty-battery:before{content:'';position:absolute;top:-7px;left:17px;width:18px;height:5px;background:var(--line);border-radius:3px 3px 0 0}.empty-battery i{height:13px;background:var(--selected);border-radius:2px}.empty-graphic>span{position:absolute;right:16px;top:0;color:var(--orange);font-size:var(--text-page)}.empty-graphic>b{position:absolute;left:17px;bottom:5px;font-size:var(--text-display);font-weight:400;color:var(--muted)}
.message{padding:10px 14px;border:1px solid color-mix(in srgb,var(--green) 30%,var(--line));border-radius:7px;background:color-mix(in srgb,var(--green) 6%,var(--card));margin-bottom:14px;font-size:var(--text-note)}.message.error{border-color:var(--red);background:color-mix(in srgb,var(--red) 6%,var(--card))}.notice{max-width:540px;margin:55px auto;padding:20px}.notice-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:30px;margin-top:28px}.notice-card h1{font-size:var(--text-page)}.round-icon{display:grid;place-items:center;background:var(--selected);color:var(--accent);border-radius:50%;width:50px;height:50px;font-size:var(--text-display);margin-bottom:19px}dialog{border:1px solid var(--line);border-radius:12px;padding:24px;max-width:480px;width:calc(100% - 30px);color:var(--ink);background:var(--card)}dialog::backdrop{background:#141a2477;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.password-field{position:relative;width:100%}.password-field>input{padding-right:52px}.password-toggle{position:absolute;top:50%;right:5px;transform:translateY(-50%);width:40px;height:40px;display:grid;place-items:center;padding:8px;border-radius:6px;background:transparent;color:var(--muted);line-height:1}.password-toggle:hover{color:var(--ink);background:var(--soft)}.password-toggle svg{width:22px;height:22px;display:block;pointer-events:none}.password-toggle .eye-slash{display:none}.password-toggle[aria-pressed=true] .eye-slash{display:block}.local-mail-note{margin:16px 0;padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:var(--soft);font-size:var(--text-note)}.local-mail-note p{margin:0 0 8px;color:var(--muted)}.local-mail-note a{color:var(--accent);font-weight:600}
@media(min-width:1650px){.workspace{padding:0 44px}.device-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.sidebar{width:230px;padding-left:14px;padding-right:14px}.app-shell{grid-template-columns:230px 1fr}.workspace{padding:0 20px}.topbar-right{display:none}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid,.settings-layout{grid-template-columns:1fr}.device-toolbar{align-items:flex-start;flex-direction:column}.auth-art h2{font-size:var(--text-page)}.metric-list{grid-template-columns:1fr}.device-grid{grid-template-columns:1fr}}
@media(max-width:700px){.auth-shell{display:block}.auth-art{display:none}.auth-main{min-height:100vh;padding:24px 20px}.auth-main>.brand{padding-right:25px}.auth-form{padding:34px 0}.auth-form h1{font-size:var(--text-page)}.brand-logo{width:40px;height:40px;flex-basis:40px}.auth-main footer{text-align:center}.sidebar{position:static;width:100%;display:grid;grid-template-columns:1fr auto;border-right:0;border-bottom:1px solid var(--line);padding:14px 16px 10px;gap:12px}.sidebar>.brand{padding-right:20px}.sidebar .brand-logo{width:36px;height:36px;flex-basis:36px}.sidebar .brand-copy strong{font-size:var(--text-body)}.sidebar-label,.account{display:none}.nav-list{grid-row:2;grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:5px}.nav-item{padding:8px 10px;font-size:var(--text-note);gap:6px}.sidebar-bottom{margin:0 32px 0 0;border:0;padding:0;gap:4px}.sidebar-bottom .account-icon{display:none}.app-shell{display:block}.workspace{padding:0 14px}.topbar{min-height:44px;margin-bottom:14px;padding:9px 0;font-size:var(--text-note)}.theme-toggle{right:12px;top:12px;width:36px;height:36px}.page-heading{align-items:flex-start;flex-direction:column;gap:10px;margin-bottom:14px}.page-heading h1{font-size:var(--text-page)}.page-heading>.primary{font-size:var(--text-body)}.heading-actions{width:100%;justify-content:space-between}.workspace-footer span{display:none}.tabs{gap:16px}.device-toolbar{gap:10px;margin-bottom:12px}.device-toolbar select{max-width:100%;width:100%}.stat-grid{gap:9px}.stat{padding:10px 12px}.stat strong{font-size:var(--text-display)}.panel{padding:13px}.energy-svg{height:300px}.runtime{align-items:flex-start;flex-direction:column;gap:8px}.runtime strong{font-size:var(--text-display)}.chart-grid{gap:12px}.chart-value,.chart-legend{font-size:var(--text-note)}.metric-row{gap:12px}.metric-row dd{max-width:46%}.metric-search{max-width:100%}.card-measurements{gap:8px 12px}.card-power{gap:5px}.card-power .mini-metric strong{font-size:var(--text-body)}.device-card{padding:15px}.device-card .eyebrow{font-size:var(--text-note)}.form-grid{grid-template-columns:1fr}.data-table{font-size:var(--text-note)}.data-table th,.data-table td{padding:8px 7px}.notice{margin:30px auto}.notice-card{padding:24px}.empty-state{padding:28px 15px}.empty-state br{display:none}.brand-copy>span{font-size:var(--text-note)}.sidebar .brand-copy>span{font-size:var(--text-note)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.settings-parameter-list{margin:0}.settings-parameter{padding:9px 0;border-bottom:1px solid var(--line)}.settings-parameter dt{font-size:var(--text-note);color:var(--muted);margin-bottom:6px}.settings-parameter dd{margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-parameter dd strong{font-size:var(--text-body);margin-right:auto}.settings-parameter .button{font-size:var(--text-note);padding:6px 9px}.settings-parameter button:disabled{cursor:not-allowed}.compact-form label{margin:0}.data-table form{margin:0}

.mask-controls{border:0;margin:0;padding:0;min-width:0}.mask-option{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0;padding:9px 0;border-bottom:1px solid var(--line);font-size:var(--text-body);font-weight:400}.mask-option>span{min-width:0;overflow-wrap:anywhere}.mask-option input[type=checkbox]{appearance:none;flex:0 0 38px;position:relative;width:38px;height:22px;border:1px solid var(--line);border-radius:12px;background:var(--muted);margin:0;padding:0;cursor:pointer}.mask-option input:before{content:'';position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}.mask-option input:checked{background:var(--green);border-color:var(--green)}.mask-option input:checked:before{transform:translateX(16px)}.settings-parameter dd>strong{overflow-wrap:anywhere;max-width:100%;font-weight:600}.settings-values strong{overflow-wrap:anywhere}

/* Компактные карточки систем и обзор оборудования. */
.device-card{--device-status:var(--muted);position:relative;padding:14px 16px 14px 17px;overflow:hidden;border-left:4px solid var(--device-status)}.device-card:hover{border-left-color:var(--device-status)}.device-card[data-connection-state=fresh]{--device-status:var(--green)}.device-card[data-connection-state=partial]{--device-status:var(--yellow)}.device-card[data-connection-state=stale]{--device-status:var(--red)}
.device-card-head{display:flex;align-items:center;gap:11px;margin-bottom:9px}.equipment-icon{width:34px;height:34px;flex:0 0 34px}.equipment-icon svg{display:block;width:100%;height:100%;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.equipment-icon .battery-bars{stroke-width:3}.equipment-icon .battery-bolt{fill:currentColor;stroke-width:1}.device-card-identity{min-width:0;flex:1}.equipment-kind{font-size:var(--text-note);line-height:1.25;color:var(--muted);margin:0 0 4px}.device-card h2{font-size:var(--text-heading);line-height:1.2;margin:0}.card-open{color:var(--muted);font-size:var(--text-display)}.card-connection{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.card-connection time{font-size:var(--text-note);color:var(--muted)}.card-connection .pill{border:0;background:transparent;padding:0;font-size:var(--text-note)}.card-measurements{gap:7px 16px}.card-power{padding-top:8px;margin-top:2px}.card-power .mini-metric span{font-size:var(--text-note);line-height:1.3}.card-power .mini-metric strong{font-size:var(--text-body)}.card-grid-input:empty{display:none}.card-grid-input{margin-top:9px;border-top:1px solid var(--line);padding-top:8px}
.pill.connection-fresh{color:var(--green)}.pill.connection-partial{color:var(--yellow)}.pill.connection-stale{color:var(--red)}.pill.connection-unknown{color:var(--muted)}
.grid-input-heading{display:flex;align-items:center;gap:6px;font-size:var(--text-note);line-height:1.3;margin-bottom:6px}.grid-state-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:0 0 8px}.grid-input[data-grid-state=available] .grid-state-dot{background:var(--green)}.grid-input[data-grid-state=missing] .grid-state-dot{background:var(--red)}.grid-input[data-grid-quality=conflict] .grid-state-dot,.grid-input[data-grid-quality=out_of_range] .grid-state-dot{background:var(--yellow)}.grid-phases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.grid-phase{font-size:var(--text-note);display:grid;grid-template-columns:auto 1fr;column-gap:5px;align-items:baseline}.grid-phase>span{color:var(--muted)}.grid-phase strong{font-size:var(--text-note);font-weight:600;white-space:nowrap}.grid-phase small{grid-column:2;font-size:var(--text-note);color:var(--muted);white-space:nowrap}
.device-workspace .topbar{min-height:42px;padding-top:7px;padding-bottom:7px;margin-bottom:8px}.device-page-heading{margin-bottom:8px;gap:8px}.device-page-title{display:flex;align-items:center;gap:10px;min-width:0}.device-page-title h1{font-size:var(--text-page);margin:0;overflow-wrap:anywhere}.device-page-title .back-link{font-size:var(--text-display);line-height:1;margin:0}.device-page-heading .button{padding:7px 12px;font-size:var(--text-body)}.device-workspace .device-toolbar{margin-bottom:8px;gap:12px}.device-workspace .tabs button{padding:7px 0 8px}.device-workspace .device-toolbar select{min-height:36px;padding:6px 10px}.device-workspace .stat-grid{gap:9px;margin-bottom:9px}.device-workspace .stat{display:flex;align-items:baseline;gap:5px;padding:8px 10px}.device-workspace .stat p{margin:0 auto 0 0;line-height:1.2}.device-workspace .stat strong{font-size:var(--text-display);white-space:nowrap}.device-workspace .stat small{margin:0;font-size:var(--text-note);white-space:nowrap}
.energy-panel{padding:12px;margin-bottom:10px}.energy-layout{display:grid;grid-template-columns:minmax(145px,170px) minmax(280px,1fr) minmax(160px,180px);gap:12px;align-items:center}.energy-layout>.runtime{border:0;padding:0;display:block;align-self:start;padding-top:6px;min-width:0}.energy-layout .runtime h3{font-size:var(--text-body);line-height:1.3}.energy-layout .runtime strong{display:block;margin:3px 0 7px;font-size:var(--text-display);white-space:normal}.energy-layout .runtime p{font-size:var(--text-note);line-height:1.35}.energy-layout .runtime-basis{margin-top:7px!important}.energy-flow{min-width:0}.energy-flow .energy-svg{height:176px}.energy-flow .energy-caption{font-size:var(--text-note);line-height:1.3;margin:0;min-height:18px}.energy-status{min-width:0;align-self:start;padding-top:6px}.energy-status h2{font-size:var(--text-body);margin:0 0 7px;overflow-wrap:anywhere}.energy-status .pill{display:block;width:fit-content;padding:4px 7px;font-size:var(--text-note);line-height:1.25}.equipment-timestamp{display:block;font-size:var(--text-note);color:var(--muted);margin:7px 0 12px}.energy-status .grid-phases{grid-template-columns:1fr;gap:5px}.energy-status .grid-phase{grid-template-columns:15px 1fr auto}.energy-status .grid-phase small{grid-column:auto}.energy-status .grid-input-heading{margin-bottom:8px}
.chart-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:4px}.chart-heading h2{margin:0}.chart-heading .chart-value{margin:0;min-height:0;font-size:var(--text-note)}.power-chart{padding:12px;margin-bottom:10px}.power-chart{--chart-height:186px}.power-chart .chart{height:var(--chart-height)}.power-chart .chart-legend{margin-top:3px;gap:5px 16px}.module-facts{display:flex;flex-wrap:wrap;gap:5px 16px;font-size:var(--text-note);color:var(--muted);margin:-4px 0 10px}
@media(max-width:1250px) and (min-width:701px){.energy-layout{grid-template-columns:145px minmax(280px,1fr) 160px;gap:9px}.device-workspace .stat{flex-wrap:wrap;gap:0 5px}.device-workspace .stat p{width:100%}.device-workspace .stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1000px){.energy-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.energy-flow{grid-column:1/-1;grid-row:2}.energy-status{grid-column:2;grid-row:1}.energy-layout>.runtime{grid-column:1;grid-row:1}.energy-status .grid-phases{grid-template-columns:1fr}.device-workspace .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.device-workspace .topbar{min-height:36px;margin-bottom:8px}.device-page-heading{flex-direction:row;align-items:center;flex-wrap:wrap}.device-page-title h1{font-size:var(--text-display)}.device-page-heading .heading-actions{width:auto;margin-left:auto}.device-page-heading .heading-actions:has(.pill:not(:empty)){flex-wrap:wrap}.device-workspace .device-toolbar{gap:7px}.device-workspace .stat{padding:8px 10px;flex-wrap:nowrap}.device-workspace .stat p{width:auto;font-size:var(--text-note)}.device-workspace .stat strong{font-size:var(--text-display)}.energy-panel{padding:11px}.energy-layout{column-gap:12px;row-gap:8px}.energy-layout>.runtime,.energy-status{padding-top:0}.energy-layout .runtime strong{font-size:var(--text-display)}.energy-status h2{font-size:var(--text-body)}.energy-status .grid-phase{grid-template-columns:12px 1fr}.energy-status .grid-phase small{grid-column:2}.energy-flow .energy-svg{height:176px}.energy-flow .energy-caption{font-size:var(--text-note)}.equipment-timestamp{font-size:var(--text-note);margin:6px 0 8px}.chart-heading{gap:4px}.chart-heading .chart-value{font-size:var(--text-note)}.power-chart{padding:11px}.power-chart .chart-legend{gap:5px 12px}.device-card{padding:13px 13px 13px 18px}.device-card-head{gap:9px}.device-card h2{font-size:var(--text-heading)}.card-connection{gap:5px;margin-bottom:9px}.card-measurements{gap:6px 12px}.card-power{gap:7px}.card-power .mini-metric strong{font-size:var(--text-body)}.grid-phase{column-gap:4px}.grid-phase strong,.grid-phase small{font-size:var(--text-note)}}


/* Equipment navigation and phase indications stay local to their subsystem. */
.equipment-tabs{margin-bottom:5px;border-bottom:0;gap:6px}.equipment-tabs button{border:1px solid var(--line);border-radius:7px;padding:5px 16px;font-size:var(--text-body);font-weight:650;background:var(--card)}.equipment-tabs button.selected{color:var(--accent);background:var(--selected);border-color:var(--orange)}.device-workspace .device-toolbar{gap:10px;margin-bottom:7px}.device-workspace #view-tabs{min-height:34px}.device-workspace #stream-select{width:auto;max-width:260px}
.energy-flow .energy-svg{height:185px}.energy-flow[data-layout=portrait] .energy-svg{height:338px}.energy-label,.energy-phase-label{font-size:var(--text-note);fill:var(--muted)}.energy-value{font-size:var(--text-note);font-weight:650}.energy-phase-label{fill:var(--ink)}.energy-phase-lamp{fill:var(--muted)}.energy-phase[data-state=available] .energy-phase-lamp{fill:var(--green)}.energy-phase[data-state=missing] .energy-phase-lamp{fill:var(--red)}.energy-phase[data-state=warning] .energy-phase-lamp{fill:var(--yellow)}.energy-status .equipment-timestamp{margin-bottom:8px}
.equipment-errors{border:1px solid var(--line);border-radius:8px;background:var(--soft);padding:8px;margin-top:7px;min-height:90px;max-height:146px;overflow:auto}.equipment-errors h3{margin:0 0 5px;font-size:var(--text-note);line-height:1.3}.equipment-errors p{font-size:var(--text-note);line-height:1.35;margin:0}.equipment-errors-clear{color:var(--green)}.equipment-error-list{padding-left:17px;margin:0;font-size:var(--text-note);line-height:1.35;color:var(--red)}.equipment-error-list li+li{margin-top:5px}.equipment-error-list+p{margin-top:5px}.state-group{margin-top:10px}.state-group>summary{font-size:var(--text-body);cursor:pointer}.state-alarm{color:var(--red)}
@media(max-width:700px){.device-workspace .device-toolbar{gap:5px}.device-workspace #stream-select{max-width:100%;width:100%}.equipment-tabs{margin-bottom:3px}.equipment-tabs button{padding:5px 16px}.equipment-errors{min-height:88px;max-height:180px}.energy-status .equipment-timestamp{margin-bottom:6px}}

.device-workspace .equipment-tabs button{padding:5px 16px}

/* Название и тема управляются независимо от перехода к системе. */
.brand-theme{display:block;padding:0;flex:0 0 auto;border-radius:50%;background:transparent;color:inherit;line-height:0}
.brand-theme:hover{filter:brightness(1.08)}.brand-theme .brand-logo{pointer-events:none}
.device-card-link:after{content:"";position:absolute;inset:0;border-radius:inherit}.device-card-link:focus-visible{outline:0}.device-card:has(.device-card-link:focus-visible){outline:3px solid var(--orange);outline-offset:3px}
.rename-device{position:relative;z-index:1;align-self:flex-start;flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--muted);padding:6px}.rename-device:hover{background:var(--soft);color:var(--ink)}.rename-device svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.topbar.has-events{display:block;padding:5px 0;margin-bottom:7px;min-height:66px}
.recent-events{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;max-width:960px;margin:auto;min-width:0}
.recent-events-title{padding-top:3px;font-size:var(--text-note);font-weight:650;color:var(--ink)}
.recent-events ol{margin:0;padding:0;list-style:none;max-height:52px;min-height:40px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.recent-events li{display:flex;gap:9px;font-size:var(--text-note);line-height:1.35;padding:2px 0;align-items:baseline}.recent-events li time{white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}.recent-events li span{overflow-wrap:anywhere;color:var(--ink)}.recent-events li[data-level=error] span,.recent-events li[data-level=alarm] span{color:var(--red)}.recent-events li[data-level=warning] span{color:var(--yellow)}#recent-events-status{grid-column:2;font-size:var(--text-note);color:var(--yellow)}#recent-events-status:empty{display:none}
.data-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.data-column{min-width:0}.compact-data{padding:12px;margin:0 0 10px}.compact-data h2{font-size:var(--text-body);margin:0 0 7px}.compact-data .metric-list{grid-template-columns:1fr;gap:0}.compact-data .metric-row{padding:5px 0;gap:10px}.compact-data .metric-row dt{font-size:var(--text-note);line-height:1.3}.compact-data .metric-row dd{font-size:var(--text-body)}.compact-data .state-alarm dt,.compact-data .state-alarm dd{color:var(--red)}.compact-data .state-active dd{color:var(--green)}.metric-group{margin-top:0}.state-group{margin-top:0}
.battery-module-card{padding:12px;margin-bottom:10px}.battery-module-card h2{font-size:var(--text-body);margin-bottom:10px}.battery-module-card h3{font-size:var(--text-body);margin:9px 0 6px}.battery-module-card .cell-grid{grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:5px}.battery-module-card .cell{padding:5px 3px}.battery-module-card .cell small{font-size:var(--text-note);margin-bottom:2px}.battery-module-card .cell b{font-size:var(--text-body)}.battery-module-card .cell-legend{margin-top:6px}.battery-module-card .module-facts{gap:4px 10px;margin-bottom:7px}
.settings-parameter{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,1fr);gap:8px;padding:6px 0}.settings-parameter dt{margin:0;align-self:center;font-size:var(--text-note);line-height:1.3}.settings-parameter dd{gap:6px}.settings-parameter dd strong{font-size:var(--text-body)}.settings-parameter .button{padding:5px 8px}.settings-parameter-time{display:block;width:100%;font-size:var(--text-note);color:var(--muted);line-height:1.2}.settings-parameter-time.stale{color:var(--yellow)}.settings-layout{gap:10px;align-items:start}.settings-layout .panel{padding:12px}.settings-layout .panel h2{font-size:var(--text-body);margin-bottom:7px}#inline-settings .device-toolbar{flex-wrap:wrap}#inline-settings #settings-status{margin-bottom:0}
#inline-settings #settings-target,#inline-settings label[for=settings-target]{display:none}.compact-data{position:relative}.compact-data:has(.group-help)>h2{padding-right:26px}.group-help{position:absolute;right:10px;top:9px;z-index:2;font-size:var(--text-note)}.group-help summary{display:grid;place-items:center;list-style:none;cursor:pointer;width:21px;height:21px;border:1px solid var(--line);border-radius:50%;color:var(--muted)}.group-help summary::-webkit-details-marker{display:none}.group-help p{position:absolute;right:0;top:21px;width:min(290px,70vw);padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);box-shadow:0 4px 14px #0002;line-height:1.35;font-size:var(--text-note)}.group-note{font-size:var(--text-note);color:var(--muted);line-height:1.35;margin-bottom:8px}
@media(min-width:701px){.device-workspace .energy-panel{padding-top:10px;padding-bottom:10px}.device-workspace .stat-grid{margin-bottom:7px}}
@media(max-width:900px){.data-columns{grid-template-columns:1fr}}
@media(max-width:700px){.sidebar-bottom{margin-right:0}.sidebar>.brand{padding-right:0}.auth-main>.brand{padding-right:0}.topbar.has-events{padding:6px 0;min-height:68px}.recent-events{gap:7px}.recent-events ol{max-height:56px}.recent-events li{display:block}.recent-events li time{margin-right:6px}.data-columns{gap:0}.settings-parameter{grid-template-columns:minmax(0,1fr) minmax(110px,.8fr)}.device-workspace .stat{flex-wrap:wrap;gap:0 4px}.device-workspace .stat p{width:100%;margin-bottom:2px}.device-workspace .stat strong{margin-left:auto}.device-workspace .stat small{margin-right:0}}

/* PV channels keep the same source grouping as the controller. */
.solar-metrics{margin-bottom:12px}.solar-total .metric-list{display:flex;flex-wrap:wrap;gap:8px 28px}.solar-total .metric-row{flex:1;min-width:220px}.solar-metrics .data-columns{margin-top:10px}

/* Keep event refresh errors in their own row without expanding the desktop header. */
.recent-events:has(#recent-events-status:not(:empty)){row-gap:3px}.recent-events:has(#recent-events-status:not(:empty)) ol{min-height:28px;max-height:28px}
@media(min-width:1001px){.equipment-errors{max-height:110px}}
@media(min-width:1001px) and (max-height:820px){.power-chart{--chart-height:160px}}

/* Events share the title row: four visible records, no overlay. */
.page-heading.events-heading{display:grid;grid-template-columns:minmax(240px,.95fr) minmax(0,1.5fr);align-items:center;gap:18px;margin-top:16px;margin-bottom:12px}
.page-heading.home-events-heading{grid-template-columns:230px minmax(0,1fr) auto}
.events-heading .heading-main{min-width:0}.events-heading .heading-main>h1{margin-bottom:6px}.events-heading .heading-main .heading-actions{margin-top:7px}.events-heading .heading-actions:has(#detail-status-home:empty){display:none}
.events-heading .recent-events{display:grid;grid-template-columns:82px minmax(0,1fr);width:100%;max-width:none;margin:0;gap:8px;min-height:88px;align-items:start}
.recent-events-caption{min-width:0;line-height:22px}.recent-events-caption #recent-events-status{display:block;margin-top:5px;font-size:var(--text-note);line-height:18px;overflow-wrap:anywhere}.recent-events-caption #recent-events-status:empty{display:none}
.events-heading .recent-events ol,.events-heading .recent-events:has(#recent-events-status:not(:empty)) ol{height:88px;min-height:88px;max-height:88px;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y proximity}
.events-heading .recent-events li{display:flex;gap:8px;height:22px;min-height:22px;line-height:22px;padding:0;align-items:baseline;scroll-snap-align:start}
.events-heading .recent-events li time{flex-shrink:0;white-space:nowrap}.events-heading .recent-events li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
@media(min-width:701px) and (max-width:1200px){.page-heading.home-events-heading{grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);gap:8px 16px}.home-events-heading>.recent-events{grid-column:2;grid-row:1/span 2}.home-events-heading>.primary{grid-column:1;justify-self:start}.page-heading.events-heading:not(.home-events-heading){grid-template-columns:minmax(200px,.8fr) minmax(0,1.2fr)}}
@media(max-width:700px){.page-heading.events-heading,.page-heading.home-events-heading{grid-template-columns:minmax(0,1fr);gap:10px;margin-top:12px;margin-bottom:12px}.events-heading .recent-events{grid-template-columns:minmax(0,1fr);gap:3px;min-height:0}.recent-events-caption{display:flex;gap:12px;align-items:baseline;justify-content:space-between}.recent-events-caption #recent-events-status{margin-top:0}.events-heading .recent-events ol,.events-heading .recent-events:has(#recent-events-status:not(:empty)) ol{height:176px;min-height:176px;max-height:176px}.events-heading .recent-events li{display:block;height:44px;min-height:44px;line-height:22px}.events-heading .recent-events li time,.events-heading .recent-events li span{display:block;margin:0}.events-heading .recent-events li span{width:100%}.home-events-heading>.primary{justify-self:start}.events-heading .heading-main .heading-actions{margin-left:0}}

/* Phase157: top-aligned headings, compact energy view and inline setpoints. */
.page-heading.events-heading,.page-heading.home-events-heading{grid-template-columns:minmax(230px,.9fr) minmax(0,1.5fr);align-items:start}
.events-heading .heading-main>h1,.events-heading .device-page-title h1{margin-top:0;padding-top:3px;line-height:22px}
.home-events-heading .heading-main>h1{padding-top:5px}
.events-heading .device-page-title{align-items:flex-start}
.events-heading .device-page-title .back-link{line-height:22px}
.events-heading .recent-events-title{display:block;padding-top:0;line-height:22px}
.events-heading .recent-events-caption{line-height:22px}
.events-heading .recent-events li,.events-heading .recent-events li time,.events-heading .recent-events li span{line-height:22px}
.events-heading .recent-events li[data-level=error],.events-heading .recent-events li[data-level=alarm]{border-left:3px solid var(--red);padding-left:6px}
.events-heading .recent-events li[data-level=warning]{border-left:3px solid var(--yellow);padding-left:6px}
.events-heading .recent-events li[data-level=success],.events-heading .recent-events li[data-level=restored]{border-left:3px solid var(--green);padding-left:6px}
.recent-events li[data-level=success] span,.recent-events li[data-level=restored] span{color:var(--green)}
.device-list-actions{display:flex;justify-content:flex-end;margin:14px 0 0}
.device-card .card-order-controls{display:flex;gap:4px;position:relative;z-index:2;margin-left:auto;align-items:center}
.card-order-controls button{width:30px;height:30px;font-size:var(--text-heading);line-height:1;padding:4px;color:var(--muted);background:var(--soft);border:1px solid var(--line);border-radius:6px}
.card-order-controls button:disabled{opacity:.4;cursor:default}
.card-order-controls .drag-handle{cursor:grab;touch-action:none}
.device-card.dragging{opacity:.55}
.device-card.drop-target{outline:2px solid var(--orange);outline-offset:2px}
.device-order-status{font-size:var(--text-note);color:var(--muted);margin:7px 0 0;min-height:0}
.device-order-status:empty{display:none}
.energy-layout{grid-template-columns:minmax(160px,190px) minmax(0,540px) minmax(150px,1fr);gap:10px;align-items:start}
.energy-flow{width:100%;max-width:540px;justify-self:center;align-self:center}
.energy-support{min-width:0}.energy-support .runtime{border:0;padding:0;display:block}
.energy-support .runtime h3{font-size:var(--text-note);line-height:1.25}.energy-support .runtime strong{font-size:var(--text-display);line-height:1.2;margin:2px 0}
.energy-support .runtime p{font-size:var(--text-note);line-height:1.25}
.runtime-details{font-size:var(--text-note);line-height:18px}.runtime-details summary{cursor:pointer;color:var(--muted)}.runtime-details[open]>p{margin-top:5px}
.energy-flow .energy-caption{text-align:center}
.energy-value{font-weight:700}
.energy-line[data-direction=forward] .energy-wire,.energy-line[data-direction=reverse] .energy-wire{stroke:#0a9c69}
.energy-dot-flow{fill:#0a9c69}
.weather-widget{border-top:1px solid var(--line);margin-top:8px;padding-top:6px;min-width:0}
.weather-heading{font-size:var(--text-note);margin:0 0 4px;display:flex;justify-content:space-between;gap:5px}
.weather-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);overflow:auto}
.weather-tabs button{padding:3px 0;font-size:var(--text-note);background:transparent;color:var(--muted);white-space:nowrap;border-bottom:2px solid transparent}
.weather-tabs button.selected{color:var(--ink);border-color:var(--orange)}
.weather-now{display:flex;gap:6px;align-items:center;min-height:34px}.weather-now strong{font-size:var(--text-display)}
.weather-note,.weather-detail,.weather-location{font-size:var(--text-note);line-height:1.3;margin:3px 0;color:var(--muted)}
.weather-icon{width:26px;height:26px;color:var(--orange);flex-shrink:0}
.weather-days{font-size:var(--text-note);max-height:126px;overflow:auto;margin:5px 0 0;padding:0;list-style:none}
.weather-days li{display:flex;justify-content:space-between;gap:5px;padding:2px 0}
.weather-source{font-size:var(--text-note);color:var(--muted);display:block;margin-top:5px}
.weather-heading>strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.weather-place-button{padding:0;font-size:var(--text-note);line-height:18px;background:transparent;color:var(--muted);white-space:nowrap}
.weather-widget .weather-source{display:flex;gap:7px;flex-wrap:wrap;line-height:16px;margin-top:2px}
.weather-widget .weather-note{display:block;line-height:16px;margin-top:2px}
.weather-widget .weather-detail{line-height:16px;margin:0 0 2px}
.weather-widget .weather-days{max-height:52px}
.weather-location-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;margin:8px 0;min-width:0}.weather-location-form input{font-size:var(--text-note);padding:8px;min-width:0;width:100%}.weather-location-form .button{margin:0;min-height:42px;font-size:var(--text-note);padding:8px 12px}
.weather-location-results{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:8px;min-width:0;width:100%;margin-top:8px}.weather-location-results select{width:100%;max-width:100%;min-width:0;font-size:var(--text-note);min-height:42px}.weather-location-results .button{width:100%;max-width:100%;min-height:42px;white-space:normal;font-size:var(--text-note);padding:8px 12px}
.analytics-series{display:flex;align-items:center;gap:5px;font-size:var(--text-note);margin:0;font-weight:400}
.analytics-series input{width:16px;height:16px;margin:0}
#equipment-settings{padding:0;border:0;background:transparent;box-shadow:none;margin-bottom:9px}
#equipment-settings>.device-toolbar{margin-bottom:6px}
#inline-settings #equipment-settings>.device-toolbar{display:none}
#settings-status{font-size:var(--text-note);margin:0 0 7px;color:var(--muted)}
#settings-groups{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:9px}
#settings-groups button{background:var(--soft);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-size:var(--text-note);color:var(--muted)}
#settings-groups button.selected{background:var(--selected);border-color:var(--orange);color:var(--ink)}
.settings-layout{display:block}.settings-group{padding:10px 12px}.settings-group h2{font-size:var(--text-body);margin-bottom:6px}
.setpoint-row{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(130px,.85fr) minmax(180px,1.2fr) minmax(120px,.7fr);gap:9px;padding:7px 0;border-top:1px solid var(--line);align-items:start;font-size:var(--text-note);line-height:1.3}
.setpoint-header{font-weight:600;color:var(--muted);border-top:0}
.setpoint-table.readonly .setpoint-row{grid-template-columns:minmax(160px,1.5fr) minmax(150px,1fr)}
.setpoint-label,.setpoint-current{overflow-wrap:anywhere}.setpoint-current{font-weight:600;font-variant-numeric:tabular-nums}
.setpoint-editor{min-width:0}.setpoint-editor input,.setpoint-editor select{font-size:var(--text-note);line-height:1.3;padding:5px 7px;min-height:30px;width:100%}
.setpoint-editor .mask-option{font-size:var(--text-note);padding:5px 0;gap:7px}.setpoint-editor .mask-option input{flex:0 0 34px;width:34px;height:20px;min-height:0;padding:0}
.setpoint-editor .mask-option input:before{width:14px;height:14px}.setpoint-editor .mask-option input:checked:before{transform:translateX(14px)}
.mask-editor summary{cursor:pointer;font-size:var(--text-note);line-height:20px;color:var(--ink)}.mask-editor .mask-controls{margin-top:5px}
.setpoint-hint{display:block;font-size:var(--text-note);color:var(--muted);line-height:1.3;margin-top:4px}
.setpoint-actions{display:flex;flex-wrap:wrap;gap:5px}.setpoint-actions button{font-size:var(--text-note);padding:6px 8px;line-height:1.2}
.setpoint-note{font-size:var(--text-note);line-height:1.3;margin:3px 0 0;width:100%;overflow-wrap:anywhere;color:var(--muted)}
.setpoint-note.error{color:var(--red)}
.analytics-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.analytics-controls input{width:auto;font-size:var(--text-body);padding:6px 8px}
.analytics-summary{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.analytics-summary .mini-metric{min-width:120px;padding:9px 12px;background:var(--soft);border-radius:8px}
.analytics-bars{display:block;width:100%;height:260px}
.analytics-bars text{font-size:var(--text-note);fill:var(--muted)}
.analytics-bars .bar{cursor:pointer}.analytics-bars .bar:focus{outline:none;stroke:var(--ink);stroke-width:2}
.analytics-note{font-size:var(--text-note);color:var(--muted);line-height:1.4;margin:7px 0 0}
.state-group-empty{font-size:var(--text-note);color:var(--muted);margin:3px 0}
@media(max-width:1200px) and (min-width:701px){.page-heading.home-events-heading{grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr)}.home-events-heading>.recent-events{grid-column:auto;grid-row:auto}.energy-layout{grid-template-columns:160px minmax(0,540px) 150px;gap:8px}.setpoint-row{grid-template-columns:minmax(145px,1.2fr) minmax(110px,.8fr) minmax(145px,1fr) 105px}}
@media(max-width:1000px){.energy-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.energy-support{grid-column:1;grid-row:1}.energy-status{grid-column:2;grid-row:1}.energy-flow{grid-column:1/-1;grid-row:2}.setpoint-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.setpoint-header{display:none}.setpoint-label{font-weight:600}.setpoint-current:before{content:'Текущее: ';font-weight:400;color:var(--muted)}.setpoint-editor{grid-column:1}.setpoint-actions{grid-column:2}}
@media(max-width:700px){.page-heading.events-heading,.page-heading.home-events-heading{grid-template-columns:minmax(0,1fr)}.events-heading .device-page-title h1,.events-heading .heading-main>h1{line-height:1.2}.device-list-actions>.primary{width:100%}.card-order-controls{margin-top:8px}.device-card .card-order-controls{justify-content:flex-end}.device-card-head{flex-wrap:wrap}.device-card-identity{min-width:calc(100% - 95px)}.energy-layout{gap:10px}.energy-support .runtime strong{font-size:var(--text-display)}.weather-tabs{gap:7px}.weather-tabs button{font-size:var(--text-note)}.weather-now strong{font-size:var(--text-display)}.analytics-bars{height:260px}.analytics-controls{gap:7px}.analytics-summary{gap:7px}.analytics-summary .mini-metric{min-width:130px;flex:1}.setpoint-table.readonly .setpoint-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.setpoint-row{gap:7px}.setpoint-hint{font-size:var(--text-note)}.settings-group{padding:10px}.setpoint-editor .mask-option{display:flex;align-items:center}}
@media(prefers-reduced-motion:reduce){.energy-dot-flow{animation:none!important;display:none!important}}

/* Phase158: visible actions and independent chart-series selection. */
.home-title-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:6px}
.home-events-heading .home-title-row h1{margin:0;padding-top:5px;line-height:22px}
.add-device-circle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-width:30px;padding:0;border-radius:50%;background:var(--orange);color:#fff;font-size:var(--text-display);line-height:1;margin-top:0}
.add-device-circle:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.chart-series{display:flex;align-items:center;gap:5px;font-size:var(--text-note);font-weight:400;margin:0;cursor:pointer;min-width:0}
.chart-series input{width:16px;height:16px;margin:0;flex:0 0 16px}
.chart-series .chart-series-value{display:inline;white-space:nowrap}
.chart-series .chart-series-value[hidden]{display:none}
.chart-empty{height:220px;display:flex;align-items:center;justify-content:center;margin:0;font-size:var(--text-note);text-align:center}
.power-chart .chart-empty{height:var(--chart-height)}
.weather-widget .weather-empty-note{margin:3px 0 7px;line-height:18px}
.weather-widget .weather-location-choose{background:var(--selected);color:var(--accent);border:1px solid var(--orange);border-radius:7px;font-size:var(--text-note);line-height:18px;padding:6px 8px;white-space:normal;text-align:left;width:100%}
@media(max-width:700px){.home-events-heading .home-title-row h1{line-height:1.2}.home-title-row{gap:10px}.add-device-circle{margin-top:5px}.chart-series{flex-wrap:wrap}}

/* Weather follows available panel width, independently of the compact diagram. */
.energy-panel{container-type:inline-size}
.energy-weather{grid-column:1/-1;min-width:0;width:100%;max-width:420px;justify-self:end;align-self:start}
.energy-weather .weather-widget{margin-top:0;padding-top:8px}
.energy-weather .weather-heading{align-items:flex-start;gap:10px}
.energy-weather .weather-heading>strong{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.energy-weather .weather-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.energy-weather .weather-tabs button{padding:7px 4px}
/* Match the available panel width: keep the diagram compact and give text room. */
@container(min-width:1180px){
 .energy-support{grid-area:runtime}
 .energy-flow{grid-area:flow;max-width:540px;width:100%;justify-self:center;align-self:start}
 .energy-status{grid-area:status}
 .energy-weather{grid-area:weather;max-width:none}
 .energy-weather .weather-widget{border-top:0;padding-top:6px}
 .energy-support .runtime h3{font-size:var(--text-body)}
 .energy-support .runtime strong{font-size:var(--text-page)}
}
@container(1180px <= width < 1480px){
 .energy-layout{grid-template-columns:clamp(240px,20cqi,300px) minmax(0,1fr) clamp(350px,27cqi,420px);grid-template-areas:"runtime flow weather" "runtime status weather";column-gap:18px;row-gap:12px}
 .energy-status{width:100%;max-width:540px;justify-self:center;padding-top:0;display:grid;grid-template-columns:minmax(160px,1fr) minmax(220px,1.25fr);gap:4px 12px}
 .energy-status h2{grid-column:1;grid-row:1;margin:0}
 .energy-status .pill{grid-column:1;grid-row:2}
 .energy-status .equipment-timestamp{grid-column:1;grid-row:3;margin:0}
 .energy-status .equipment-errors{grid-column:2;grid-row:1/span 3;margin:0;min-height:90px;max-height:146px}
}
@container(min-width:1480px){
 .energy-layout{grid-template-columns:minmax(240px,1fr) 540px 220px 420px;grid-template-areas:"runtime flow status weather";gap:14px}
}
@media(max-width:700px){.energy-weather{max-width:none}}

.weather-daily-values{display:flex;gap:20px;margin:5px 0}
.weather-daily-values>div{display:flex;flex-direction:column;gap:2px;font-size:var(--text-note);color:var(--muted)}
.weather-daily-values strong{font-size:var(--text-display);color:var(--ink);white-space:nowrap}
.energy-weather .weather-days{max-height:168px}
.energy-weather .weather-days strong{text-align:right}

/* Period, visible series and astronomical shading share the selected stream. */
.chart-heading{flex-wrap:wrap}
.chart-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}
.chart-period-form,.chart-period-fields{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;margin:0}
.chart-period-form select,.chart-period-fields input{width:auto;max-width:100%;min-width:0;font-size:var(--text-note);padding:5px 7px}
.chart-actions button,.chart-parameters>summary{font-size:var(--text-note);padding:6px 9px;line-height:1.3}
.chart-timezone{font-size:var(--text-note);color:var(--muted)}
.chart-period-status{margin:0 0 6px;font-size:var(--text-note);color:var(--muted)}
.chart-parameters{position:relative}
.chart-parameters>summary{list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card);white-space:nowrap}
.chart-parameters>summary::-webkit-details-marker{display:none}
.chart-parameter-options{position:absolute;z-index:8;left:0;top:calc(100% + 6px);width:max-content;max-width:calc(100vw - 48px);padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:0 8px 25px #0002;display:grid;gap:8px}
.chart-parameter-options .chart-series{white-space:normal}
.chart-reading{display:inline-flex;gap:5px;align-items:center;font-size:var(--text-note)}
.chart-reading[hidden],.chart-series-value[hidden]{display:none!important}
.chart-night-band{fill:#65749c;fill-opacity:.13}
[data-theme=dark] .chart-night-band{fill:#acb9e2;fill-opacity:.15}
.add-device-circle{width:32px;height:32px;min-width:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1}
.add-device-circle svg{display:block;width:20px;height:20px;flex:none}
@media(max-width:700px){.chart-actions{width:100%}.chart-period-form{flex:1 0 185px}.chart-period-fields{width:100%}.chart-period-fields input{flex:1;max-width:100%}.chart-parameter-options{left:0}.chart-heading .chart-value{width:100%}}

.chart-period-form select{min-width:185px}

/* Keep the whole date and time readable on a narrow screen. */
@media(max-width:700px){
 .chart-period-form{flex:1 0 100%;width:100%}
 .chart-period-form>select{width:100%}
 .chart-period-fields{display:grid;grid-template-columns:minmax(0,1fr);width:100%;gap:6px}
 .chart-period-fields input{width:100%;max-width:100%;flex:none}
 .chart-period-fields>span:not(.chart-timezone){display:none}
 .chart-period-fields button{justify-self:start;width:auto}
}

/* Phase161: readable chart selection, engineering scales and forecast cards. */
#telemetry{overflow-anchor:none}
.equipment-identity{display:flex;align-items:center;flex-wrap:wrap;gap:7px 10px;min-width:0}
.equipment-identity h2{margin:0!important;font-size:var(--text-body);line-height:1.35}
.equipment-identity .pill{display:inline-flex;align-items:center;white-space:nowrap;flex:none;margin:0;padding:3px 7px;line-height:1.3;background:var(--card);border:1px solid var(--line)}
.detail-equipment-status{margin:7px 0 12px;min-height:29px}
.detail-equipment-status[hidden]{display:none!important}
.runtime-details h4{font-size:var(--text-note);font-weight:600;color:var(--muted);margin:9px 0 4px}
.runtime-details p{margin:0 0 7px;line-height:1.45!important}
.energy-support .runtime strong{font-variant-numeric:tabular-nums;font-size:var(--text-display);line-height:1.35}
.energy-status .equipment-identity{grid-column:1;grid-row:1;align-self:start}
.energy-status .equipment-timestamp{grid-column:1;grid-row:2}
.energy-status .equipment-errors{grid-column:2;grid-row:1/span 2}
.indicators-chart{--chart-height:400px}
.indicators-chart .chart-plots{min-height:400px}
.indicators-chart .chart{height:auto;display:block;width:100%;min-width:0}
.indicators-chart .chart-unit-label{font-size:var(--text-note);font-weight:600;fill:var(--ink)}
.indicators-chart .chart-value{font-variant-numeric:tabular-nums;white-space:nowrap;min-width:140px}
.indicators-chart .chart-legend{align-items:flex-start;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));margin-top:12px;gap:8px 18px}
.indicators-chart .chart-reading{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:5px;align-items:baseline;min-width:0}
.indicators-chart .chart-series-value{font-variant-numeric:tabular-nums;min-width:92px;text-align:right;white-space:nowrap}
.indicators-chart .chart-parameter-options{width:440px;max-width:calc(100vw - 48px);display:block;padding:12px}
.chart-parameter-options>input{font-size:var(--text-note);padding:8px;position:sticky;top:0;width:100%;margin:0 0 8px}
.chart-parameter-list{max-height:340px;overflow:auto;overscroll-behavior:contain}
.chart-metric-group{margin:0 0 9px;padding:5px 0 3px;border:0;border-bottom:1px solid var(--line);min-width:0}
.chart-metric-group legend{font-size:var(--text-note);font-weight:600;color:var(--muted);padding:0 0 6px;max-width:100%}
.chart-metric-group .chart-series{display:grid;grid-template-columns:16px 8px minmax(0,1fr) auto;align-items:center;gap:6px;padding:5px 0;line-height:1.35}
.chart-metric-group .chart-series small{font-size:var(--text-note);color:var(--muted);white-space:nowrap}
.chart-selection-note{font-size:var(--text-note);line-height:1.35;margin:9px 0 0;color:var(--muted)}
.weather-content{width:100%;padding-top:10px;min-width:0}
.weather-forecast-card{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;background:var(--soft);padding:11px 12px}
.weather-forecast-heading{display:flex;align-items:center;gap:10px;font-weight:600;font-size:var(--text-note);line-height:1.4;color:var(--ink)}
.weather-forecast-card .weather-icon{width:34px;height:34px}
.weather-forecast-card .weather-daily-values{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:9px 0}
.weather-forecast-card .weather-daily-values>div{padding:7px 9px;border-radius:6px;background:var(--card);line-height:1.4}
.weather-forecast-card .weather-daily-values strong{font-size:var(--text-display);line-height:1.35;font-variant-numeric:tabular-nums}
.weather-forecast-card .weather-detail{font-size:var(--text-note);line-height:1.45!important;margin:8px 0 0;color:var(--ink)}
.weather-current .weather-now{justify-content:center;gap:16px;padding:6px 0}
.weather-current .weather-now .weather-icon{height:48px;width:48px}
.weather-current .weather-now strong{font-size:var(--text-page);line-height:1.3}
.weather-current-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.weather-current-details>div{display:flex;flex-direction:column;gap:3px;font-size:var(--text-note);color:var(--muted)}
.weather-current-details strong{color:var(--ink)}
.weather-week{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.weather-week .weather-forecast-card{padding:9px}
.weather-week .weather-forecast-heading{font-size:var(--text-note);gap:5px;flex-wrap:wrap}
.weather-week .weather-daily-values{gap:5px;margin:6px 0}
.weather-week .weather-daily-values>div{padding:4px;font-size:var(--text-dense)}
.weather-week .weather-daily-values strong{font-size:var(--text-body)}
.weather-week .weather-detail{font-size:var(--text-note);line-height:1.3!important}
.energy-weather .weather-note{margin-top:7px;line-height:1.4}
.weather-widget .weather-source{margin-top:7px}
@container(1180px <= width < 1480px){.energy-status{grid-template-columns:minmax(200px,1fr) minmax(180px,1fr)}.energy-status .equipment-identity{grid-column:1;grid-row:1}.energy-status .equipment-timestamp{grid-column:1;grid-row:2}.energy-status .equipment-errors{grid-column:2;grid-row:1/span 2}}
@media(max-width:700px){.indicators-chart .chart-parameter-options{position:fixed;left:14px;right:14px;top:20vh;width:auto;max-width:none;max-height:70vh;overflow:auto}.chart-parameter-list{max-height:40vh}.indicators-chart .chart-heading{gap:10px}.indicators-chart .chart-reading{font-size:var(--text-note)}.indicators-chart .chart-series-value{min-width:78px}.weather-week{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.energy-support .runtime strong{font-size:var(--text-display)}.runtime-details p{font-size:var(--text-note)!important}}

/* Actual-data review: long completeness labels need their own summary row. */
.analytics-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px;min-width:0}
.analytics-summary .mini-metric{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:5px 10px;min-width:0;max-width:100%;flex:none}
.analytics-summary .mini-metric>span{min-width:0;overflow-wrap:anywhere;line-height:1.35}
.analytics-summary .mini-metric>strong{font-size:var(--text-body);line-height:1.35}
.analytics-summary .mini-metric>small{grid-column:1/-1;font-size:var(--text-note);color:var(--muted);line-height:1.35;min-width:0;overflow-wrap:anywhere}
/* At medium widths, pair runtime/flow with status/weather instead of leaving
   the complete lower left part of the header empty. */
@container(800px <= width < 1180px){
 .energy-layout{grid-template-columns:minmax(0,1.25fr) minmax(300px,1fr);grid-template-areas:"runtime status" "flow weather";column-gap:20px;row-gap:14px;align-items:start}
 .energy-support{grid-area:runtime;align-self:start}
 .energy-flow{grid-area:flow;width:100%;max-width:540px;justify-self:center;align-self:center}
 .energy-status{grid-area:status;display:block;padding-top:0}
 .energy-weather{grid-area:weather;width:100%;max-width:none;justify-self:stretch;align-self:start}
 .energy-weather .weather-widget{border-top:0;padding-top:0}
 .energy-support .runtime strong{font-size:var(--text-page)}
 .energy-status .equipment-identity{display:flex}
 .energy-status .equipment-timestamp{margin:7px 0 8px}
 .energy-status .equipment-errors{margin-top:8px;min-height:80px}
}

/* Phase162: controller controls, compact header and consistent system identity. */
:root{--control-bg:#334155;--control-hover:#475569;--orange-dark:#c2410c}
:root[data-theme=dark]{--control-bg:#334155;--control-hover:#475569;--orange-dark:#ea580c}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,svg:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
input:focus,select:focus,textarea:focus{border-color:var(--muted)}
.primary,.button:not(.secondary){background:linear-gradient(135deg,var(--orange),var(--orange-dark));color:#fff}
.primary:hover,.button:not(.secondary):hover{background:linear-gradient(135deg,#fb923c,var(--orange-dark))}
.secondary,button.secondary{background:var(--control-bg);color:#fff}.secondary:hover,button.secondary:hover{background:var(--control-hover)}
.tabs{gap:6px;border:0;overflow-x:auto;padding:2px 0 4px}
.tabs button,.device-workspace .tabs button,#settings-groups button,.metric-group-choice,.weather-tabs button,.chart-parameters>summary{display:inline-flex;align-items:center;justify-content:center;min-height:32px;border:1px solid transparent;border-radius:8px;background:var(--control-bg);color:#fff;padding:5px 10px;font-size:var(--text-note);font-weight:650;line-height:20px;white-space:nowrap}
.tabs button:hover,#settings-groups button:hover,.metric-group-choice:hover,.weather-tabs button:hover,.chart-parameters>summary:hover{background:var(--control-hover)}
.tabs button.selected,#settings-groups button.selected,.metric-group-choice.selected,.metric-group-choice[aria-pressed=true],.weather-tabs button.selected,.chart-night-toggle[aria-pressed=true],.chart-parameters[open]>summary{background:linear-gradient(135deg,var(--orange),var(--orange-dark));color:#fff;border-color:transparent}
.tabs button:focus-visible,#settings-groups button:focus-visible,.metric-group-choice:focus-visible,.weather-tabs button:focus-visible,.chart-parameters>summary:focus-visible{outline-color:var(--ink)}
.nav-item.active{background:linear-gradient(135deg,var(--orange),var(--orange-dark));color:#fff}
.chart-actions{gap:8px;align-items:center}
.chart-period-form,.chart-period-fields{gap:6px;align-items:center}
.chart-period-form select,.chart-period-fields input,.chart-actions button,.chart-parameters>summary,.analytics-controls input,.analytics-controls select,.analytics-controls button{height:32px;min-height:32px;box-sizing:border-box;font-size:var(--text-note);line-height:20px;padding:5px 9px;border-radius:8px;margin-top:0;margin-bottom:0}
.chart-period-form select{min-width:175px;padding-right:25px}
.chart-period-form select option{background:var(--card);color:var(--ink)}
.chart-period-fields input[type=date]{width:132px}
.chart-period-fields input[type=datetime-local]{width:204px}
.chart-actions button{display:inline-flex;align-items:center;justify-content:center}
.chart-series-swatch{width:26px;height:10px;display:inline-block;flex:none;overflow:visible}
.indicators-chart .chart-reading{grid-template-columns:26px minmax(0,1fr) auto}
.chart-metric-group .chart-series:has(.chart-series-swatch){grid-template-columns:16px 26px minmax(0,1fr) auto}
.metrics-selector{padding:12px;margin-bottom:12px}
.metrics-selector .metric-search{display:block;margin:0 0 10px;max-width:none;font-size:var(--text-note);min-height:34px;padding:6px 9px}
.metric-navigation{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}
.metric-group-choice{gap:7px;white-space:normal;text-align:left;max-width:100%;overflow-wrap:anywhere}
.metric-group-count{display:inline-flex;align-items:center;justify-content:center;min-width:21px;padding:0 5px;border-radius:4px;background:#ffffff20;font-size:var(--text-dense);font-weight:600;line-height:18px;flex:none}
.device-page-heading.events-heading{margin-bottom:8px}
.device-page-heading .heading-main{display:flex;flex-direction:column;gap:10px}
.device-page-heading .equipment-tabs{margin:0;padding:2px 0 0;align-self:flex-start;max-width:100%}
.device-title-stack{min-width:0;display:flex;flex-direction:column;gap:5px}
.device-system-id{display:block;min-width:0;margin:5px 0 0;color:var(--muted);font-size:var(--text-note);line-height:18px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.device-title-stack .device-system-id{margin:0}
.device-page-title .back-link{padding-top:3px}
.device-card-head{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:start;gap:10px;margin-bottom:10px}
.device-card-identity{min-width:0}
.device-card-head .equipment-icon{align-self:center}
.device-card-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0;position:relative;z-index:2}
.device-card-actions .rename-device{align-self:center}
.device-card-actions .pill{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;flex:none;margin:0;padding:3px 7px;line-height:1.3;font-size:var(--text-note);background:var(--card);border:1px solid var(--line)}
.card-connection{justify-content:flex-end;margin-bottom:10px}
.card-connection .pill:empty{display:none}
.energy-weather .weather-tabs{gap:6px;border:0;overflow:visible}
.energy-weather .weather-tabs button{padding:5px 4px;min-width:0}
@media(max-width:700px){
 .device-page-heading .heading-main{gap:8px}
 .device-page-heading .equipment-tabs{align-self:stretch}
 .device-workspace .device-toolbar{margin-bottom:7px}
 .device-workspace #view-tabs{gap:5px;max-width:100%;width:100%;min-height:0}
 .device-workspace #view-tabs button{padding:5px 8px;font-size:var(--text-note)}
 .device-card-head{grid-template-columns:34px minmax(0,1fr);gap:8px}
 .device-card-head .equipment-icon{grid-column:1;grid-row:1}
 .device-card-identity{grid-column:1/-1;grid-row:2;min-width:0}
 .device-card-actions{grid-column:2;grid-row:1;justify-self:end}
 .chart-period-fields input[type=date],.chart-period-fields input[type=datetime-local]{width:100%}
 .chart-period-form select{min-width:0}
 .chart-parameter-options{max-width:calc(100vw - 28px)}
 .metric-navigation{gap:5px}
 .metric-group-choice{font-size:var(--text-note);padding:5px 8px}
}


/* Wide layouts reserve the full stale-status label beside the inverter model.
   The diagram can yield 40px at the container breakpoint instead of overflow. */
@container(min-width:1480px){
 .energy-layout{grid-template-columns:minmax(240px,1fr) minmax(500px,540px) 240px 420px}
}

/* Cabinet brand: larger mark on a white plate in both themes. */
.brand .brand-theme{display:flex;align-items:center;justify-content:center;width:64px;height:64px;flex:0 0 64px;padding:4px;border:0;border-radius:14px;background:#fff;box-shadow:0 3px 12px rgb(0 0 0 / 12%)}
.brand .brand-theme .brand-logo{width:56px;height:56px;flex:0 0 56px}


/* Phase164: compact forecast, native flow and stable engineering controls. */
:root{--brand-plate:#fff}:root[data-theme=dark]{--brand-plate:#26282e}
.brand{align-items:flex-start}
.brand .brand-theme{background:var(--brand-plate);transition:transform .15s ease,filter .15s ease,box-shadow .15s ease;box-shadow:0 6px 18px rgb(0 0 0 / 18%)}
.brand .brand-theme:hover{transform:translateY(-1px);filter:brightness(1.06);box-shadow:0 8px 22px rgb(0 0 0 / 24%)}
.brand .brand-theme:active{transform:translateY(0)}
.energy-weather .weather-widget{padding-top:0}
.weather-heading{align-items:flex-start;margin-bottom:5px}
.weather-content{padding-top:7px}
.weather-forecast-card{padding:8px 9px}
.weather-forecast-heading{gap:7px;line-height:1.3}
.weather-forecast-card .weather-icon{width:28px;height:28px}
.weather-forecast-card .weather-daily-values{gap:8px;margin:6px 0}
.weather-forecast-card .weather-daily-values>div{padding:4px 7px;line-height:1.3}
.weather-forecast-card .weather-daily-values strong{font-size:var(--text-display);line-height:1.25}
.weather-forecast-card .weather-detail{line-height:1.3!important;margin:5px 0 0}
.weather-current .weather-now{justify-content:flex-start;gap:12px;padding:0}
.weather-current .weather-now .weather-icon{width:38px;height:38px}
.weather-current .weather-now strong{font-size:var(--text-page)}
.weather-current-details{margin-top:7px;gap:6px 10px}
.weather-footer{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-top:6px;padding-top:5px;border-top:1px solid var(--line);font-size:var(--text-note);line-height:1.3;color:var(--muted)}
.weather-footer>*{min-width:0;overflow-wrap:anywhere}
.weather-footer .weather-source{display:inline;margin:0;font-size:inherit;line-height:inherit}
.weather-footer .weather-stale{width:100%}
.weather-pending{display:flex;align-items:center;gap:8px;min-height:52px}
.weather-pending:before{content:'';width:16px;height:16px;flex:0 0 16px;border:2px solid var(--line);border-top-color:var(--orange);border-radius:50%;animation:weather-pending-turn .9s linear infinite}
@keyframes weather-pending-turn{to{transform:rotate(360deg)}}
.weather-week{display:grid;grid-template-columns:1fr;gap:5px;max-height:230px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-right:3px}
.weather-week .weather-forecast-card{display:grid;grid-template-columns:minmax(106px,.95fr) minmax(116px,1fr);align-items:start;gap:3px 7px;padding:6px 7px}
.weather-week .weather-forecast-heading{font-size:var(--text-note);gap:5px;flex-wrap:nowrap;min-width:0}
.weather-week .weather-icon{width:23px;height:23px;flex:0 0 23px}
.weather-week .weather-daily-values{margin:0;gap:5px}
.weather-week .weather-daily-values>div{padding:2px 4px;font-size:var(--text-dense);line-height:1.2}
.weather-week .weather-daily-values strong{font-size:var(--text-body);line-height:1.2}
.weather-week .weather-detail{grid-column:1/-1;font-size:var(--text-note);line-height:1.3!important;margin:1px 0 0}
.metric-navigation{display:grid;gap:0;width:100%}
.metric-category-row{display:grid;grid-template-columns:145px minmax(0,1fr);gap:10px;padding:6px 0;border-top:1px solid var(--line);min-width:0}
.metric-category-row:first-child{border-top:0}
.metric-category-row>h3{font-size:var(--text-note);font-weight:600;line-height:1.3;color:var(--muted);margin:0;padding-top:7px}
.metric-category-buttons{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;min-width:0}
.chart-metric-category,.chart-metric-subgroup{margin:0 0 5px;border:0;min-width:0}
.chart-metric-category>summary,.chart-metric-subgroup>summary{display:flex;align-items:center;gap:7px;list-style:none;cursor:pointer;min-height:32px;padding:5px 8px;font-size:var(--text-note);line-height:20px;border:1px solid transparent;border-radius:8px;color:#fff;background:var(--control-bg);white-space:normal;overflow-wrap:anywhere;font-weight:650}
.chart-metric-category>summary:hover,.chart-metric-subgroup>summary:hover{background:var(--control-hover)}
.chart-metric-category[open]>summary,.chart-metric-subgroup[open]>summary{background:linear-gradient(135deg,var(--orange),var(--orange-dark));color:#fff}
.chart-metric-subgroup{padding-left:9px;margin:6px 0}
.chart-metric-subgroup>summary{font-size:var(--text-note);font-weight:600}
.chart-metric-category>summary:before,.chart-metric-subgroup>summary:before{content:'›';font-size:var(--text-heading);line-height:16px;width:12px;flex:0 0 12px;transform:rotate(0);transition:transform .1s}
.chart-metric-category[open]>summary:before,.chart-metric-subgroup[open]>summary:before{transform:rotate(90deg)}
.chart-metric-category>summary::-webkit-details-marker,.chart-metric-subgroup>summary::-webkit-details-marker{display:none}
.chart-metric-subgroup .chart-series{padding:5px 5px 5px 12px}
.indicators-chart .chart-reading{align-items:start;min-height:40px}
.indicators-chart .chart-series-value{display:grid;grid-template-rows:20px 18px;min-width:112px;width:112px;line-height:20px}
.chart-reading-number{display:block;min-height:20px;white-space:nowrap;font-variant-numeric:tabular-nums}
.chart-reading-time{display:block;min-height:18px;line-height:18px;font-size:var(--text-note);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--muted)}
.equipment-state-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:start}
.equipment-state-layout .panel{margin-bottom:0}
.state-fault-summary{grid-column:1;grid-row:1/span 2}
.state-operation{grid-column:2;grid-row:1}
.state-chronology{grid-column:2;grid-row:2}
.state-fault-summary .metric-list{display:block}
.state-fault-summary .metric-row{gap:12px;padding:6px 0}
.state-fault-summary .metric-row dd{font-size:var(--text-note);max-width:58%;line-height:1.35}
.cabinet-native-flow{min-width:0;color:var(--ink)}
.cabinet-native-flow .pcs-flow-svg{display:block;width:100%;height:auto;max-height:220px}
.cabinet-native-flow[data-layout=portrait] .pcs-flow-svg{max-height:none}
.cabinet-native-flow[data-layout=portrait] .pcs-flow-label,.cabinet-native-flow[data-layout=portrait] .pcs-flow-value,.cabinet-native-flow[data-layout=portrait] .pcs-phase-letter{font-size:var(--text-note)}
.cabinet-native-flow .pcs-flow-unit{fill:var(--card);stroke:var(--line);stroke-width:1.4}
.cabinet-native-flow .pcs-flow-inverter{fill:var(--bg);stroke:#f47b20;stroke-width:2}
.cabinet-native-flow .pcs-flow-icon{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.cabinet-native-flow .pcs-flow-label{fill:currentColor;font-size:15.5px;font-weight:600}
.cabinet-native-flow .pcs-flow-value{fill:currentColor;font-size:15.5px;font-weight:700;font-variant-numeric:tabular-nums}
.cabinet-native-flow .pcs-phase-lamps [data-phase]{color:var(--muted)}
.cabinet-native-flow .pcs-phase-lamps circle{fill:currentColor}
.cabinet-native-flow .pcs-phase-letter{fill:var(--ink);font-size:15.5px}
.cabinet-native-flow .pcs-phase-lamps [data-state=available]{color:var(--green,#087c52)}
.cabinet-native-flow .pcs-phase-lamps [data-state=unavailable],.cabinet-native-flow .pcs-phase-lamps [data-state=invalid]{color:var(--red,#b42318)}
.cabinet-native-flow .pcs-phase-lamps [data-state=fault],.cabinet-native-flow .pcs-phase-lamps [data-state=conflict]{color:var(--orange,#db7700)}
.cabinet-native-flow .pcs-flow-wire{fill:none;stroke:currentColor;stroke-width:2}
.cabinet-native-flow .pcs-flow-line{color:#bcc4d0}
.cabinet-native-flow .pcs-flow-line[data-direction=forward],.cabinet-native-flow .pcs-flow-line[data-direction=reverse]{color:#0a9c69}
.cabinet-native-flow .pcs-flow-dot{fill:currentColor;opacity:0;animation:cabinet-native-energy-flow 3s linear infinite;animation-play-state:paused}
.cabinet-native-flow .pcs-flow-line[data-direction=forward] .pcs-flow-dot,.cabinet-native-flow .pcs-flow-line[data-direction=reverse] .pcs-flow-dot{opacity:1;animation-play-state:running}
.cabinet-native-flow .pcs-flow-line[data-direction=reverse] .pcs-flow-dot{animation-direction:reverse}
.cabinet-native-flow .pcs-flow-caption{font-size:var(--text-note);text-align:center;color:var(--muted);min-height:18px;margin-top:2px;line-height:18px}
@keyframes cabinet-native-energy-flow{from{offset-distance:0%}to{offset-distance:100%}}
@container(min-width:1480px){
 .energy-layout{grid-template-columns:minmax(220px,1fr) 620px 240px minmax(300px,340px);column-gap:12px;row-gap:8px}
 .energy-flow{max-width:620px}
}
@container(1180px <= width < 1480px){
 .energy-layout{grid-template-columns:minmax(220px,1fr) 620px minmax(300px,340px);column-gap:12px;row-gap:8px}
 .energy-flow,.energy-status{max-width:620px}
}
@container(800px <= width < 1180px){
 .energy-layout{grid-template-columns:minmax(0,1fr) 300px;column-gap:18px;row-gap:10px}
 .energy-flow{max-width:620px;align-self:start}
}
@media(max-width:900px){.equipment-state-layout{grid-template-columns:minmax(0,1fr)}.state-fault-summary,.state-operation,.state-chronology{grid-column:1;grid-row:auto}}
@media(max-width:700px){
 .metric-category-row{grid-template-columns:minmax(0,1fr);gap:6px;padding:8px 0}
 .metric-category-row>h3{padding-top:0}
 .weather-week{grid-template-columns:1fr}
 .weather-footer{font-size:var(--text-note)}
 .indicators-chart .chart-series-value{min-width:108px;width:108px}
 .chart-reading-time{font-size:var(--text-dense)}
}
@media(prefers-reduced-motion:reduce){.weather-pending:before{animation:none}.cabinet-native-flow .pcs-flow-dot{animation:none!important;display:none!important}.brand .brand-theme{transition:none}}

/* The chronology belongs to the right operation column, never a third grid cell. */
.state-operation .state-chronology{grid-column:auto;grid-row:auto;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.state-chronology h3{font-size:var(--text-body);line-height:1.3;margin:0 0 7px}
.state-event-list{list-style:none;margin:7px 0 0;padding:0;max-height:320px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.state-event-list>li{display:grid;grid-template-columns:112px minmax(0,1fr);gap:8px;align-items:baseline;padding:7px 7px 7px 9px;margin-bottom:5px;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:6px;font-size:var(--text-note);line-height:1.35}
.state-event-list time{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.state-event-list span{min-width:0;overflow-wrap:anywhere}
.state-event-list>li[data-level=error],.state-event-list>li[data-level=alarm],.state-event-list>li[data-level=critical]{border-left-color:var(--red);background:color-mix(in srgb,var(--red) 4%,var(--card))}
.state-event-list>li[data-level=warning]{border-left-color:var(--yellow);background:color-mix(in srgb,var(--yellow) 4%,var(--card))}
.state-event-list>li[data-level=change]{border-left-color:var(--orange);background:color-mix(in srgb,var(--orange) 4%,var(--card))}
@media(max-width:700px){.state-event-list>li{grid-template-columns:minmax(0,1fr);gap:3px}}

/* Hierarchical setpoints and explicit parameter-copy tools share the controller scale. */
#settings-groups{display:block;margin-bottom:12px}
#settings-groups button{min-height:32px;line-height:20px;white-space:normal;text-align:left;max-width:100%;overflow-wrap:anywhere}
.parameter-backup .backup-blocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.parameter-backup .backup-block{min-width:0;border:1px solid var(--line);border-radius:9px;padding:12px;background:var(--soft)}
.parameter-backup .backup-block h3{margin:0 0 10px;font-size:var(--text-body);line-height:1.3}
.parameter-backup .backup-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0}
.parameter-backup .backup-fields label{margin:0;min-width:0;font-size:var(--text-note);line-height:1.35}
.parameter-backup .backup-fields input{display:block;margin-top:5px;width:100%;min-width:0;max-width:100%;font-size:var(--text-note);padding:6px 8px;min-height:34px}
.parameter-backup input[type=file]{overflow:hidden}
.parameter-backup .backup-export-format{display:flex;align-items:center;gap:7px;font-size:var(--text-note);margin:0}
.parameter-backup .backup-export-format input{flex:0 0 16px;width:16px;height:16px;margin:0}
.parameter-backup .backup-block>.muted{font-size:var(--text-note);line-height:1.4;margin:6px 0 10px}
.parameter-backup .backup-block>.button{min-height:32px;padding:6px 9px;font-size:var(--text-note);margin:2px 5px 0 0}
.parameter-backup [data-backup-status]{font-size:var(--text-note);line-height:1.4;margin:10px 0;overflow-wrap:anywhere}
.parameter-backup .table-wrap{max-width:100%;min-width:0;margin-top:12px}
.equipment-backup-table{min-width:600px;table-layout:fixed}
.equipment-backup-table th:first-child{width:78px}
.equipment-backup-table th:nth-child(2){width:30%}
.equipment-backup-table th:last-child{width:22%}
.device-assignment-option{display:flex;align-items:flex-start;gap:7px;font-size:var(--text-note);line-height:1.35;margin:7px 0;max-width:320px;overflow-wrap:anywhere}
.device-assignment-option input[type=checkbox]{flex:0 0 16px;width:16px;height:16px;margin:2px 0 0}
@media(max-width:1000px){.parameter-backup .backup-blocks{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){.parameter-backup .backup-fields{grid-template-columns:minmax(0,1fr)}.parameter-backup .backup-block{padding:10px}}

/* Keep the two daily temperatures on one readable row per value tile. */
.weather-content>.weather-forecast-card .weather-daily-values>div{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 5px;padding:4px 6px}
.weather-content>.weather-forecast-card .weather-daily-values>div>span{white-space:nowrap}

/* Nested chart leaves keep the checkbox, colour, label and engineering unit aligned. */
.chart-metric-subgroup .chart-series{display:grid;grid-template-columns:16px 9px minmax(0,1fr) auto;align-items:center;gap:6px;min-width:0}
.chart-metric-subgroup .chart-series small{font-size:var(--text-note);color:var(--muted);white-space:nowrap}

/* Medium headers keep all seven forecast days in a shorter scroll region. */
@container(800px <= width < 1180px){.energy-weather .weather-week{max-height:160px}}

/* Secondary actions share the same geometry and neutral surface as tabs. */
.weather-widget .weather-location-choose{background:var(--control-bg);color:#fff;border-color:transparent;border-radius:8px;min-height:32px;padding:6px 9px}
.weather-widget .weather-location-choose:hover{background:var(--control-hover)}
input[type=file]::file-selector-button{font:inherit;line-height:1.25;border:1px solid transparent;border-radius:6px;padding:5px 8px;margin-right:8px;background:var(--control-bg);color:#fff;cursor:pointer}
input[type=file]::file-selector-button:hover{background:var(--control-hover)}
.device-card:has(.device-card-link:focus-visible){outline:2px solid var(--ink);outline-offset:2px}
.parameter-backup .backup-fields .password-field>input{padding-right:40px;min-height:36px}
.parameter-backup .password-toggle{width:30px;height:30px;right:3px;padding:5px}
.parameter-backup input[type=file]{height:36px;padding:2px}
.parameter-backup>.button{min-height:32px;padding:6px 9px;font-size:var(--text-note);line-height:20px}
button:disabled{cursor:not-allowed}
[aria-busy=true] button:disabled,button[aria-busy=true]:disabled{cursor:wait}
@media(max-width:700px){.device-card{padding-left:15px}}
/* Keep long status pills from squeezing the device title into a thin column. */
.device-card-head{grid-template-columns:34px minmax(0,1fr)}
.device-card-head .equipment-icon{grid-column:1;grid-row:1}
.device-card-head .device-card-identity{grid-column:1/-1;grid-row:2}
.device-card-head .device-card-actions{grid-column:2;grid-row:1;justify-self:end}
.compact-form input:not([type=checkbox]):not([type=radio]),.compact-form select,.compact-form .primary,.compact-form .button{height:36px;min-height:36px;font-size:var(--text-note);line-height:20px;padding:7px 10px;margin:0}

/* The compact event log uses the journal's rounded severity edge. */
.recent-events li,.events-heading .recent-events li{--event-color:var(--muted);border:1px solid var(--line);border-left:4px solid var(--event-color);border-radius:9px;background:color-mix(in srgb,var(--event-color) 6%,var(--card));padding:2px 7px;margin:0 0 4px;min-height:26px;height:26px;line-height:20px}
.recent-events li:last-child{margin-bottom:0}
.recent-events li[data-level=info],.recent-events li[data-level=success],.recent-events li[data-level=restored]{--event-color:var(--green)}
.recent-events li[data-level=warning]{--event-color:var(--yellow)}
.recent-events li[data-level=error],.recent-events li[data-level=alarm],.recent-events li[data-level=critical]{--event-color:var(--red)}
.recent-events li[data-level=change]{--event-color:var(--accent)}
.events-heading .recent-events li[data-level]{border-left:4px solid var(--event-color);padding-left:7px}
.events-heading .recent-events li time,.events-heading .recent-events li span{line-height:20px}
.events-heading .recent-events li span{color:var(--ink)}
.events-heading .recent-events ol,.events-heading .recent-events:has(#recent-events-status:not(:empty)) ol{height:116px;min-height:116px;max-height:116px}
@media(max-width:700px){
 .events-heading .recent-events li{height:44px;min-height:44px;padding-top:3px;padding-bottom:3px}
 .events-heading .recent-events li time,.events-heading .recent-events li span{line-height:18px}
 .events-heading .recent-events ol,.events-heading .recent-events:has(#recent-events-status:not(:empty)) ol{height:188px;min-height:188px;max-height:188px}
}

/* Keep three desktop slots, including short lists. Each row fits its own
   content so a long title cannot inflate every card on the page. */
.device-grid{grid-template-columns:minmax(0,1fr);align-items:stretch;grid-auto-rows:auto;gap:12px}
.device-grid>.device-card{display:flex;flex-direction:column;padding:11px 12px}
.device-card .device-card-head{grid-template-columns:28px minmax(0,1fr);gap:6px 8px;margin-bottom:6px}
.device-card .equipment-icon{width:28px;height:28px;flex-basis:28px}
.device-card .equipment-kind{margin-bottom:2px}
.device-card .device-system-id{margin-top:2px}
.device-card .card-connection{margin-bottom:6px}
.device-card .card-measurements{flex:1;align-content:start;min-width:0}
.device-card .card-measurements{gap:6px 10px}
.device-card .card-order-controls{margin-top:8px;flex-shrink:0}
.device-card .mini-metric{flex-wrap:wrap;gap:1px 6px;line-height:1.3}
.device-card .mini-metric>span{min-width:0;overflow-wrap:anywhere}
.device-card .mini-metric>strong{min-width:0;max-width:100%;font-size:var(--text-heading);line-height:1.25;font-variant-numeric:tabular-nums;white-space:normal;overflow-wrap:anywhere}
.device-card .card-power{gap:6px;margin-top:0;padding-top:6px}
.device-card .card-grid-input{margin-top:6px;padding-top:6px}
.device-card .grid-input-heading{margin-bottom:4px}
.device-card .grid-phase{min-width:0;grid-template-columns:auto minmax(0,1fr);column-gap:4px}
.device-card .grid-phase strong,.device-card .grid-phase small{min-width:0;white-space:normal;overflow-wrap:anywhere}
.device-card .grid-phase strong{font-size:var(--text-body);font-variant-numeric:tabular-nums}
.device-card .card-grid-input,.device-card .card-connection time{min-width:0;overflow-wrap:anywhere}
.device-card-actions .pill{flex:0 1 auto;min-width:0;white-space:normal;text-align:center;overflow-wrap:anywhere}
.device-card .card-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;margin-top:8px;flex-shrink:0;min-width:0}
.device-card .card-footer .card-order-controls{margin:0;flex:0 0 auto}
.device-card .card-footer .card-connection{margin:0 0 0 auto;min-width:0;flex:0 1 auto;justify-content:flex-end;text-align:right}
.device-card .card-footer time{max-width:100%;line-height:1.3}
@media(min-width:1000px) and (max-width:1279px){.device-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1280px){.device-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Consent text wraps beside its checkbox, keeping the whole label clickable. */
.auth-form .auth-checkbox{display:flex;align-items:flex-start;gap:9px;line-height:1.45;cursor:pointer}
.auth-form .auth-checkbox>input[type=checkbox]{flex:0 0 18px;width:18px;height:18px;margin:1px 0 0;padding:0}
.auth-form .auth-checkbox>span{min-width:0;overflow-wrap:anywhere}

.system-search{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin-bottom:12px}
.system-search>label{flex:1 1 240px;min-width:0;margin:0}
.system-search>label>input{margin-top:6px;min-width:0}
.system-search input[type=search]{height:42px;min-height:42px;line-height:20px}
.system-search>input[type=search]{flex:1 1 240px;min-width:0;width:auto}
.system-search .primary,.system-search .button-link,.system-pagination .button-link{display:inline-flex;align-items:center;justify-content:center;min-height:42px;margin:0;padding:10px 16px;border:1px solid transparent;border-radius:8px;font-size:var(--text-body);font-weight:650;line-height:20px;white-space:normal;overflow-wrap:anywhere;text-align:center}
.system-pagination{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:18px 0}
.system-pagination .button-link{background:var(--control-bg);color:#fff}
.system-pagination .button-link:hover{background:var(--control-hover)}
.system-results-note{margin:0 0 12px;color:var(--muted);font-size:var(--text-note);overflow-wrap:anywhere}
@media(max-width:700px){.system-search>label,.system-search>input[type=search]{flex-basis:100%}.system-search .primary,.system-search .button-link{flex:1 1 auto}}
