:root{color-scheme:light;--bg:#edf0f2;--panel:#fff;--raised:#f3f5f6;--ink:#24313a;--muted:#667780;--line:#c6cfd4;--accent:#007f9c;--active:#cceff5;--stripe:#f0f3f5;--missing:#fff0ef;--warn:#a33e32;--shadow:0 3px 12px #0000000a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.4 Arial,Segoe UI,sans-serif}body.dark{color-scheme:dark;--bg:#292c2f;--panel:#34383b;--raised:#2b2f32;--ink:#edf0f2;--muted:#abb6bc;--line:#555e64;--accent:#55d0e8;--active:#14677a;--stripe:#3b4044;--missing:#642b2b;--warn:#ffb4aa;--shadow:0 5px 16px #00000020}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,.button{font:inherit}button,.button,select{border:1px solid var(--line);border-radius:3px;background:var(--raised);color:var(--ink);padding:6px 10px;cursor:pointer}button:hover,.button:hover{border-color:var(--accent);text-decoration:none}button.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}body.dark button.primary{background:#239bb7;color:#fff}button:disabled{opacity:.45;cursor:default}input{width:100%;border:1px solid var(--line);border-radius:3px;padding:6px 8px;background:var(--raised);color:var(--ink)}label{display:block;margin-bottom:4px;font-size:12px;font-weight:500}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.topbar{min-height:42px;padding:5px 12px;display:flex;align-items:center;gap:12px;background:var(--raised);border-bottom:1px solid var(--line)}.brand{font-size:18px;font-weight:700;letter-spacing:-.6px;color:var(--ink);flex-shrink:0}.brand span{color:var(--accent)}.userbadge{color:var(--muted);font-size:12px;max-width:135px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mainnav{display:flex;gap:3px;min-width:0;align-items:center}.mainnav button{padding:5px 16px;white-space:nowrap;font-weight:600}.mainnav .active,.subnav .active{background:var(--active);color:var(--ink);border-color:var(--accent)}.preferences{display:flex;gap:5px;margin-left:auto;flex-shrink:0;align-items:center}.preferences select{width:53px;height:28px;font-size:11px;padding:3px 5px}.preferences button{width:29px;height:28px;padding:0;font-size:20px;line-height:1}.testbar{font-size:10px;padding:3px 12px;color:var(--muted);border-bottom:1px solid var(--line)}main{width:100%;padding:12px;min-height:calc(100vh - 88px)}.card{background:var(--panel);border:1px solid var(--line);border-radius:5px;box-shadow:var(--shadow)}h1{font-size:16px;margin:0;line-height:1.4;overflow-wrap:anywhere}h2{font-size:14px;margin:0}.badge{font-size:11px;color:var(--muted);padding:1px 5px}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:18px;align-items:start;min-width:0}.objects{padding:8px;position:sticky;top:12px}.asidehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.objects input{font-size:12px}.objects nav{max-height:calc(100vh - 180px);overflow:auto;margin-top:8px}.object{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0;padding:6px 8px;line-height:1.3;background:var(--panel)}.object:nth-child(even){background:var(--stripe)}.object small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.object.active{background:var(--active);box-shadow:inset 3px 0 var(--accent)}.reports{min-width:0}.reporthead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:5px 5px 0 0}#objectmeta{font-size:12px;color:var(--muted);margin:3px 0 0}.subnav{display:flex;gap:3px;align-items:center;overflow:auto;padding:7px 0;margin-bottom:10px}.subnav button{white-space:nowrap;padding:5px 20px}.reports>.subnav{padding:7px 12px;background:var(--panel);border:1px solid var(--line);border-top:0;border-radius:0 0 5px 5px}.period,.monthly-period,.hourly-period{display:flex;align-items:end;flex-wrap:wrap;gap:10px}.period{padding:9px 10px}.period input{min-width:140px}.exports{display:flex;gap:7px;align-items:center;margin-left:auto}.button{display:inline-block;white-space:nowrap}.reportstatus{font-size:11px;color:var(--muted);padding:7px 1px;margin:0}.tablecard{overflow:auto;max-width:100%;max-height:calc(100vh - 275px);min-height:140px;overscroll-behavior:contain}table{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}th,td{padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:right;font-size:12px}th{background:var(--raised);position:sticky;top:0;z-index:2;white-space:normal;min-width:105px;font-weight:600}tbody tr:nth-child(even) td{background:var(--stripe)}th:first-child,td:first-child{position:sticky;left:0;background:var(--panel);text-align:left;z-index:1}tbody tr:nth-child(even) td:first-child{background:var(--stripe)}th:first-child{background:var(--raised);z-index:3}th small{display:block;font-weight:400;color:var(--muted);margin-top:2px}tbody tr:hover td{background:var(--active)}td.missing{background:var(--missing)!important;color:var(--warn)}.empty{text-align:center;margin:60px 15px;color:var(--muted)}details{margin-top:10px;padding:10px}summary{cursor:pointer;font-weight:600}.sourcehint{font-size:11px;color:var(--muted);margin:6px 0 10px;line-height:1.45}pre{white-space:pre;overflow:auto;font-size:11px;max-height:350px}#message{color:var(--warn);font-size:12px;margin:8px 0}#message:empty{display:none}footer{display:flex;justify-content:space-between;gap:12px;padding:6px 12px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}.sectionworkspace,.object-pane,.summary-pane{min-width:0}.sectionworkspace>.subnav{padding-top:0}.pending{padding:18px;color:var(--muted)}.pending h2{color:var(--ink)}
.login{width:365px;max-width:100%;margin:clamp(70px,16vh,170px) auto 0;padding:10px}.login form{display:flex;align-items:center;gap:10px}.loginfields{flex:1;min-width:0;display:grid;gap:8px}.loginrow{display:flex;align-items:center;background:var(--raised);border:1px solid var(--line);border-radius:3px;overflow:hidden}.loginrow span{width:35px;text-align:center;font-size:19px;color:var(--muted);border-right:1px solid var(--line)}.loginrow input{border:0;background:transparent;padding:10px 8px;min-width:0}.loginbutton{width:46px;height:46px;flex-shrink:0;border-radius:50%;font-size:29px;padding:0;box-shadow:0 0 0 4px var(--raised)}
.monthly-panel,.hourly-panel,.emergency-panel,.admin-panel{padding:12px;margin:0;min-width:0;max-width:100%}.monthly-period{margin-top:9px}.monthly-period input[type=month]{min-width:155px}.monthly-toggle{display:flex;gap:6px;align-items:center;margin:0 0 6px;font-weight:400}.monthly-toggle input{width:15px}.monthly-table th{min-width:70px}.monthly-table th:first-child,.monthly-table td:first-child{min-width:225px;max-width:300px;white-space:normal;overflow-wrap:anywhere}.monthly-table tfoot td,.monthly-table tfoot th{font-weight:700;background:var(--raised);position:static}.monthly-table tfoot th:first-child{position:sticky;left:0}.summary-pane .tablecard{max-height:calc(100vh - 260px)}.hourly-period>div{min-width:0;flex:1}.hourly-period select{width:100%;max-width:100%}.hourly-period>div:first-child,.emergency-period>div:first-child{display:none}.hourly-list{display:flex;gap:5px;overflow:auto;margin:8px 0;max-height:120px;flex-wrap:wrap}.hourly-list button{font-size:11px}.hourly-list button[aria-pressed=true]{background:var(--active);border-color:var(--accent)}.hourly-table{margin-top:10px}.hourly-table th:first-child,.hourly-table td:first-child{min-width:145px}.hourly-panel .exports{margin-left:0}.emergency-period{display:grid;grid-template-columns:minmax(80px,.5fr) minmax(140px,1fr) minmax(140px,1fr) auto;gap:10px;align-items:end}.emergency-period>div{min-width:0}.emergency-period select,.emergency-period input{width:100%;min-width:0}.emergency-table{margin-top:10px}.emergency-table td:nth-last-child(2){white-space:normal;min-width:180px}.emergency-source{margin-top:10px;padding:10px}.admin-notice{color:var(--accent);background:var(--raised);padding:8px;border-radius:3px}.admin-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:15px}.admin-form fieldset{border:1px solid var(--line);border-radius:3px;min-width:0;padding:10px}.admin-form legend{font-weight:600}.admin-target{display:flex;gap:8px;align-items:start;overflow-wrap:anywhere;margin:8px 0}.admin-target input{width:16px;flex-shrink:0;margin-top:2px}.admin-fields{display:flex;flex-direction:column;gap:8px}.admin-fields select{display:block;width:100%;margin-top:4px}.admin-fields input{margin-top:4px}.admin-table{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:3px}.admin-table td{text-align:left;vertical-align:top;white-space:normal;min-width:150px}.admin-table pre{white-space:pre-wrap;overflow-wrap:anywhere;min-width:200px;margin:0;max-height:260px}.admin-record{margin-top:12px}.admin-record>p{font-size:11px;overflow-wrap:anywhere;color:var(--muted)}.admin-message{color:var(--warn)}
@media(min-width:1500px){.workspace{grid-template-columns:320px minmax(0,1fr);gap:30px}}@media(max-width:850px){.topbar{flex-wrap:wrap;gap:7px}.preferences{order:2}.userbadge{order:1}.mainnav{order:3;flex-basis:100%;overflow:auto}.mainnav button{padding:5px 12px}.workspace{grid-template-columns:210px minmax(0,1fr);gap:10px}.subnav button{padding:5px 12px}.emergency-period{grid-template-columns:1fr 1fr}.tablecard{max-height:65vh}.summary-pane .tablecard{max-height:65vh}}@media(max-width:600px){main{padding:8px}.workspace{grid-template-columns:minmax(0,1fr);gap:10px}.objects{position:static;padding:7px}.objects nav{max-height:125px}.object{padding:5px 7px}.object small{display:none}.asidehead{margin-bottom:5px}.reports>.subnav{padding:6px 7px}.period{gap:7px;padding:8px}.period>div:not(.exports){flex:1;min-width:0}.period input{min-width:0}.period .exports{margin-left:0}.period button{align-self:end}.reporthead{padding:8px}h1{font-size:14px}.monthly-panel,.hourly-panel,.emergency-panel,.admin-panel{padding:9px}.monthly-period{gap:8px}.monthly-toggle{flex-basis:100%}.monthly-period .exports{margin-left:0}.monthly-table th:first-child,.monthly-table td:first-child{min-width:150px;max-width:150px}.hourly-period input{min-width:0}.hourly-list{flex-wrap:nowrap}.hourly-list button{flex-shrink:0}.emergency-period{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.emergency-period button{grid-column:1/-1}.admin-form{grid-template-columns:1fr}.login{width:340px;margin-top:18vh}.tablecard{max-height:60vh}.summary-pane .tablecard{max-height:60vh}footer{padding:6px 8px;font-size:9px}}
.ident-panel{padding:12px}.ident-choice{max-width:500px;margin:12px 0}.ident-choice select{width:100%}.ident-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:850px;align-items:end}.ident-form>div{min-width:0}.ident-form select{width:100%}.ident-form button{justify-self:start}.ident-table{max-width:650px;min-height:0;margin-top:12px}.ident-table td,.ident-table th{text-align:left}.ident-table th:first-child{min-width:60px}@media(max-width:600px){.ident-form{grid-template-columns:minmax(0,1fr)}}
body{min-height:100vh;display:flex;flex-direction:column}.topbar,.testbar,footer{flex-shrink:0}main{flex:1;min-height:0}@media(min-width:851px){.object-pane>.tablecard{max-height:calc(100vh - 330px)}}

.hourly-summary-panel{padding:12px;min-width:0}.volume-basis{display:block;font-size:10px;color:var(--muted);margin-top:2px}.hourly-summary-panel .monthly-period{margin-top:9px}.hourly-summary-panel input[type=date]{min-width:150px}@media(max-width:600px){.hourly-summary-panel{padding:9px}}

.gas-summary-table table{min-width:880px}.gas-summary-table td:first-child{min-width:200px}.gas-change{min-width:210px;text-align:left}.gas-event{padding:4px 0}.gas-event+.gas-event{border-top:1px solid var(--line)}.gas-event strong,.gas-event small{display:block}.gas-event small{font-size:10px}.gas-event strong{font-size:12px}#gashistorypanel details{margin-top:12px}#gashistorypanel summary{cursor:pointer;margin-bottom:8px}

.admin-message.success{color:var(--accent)}

.login-confirm h2{font-size:15px;margin:4px 0 10px}.login-confirm form{display:grid;gap:8px}.login-confirm input{width:100%;letter-spacing:4px}.login-confirm-buttons{display:flex;justify-content:space-between;gap:8px;margin-top:10px}.login-confirm .sourcehint{margin:6px 0 12px;line-height:1.45}

.configuration-panel{padding:12px}.configuration-selection{display:grid;gap:6px;margin:10px 0}.configuration-selection select{width:100%;max-width:100%}.configuration-table{width:100%;min-width:0}.configuration-raw{min-width:620px}.configuration-table td:first-child{width:55%;text-align:left}.configuration-table td{white-space:normal;overflow-wrap:anywhere}.configuration-text{font-size:12px;line-height:1.4;white-space:pre;overflow:auto;max-height:65vh;background:var(--raised);padding:10px}.configuration-panel details{margin-top:10px}.reports>.subnav{overflow:auto}.reports>.subnav button{flex-shrink:0}

.interventions-panel{padding:12px;min-width:0}.interventions-period{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-top:10px}.interventions-period>div{flex:1;min-width:130px}.interventions-period input,.interventions-period select{width:100%;min-width:0}.interventions-table{margin:10px 0}.interventions-table td{vertical-align:top}.interventions-table td:first-child{min-width:175px}.interventions-table td small{display:block;margin:3px 0 0;white-space:normal}.interventions-table td:nth-child(2){white-space:normal;min-width:240px;text-align:left;overflow-wrap:anywhere}.intervention-hidden td{box-shadow:inset 0 -1px var(--warn)}.interventions-toggle{display:flex;gap:7px;align-items:center;font-weight:400}.interventions-toggle input{width:15px;flex-shrink:0}.interventions-panel .empty{margin:25px 10px}.interventions-panel details .tablecard{max-height:45vh}@media(max-width:600px){.interventions-panel{padding:9px}.interventions-period{gap:8px}.interventions-period>div{min-width:0;flex-basis:calc(50% - 8px)}.interventions-period button{min-width:85px}.interventions-table td:nth-child(2){min-width:210px}}
.ident-form .exports{grid-column:1/-1;margin-left:0;flex-wrap:wrap}

/* The familiar three windows: object list, information/controls, report data. */
.workspace{grid-template-columns:clamp(260px,24vw,430px) minmax(0,1fr);gap:22px;align-items:stretch;height:calc(100dvh - 111px);min-height:360px}
.objects{position:static;display:flex;flex-direction:column;min-height:0;padding:10px}
.objects nav{flex:1;min-height:0;max-height:none;border:1px solid var(--line);margin-top:8px}
.object{padding:4px 8px;font-size:13px;line-height:1.35}.object small{display:none}
.reports{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:22px;min-height:0}
.object-top{min-width:0;padding:12px;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:10px 18px;align-items:start}
.object-info{margin:0;min-width:0}.object-info>div{display:grid;grid-template-columns:170px minmax(0,1fr);gap:8px;margin:3px 0}
.object-info dt{color:var(--muted);font-size:12px}.object-info dd{margin:0;font-size:13px;font-weight:600;overflow-wrap:anywhere}.object-info h1{font-size:13px}
.object-controls{grid-column:2;grid-row:1/3;min-width:0;container-type:inline-size}
.object-top>.subnav{grid-column:1;align-self:end;margin:0;padding:0;overflow:auto;gap:3px}
.object-top>.subnav button{flex:1;flex-shrink:0;padding:6px 9px;font-size:12px;font-weight:600}
.object-controls .period,.object-controls .hourly-period,.object-controls .emergency-period,.object-controls .interventions-period{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0;padding:0;align-items:end}
.object-controls form>div{min-width:0;flex:none}.object-controls form>div:first-child{display:block}.object-controls .hourly-period>div:first-child,.object-controls .emergency-period>div:first-child{display:none}
.object-controls input,.object-controls select{width:100%;min-width:0;font-size:11px;padding:3px 4px;height:25px}
.object-controls label{font-size:11px;margin:0 0 3px}.object-controls form>button{grid-column:1/-1;justify-self:end;font-size:11px;padding:4px 14px}
.object-controls .configuration-selection{margin:0}.object-controls .hourly-list{margin:5px 0 0;max-height:60px}.object-controls .hourly-list button{padding:3px 5px}
.object-data{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;padding:12px}
.object-data .object-pane{min-height:100%}.object-data .object-pane>.card,.object-data .object-pane>section.card{border:0;box-shadow:none;padding:0;background:transparent}
.object-data .tablecard,.object-data .object-pane>.tablecard{max-height:none;min-height:0;overflow:auto;border:1px solid var(--line);box-shadow:none}
.object-data h2{font-size:13px;text-align:center}.data-toolbar{display:flex;align-items:center;gap:12px;position:relative;margin-bottom:7px}.data-toolbar h2{flex:1}.data-toolbar .exports{margin-left:0}
.object-data .exports{justify-content:flex-end;margin:5px 0 8px}.object-data .exports .button,.object-data .exports .export{font-size:11px;padding:3px 8px}.object-data .reportstatus{padding:2px 0 7px}
.object-data .sourcehint{margin:6px 0;font-size:11px}.object-data th,.object-data td{padding:4px 7px}.object-data .ident-form .exports{justify-content:flex-start}.object-data .ident-panel h2{text-align:left}
.period-calendar{margin-top:4px;border:1px solid var(--line);border-radius:3px;padding:3px;background:var(--raised)}
.calendar-head{display:flex;align-items:center;gap:1px}.calendar-head button{font-size:12px;width:17px;min-width:17px;height:19px;padding:0;border:0;background:transparent}.calendar-month{flex:1;text-align:center;white-space:nowrap;font-size:10px;font-weight:600}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.calendar-grid>span{height:17px;font-size:9px;line-height:17px;color:var(--muted)}
.calendar-grid button{font-size:10px;border:0;border-radius:2px;padding:0;height:17px;background:transparent}.calendar-grid button.in-range{background:var(--active)}.calendar-grid button.selected{background:var(--accent);color:var(--panel);font-weight:700}.calendar-grid button:hover{outline:1px solid var(--accent)}
/* Date fields are retained for submission and the compact native-calendar fallback. */
.object-controls form>div.has-period-calendar>input[type=date]{display:none}
@container(max-width:319px){.period-calendar{display:none}.object-controls form>div.has-period-calendar>input[type=date]{display:block}.object-controls input[type=date]{height:32px;font-size:12px}}
@media(min-width:851px){body.objects-open{height:100dvh;overflow:hidden}body.objects-open main{min-height:0}.workspace .objects{overflow:hidden}}
@media(max-width:1100px) and (min-width:601px){.workspace{grid-template-columns:230px minmax(0,1fr);gap:12px}.reports{gap:14px}.object-top{grid-template-columns:minmax(0,1fr);gap:10px}.object-controls{grid-column:1;grid-row:auto;max-width:360px}.object-top>.subnav{grid-column:1;grid-row:2}.object-info>div{grid-template-columns:160px minmax(0,1fr)}}
@media(max-width:600px){.workspace{height:auto;min-height:0;grid-template-columns:minmax(0,1fr);gap:10px}.objects{padding:7px}.objects nav{flex:none;max-height:125px}.reports{display:grid;grid-template-rows:auto auto;gap:12px}.object-top{padding:9px;grid-template-columns:minmax(0,1fr);gap:10px}.object-info>div{grid-template-columns:145px minmax(0,1fr)}.object-controls{grid-column:1;grid-row:auto}.object-top>.subnav{grid-column:1;grid-row:2}.object-top>.subnav button{flex:none;padding:5px 9px}.object-data{padding:9px;min-height:220px;overflow:visible}.object-data .object-pane{min-height:0}.object-data .tablecard{max-height:60vh}.calendar-month{font-size:10px}.calendar-grid button,.calendar-grid>span{height:20px;line-height:20px}.object-data .data-toolbar{flex-wrap:wrap}.data-toolbar h2{flex-basis:100%}.data-toolbar .exports{margin-left:auto}}

/* Keep the object report selector across the whole top panel. */
.object-top>.subnav{grid-column:1/-1;grid-row:2}
.object-controls{grid-row:1}
/* The hidden object selector must not shift the two date calendars. */
.object-controls .emergency-period>div.has-emergency-from{grid-column:1;grid-row:1}
.object-controls .emergency-period>div.has-emergency-to{grid-column:2;grid-row:1}
.object-controls .emergency-period>div.has-emergency-channel{grid-column:1;grid-row:2}
.object-controls .emergency-period>button{grid-column:2;grid-row:2;max-width:100%}
@media(max-width:600px){.object-top>.subnav{grid-row:2}.object-controls{grid-row:3}}

@media(max-width:1100px) and (min-width:601px){.object-controls{grid-row:3;max-width:300px}}

.report-placeholder-note{margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-radius:6px;font-size:12px;color:var(--muted)}
[data-report-placeholder]:disabled{cursor:default;opacity:.6}
[data-report-placeholder="xlsx"]:not(:disabled){cursor:pointer;opacity:1}

/* The original multi-row table header moves as one block above scrolling data. */
.legacy-caption{text-align:center;font-weight:600;color:var(--muted);margin:0 0 7px}.legacy-caption table,.legacy-caption td{position:static;background:transparent;border:0;text-align:center}.legacy-caption p{margin:3px 0}.legacy-caption td:empty{display:none}
.legacy-tables{min-width:0}.legacy-tables>div{min-width:0}.legacy-table-scroll{overflow:auto;max-height:55vh;border:1px solid var(--line);margin:8px 0;overscroll-behavior:contain}.legacy-table-scroll table{width:100%;border-collapse:separate;border-spacing:0}.legacy-table-scroll thead{position:sticky;top:0;z-index:4;background:var(--raised)}.legacy-table-scroll th{position:static;background:var(--raised);text-align:center;min-width:0;font-weight:600}.legacy-table-scroll td{text-align:center;position:static}.legacy-table-scroll .sfoot,.legacy-table-scroll .snum{font-weight:600;background:var(--raised)}.legacy-table-scroll .sfoot{text-align:center}.legacy-tables h1{font-size:13px;text-align:center}.legacy-caption th{position:static}

.configuration-lines td.inst0{position:static;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;font-family:Consolas,"Courier New",monospace;font-size:12px}

/* Original data.php dimensions, with theme colours and the retained sticky header. */
.object-data .legacy-tables td,.object-data .legacy-tables th{padding:1px 1px;line-height:1.4}
.object-data .legacy-tables td{font-size:9pt;border-bottom:1px solid var(--line)}
.object-data .legacy-tables th{font-size:13px;font-weight:700;border:1px solid var(--line)}
.object-data .legacy-tables td.num,.object-data .legacy-tables td.foot{text-align:center}
.object-data .legacy-tables td.lstr{text-align:left}
.object-data .legacy-tables td.snum,.object-data .legacy-tables td.sfoot{font-size:9pt;font-weight:700;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.object-data .legacy-tables td.inst0,.object-data .legacy-tables td.inst1{font-size:11pt;font-weight:700;text-align:left;white-space:normal;overflow-wrap:anywhere}
.object-data .legacy-tables td.inst0.next-inst1{width:75%;border-right:1px solid var(--line)}
.object-data .legacy-tables td.inst1{width:25%}
.object-data .configuration-lines td.inst0{font-family:Arial,Segoe UI,sans-serif;font-size:11pt;font-weight:700;text-align:left;white-space:pre-wrap;padding:1px 1px;line-height:1.4}
.legacy-heading{position:relative;min-height:55px;margin:0 0 7px}.legacy-heading .legacy-caption{margin:0;font-size:14px;line-height:1.4;font-weight:700}.legacy-heading .legacy-caption td{font-size:14px;font-weight:700;padding:0;line-height:1.4}.legacy-heading .legacy-caption p{margin:0}
.object-data .legacy-heading>.exports{position:absolute;right:8%;top:12px;margin:0;gap:5px;flex-wrap:wrap;max-width:155px}.object-data .legacy-heading>.exports .button{font-size:11px;padding:1px 5px}
.legacy-table-scroll{max-height:65vh;margin:0}.legacy-table-scroll thead{position:sticky;top:0}.legacy-tables .demoTbl{border-spacing:0}.legacy-heading .legacy-caption table{width:100%}
@media(max-width:600px){.legacy-heading{padding-right:0}.object-data .legacy-heading>.exports{position:static;justify-content:flex-end;max-width:none;margin-top:4px}.legacy-table-scroll{max-height:60vh}.object-data .legacy-tables td.inst0.next-inst1{width:70%}.object-data .legacy-tables td.inst1{width:30%}}

.object-data .legacy-heading .legacy-caption h2{font-size:14px;font-weight:700;margin:0;line-height:1.4}
@media(min-width:601px) and (max-width:1100px){.legacy-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.object-data .legacy-heading>.exports{position:static;max-width:100px;align-self:center;justify-content:flex-end}.legacy-heading .legacy-caption td{white-space:normal}}

/* Match the plain configuration rows of the other device families. */
.object-data .configuration-lines tbody tr td,
.object-data .configuration-lines tbody tr:nth-child(even) td,
.object-data .configuration-lines tbody tr:hover td,
.object-data .configuration-lines tbody tr:nth-child(even) td:first-child{background:var(--panel)}

/* Allocate the actual remaining viewport height, with one data scroller per pane. */
@media(min-width:601px){
 body.objects-open{height:100dvh;min-height:0;overflow:hidden}
 body.objects-open main{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
 body.objects-open .workspace{flex:1;height:auto;min-height:0}
 .reports{min-height:0;overflow:hidden}
 .object-data{display:flex;flex-direction:column;min-height:0;overflow:hidden}
 .object-data>.report-placeholder-note{flex:none}
 .object-data>.object-pane:not([hidden]){flex:1;min-height:0;overflow:auto}
 .object-data>.object-pane.has-legacy-tables:not([hidden]){display:flex;flex-direction:column;overflow:hidden}
 .object-data .legacy-heading{flex:none}
 .object-data .legacy-tables{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
 .object-data .legacy-table-scroll{max-height:none;overflow:visible}
 .object-data .legacy-table-scroll thead{position:sticky;top:0;z-index:4}
 .object-data #object-configuration.has-configuration-lines{display:flex;flex-direction:column;overflow:hidden}
 .object-data #object-configuration.has-configuration-lines>.configuration-panel{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
 .object-data .configuration-panel.has-configuration-lines>.tablecard{flex:1;min-height:0;max-height:none;overflow:auto}
}
@media(max-width:600px){
 .object-data .legacy-tables,.object-data .legacy-table-scroll{max-height:none;overflow:visible}
 .object-data .object-pane{min-height:0}
 .object-data .tablecard.has-configuration-lines{max-height:none;overflow:visible}
}

/* Main menu: original 30.2px button height reduced by exactly 15%. */
.topbar .mainnav button{height:25.67px;width:144px;min-width:144px;flex:0 0 144px;padding:0 10px;line-height:1.4}
.userbadge{position:relative;display:inline-block;padding-left:21px;vertical-align:middle}
.userbadge:empty{display:none}


/* Decorative user silhouette without image URLs (compatible with img-src self). */
.userbadge::before,.userbadge::after{content:"";position:absolute;background:#44c7df;pointer-events:none}
.userbadge::before{left:4.5px;top:calc(50% - 8px);width:7px;height:7px;border-radius:50%}
.userbadge::after{left:0;top:50%;width:16px;height:8px;border-radius:5px 5px 1px 1px}

/* Export buttons share a left edge within the existing report heading. */
.object-data .legacy-heading>.exports{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}

/* PDF uses the existing lower data pane; original report forms are unchanged. */
.object-data[data-pdf-open]>.object-pane,.object-data[data-pdf-open]>.report-placeholder-note{display:none!important}
.inline-pdf-viewer:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.inline-pdf-toolbar{display:flex;flex:none;align-items:center;gap:8px;padding:0 0 8px;flex-wrap:wrap}
.inline-pdf-toolbar .button{font-size:12px;padding:3px 10px}
.inline-pdf-frame{display:block;width:100%;flex:1;min-height:0;border:0;background:var(--panel)}
@media(max-width:600px){.inline-pdf-viewer:not([hidden]){height:70vh;min-height:220px}}

/* Compact archive period selector: year/month/day arrows, then Apply. */
.period-navigation{align-items:center;gap:6px}.period-stepper{display:inline-flex;align-items:center;gap:2px;padding:4px;border:1px solid var(--line);border-radius:5px;background:var(--raised);flex:none}.period-stepper button{min-width:22px;height:24px;padding:0 4px;font-weight:600;line-height:1}.period-stepper .period-stepper-value{width:96px;min-width:0;height:24px;padding:2px 3px;text-align:center;font-weight:600;font-size:12px;border:0;background:transparent}.period-stepper input[type=month],.period-stepper input[type=date]{display:none}.period-navigation>button.primary{height:25px;padding:0 9px}.period-navigation .monthly-toggle{flex-basis:auto}

/* Summary tables use the viewport remainder instead of a second page scrollbar. */
body.summary-open{height:100dvh;min-height:0;overflow:hidden}
body.summary-open main{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}
#summaryworkspace:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;max-width:100%;overflow:hidden}
#summaryworkspace>.subnav{flex:none}
#summaryworkspace>.summary-pane:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}
#summaryworkspace .monthly-panel,#summaryworkspace .hourly-summary-panel{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;max-width:100%;overflow:hidden}
#summaryworkspace .monthly-panel>*,#summaryworkspace .hourly-summary-panel>*{flex-shrink:0}
#summaryworkspace .tablecard{flex:1;min-height:0;min-width:0;max-height:none;max-width:100%;overflow:auto;overscroll-behavior:contain}
/* Gas history can expand; keep its entire data section within the same bounded panel. */
#summary-gas .hourly-summary-panel{overflow:auto}
#summary-gas .tablecard{flex:0 0 auto}

/* Period controls sit in their own panel beside the summary tabs. */
.summary-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;flex:none;margin-bottom:10px;min-width:0}
.summary-toolbar>.subnav{padding:0;margin:0;flex:none;max-width:100%}
.summary-controls{padding:4px 6px;max-width:100%;min-width:0}
.summary-controls>[data-summary-control]{display:block}
.summary-controls>[data-summary-control][hidden]{display:none}
.summary-controls .monthly-period{margin:0;gap:6px;align-items:center}
.summary-controls .period-stepper{border:0;padding:0;background:transparent}
#summaryworkspace .monthly-panel>.exports{align-self:flex-end;flex:none;margin-bottom:4px}

/* Compact daily summary heading and export. */
#monthlypanel{padding:8px 10px}
#monthlypanel>.summary-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
#monthlypanel .summary-heading h2{margin:0}
#monthlypanel .summary-heading .exports{margin:0;flex:none}
#monthlypanel>.reportstatus{margin:6px 0;padding:0 1px}

#hourlysummarypanel{padding:8px 10px}
#hourlysummarypanel>.summary-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;margin-bottom:6px}
#hourlysummarypanel .summary-heading h2{margin:0}
#hourlysummarypanel .summary-heading .exportlink{width:auto;display:inline-block;margin:0;flex:none}
#hourlysummarypanel>.reportstatus{margin:6px 0;padding:0 1px}

#hourlysummarypanel thead th{white-space:nowrap}

/* Summary rows: 25.02px -> 23.769px (-5%); text size remains unchanged. */
#summaryworkspace table th,#summaryworkspace table td{padding-top:3.8245px;padding-bottom:3.8245px;line-height:1.26}

/* Object tabs beside the calendars, as in the original cabinet. */
.object-top>.subnav button{flex:0 1 140px;min-width:100px;max-width:140px;padding:5px 8px}
@media(min-width:1101px){
 .object-top{gap:6px 12px;padding:10px 12px}
 .object-top>.subnav{grid-column:1;grid-row:2;align-self:end;width:100%;max-width:712px}
 .object-controls{grid-column:2;grid-row:1/3}
}

.ident-form{align-items:start}

/* BEGINDATE: calendar applies only after confirmation. */
.ident-date-field{position:relative}.ident-date-field input{padding-right:38px;cursor:pointer}.ident-date-field .ident-date-open{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:0;background:transparent;width:30px;height:26px;padding:0;color:inherit;font-size:20px}
.ident-date-dialog{box-sizing:border-box;width:330px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;padding:12px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);box-shadow:0 8px 24px #0006}.ident-date-dialog::backdrop{background:#0002}
.ident-date-month{display:grid;grid-template-columns:28px 1fr 70px 28px;gap:5px;align-items:center}.ident-date-month input,.ident-date-month select{width:100%;min-width:0;box-sizing:border-box}.ident-date-dialog button{cursor:pointer}.ident-date-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin:12px 0}.ident-date-days button{padding:4px 0;border:1px solid transparent;background:transparent;color:inherit}.ident-date-days button:hover{border-color:#55c4de}.ident-date-days button.selected{background:#176c7d;border-color:#55c4de}.ident-date-days button:disabled{opacity:.35;cursor:default}.ident-weekday{text-align:center;font-size:11px;color:inherit;opacity:.7}
.ident-date-time{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ident-date-time label{font-size:11px}.ident-date-time input{display:block;width:100%;box-sizing:border-box;margin-top:4px}.ident-date-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.ident-date-error:empty{display:none}.ident-date-error{font-size:12px;color:#ffb2a8;margin:8px 0}

/* Gas summary: one line per change, matching the original intervention table. */
#gashistorypanel{padding:8px 10px}
#gashistorypanel>.summary-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;min-width:0}
#gashistorypanel .summary-heading h2{margin:0}
#gashistorypanel .summary-heading .exportlink{display:inline-block;width:auto;margin:0;flex:none}
#gashistorypanel .gas-summary-table table{table-layout:fixed;min-width:1160px}
#gashistorypanel .gas-summary-table th:first-child,#gashistorypanel .gas-summary-table td:first-child{width:230px;min-width:230px}
#gashistorypanel .gas-summary-table td:first-child{font-weight:600}
#gashistorypanel .gas-change{min-width:0}
/* Each parameter has independent time, value and description table columns. */
#gashistorypanel .gas-summary-table table{width:1250px;min-width:1250px;table-layout:fixed}
#gashistorypanel .gas-summary-table th{min-width:0}
#gashistorypanel .gas-summary-table col.gas-object-col{width:230px}
#gashistorypanel .gas-summary-table col.gas-time-col{width:60px}
#gashistorypanel .gas-summary-table col.gas-value-col{width:55px}
#gashistorypanel .gas-summary-table col.gas-description-col{width:225px}
#gashistorypanel .gas-summary-table tbody td{padding-top:2.3px;padding-bottom:2.3px;line-height:1.2}
#gashistorypanel .gas-summary-table .gas-time-cell,#gashistorypanel .gas-summary-table .gas-value-cell,#gashistorypanel .gas-summary-table .gas-description-cell{font-size:10px;vertical-align:top;padding-left:5px;padding-right:5px}
#gashistorypanel .gas-time-cell,#gashistorypanel .gas-value-cell{text-align:left}
#gashistorypanel .gas-description-cell{text-align:right}
#gashistorypanel .gas-cell-event{white-space:nowrap;line-height:inherit;min-height:1.2em}
#gashistorypanel .gas-cell-event+.gas-cell-event{margin-top:6px}

/* Keep object labels on one line and align all three values. */
.object-info{display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:8px;row-gap:3px}
.object-info>div{display:contents}
.object-info dt{white-space:nowrap}
