:root{color-scheme:dark;--bg:#061e27;--panel:#0b3440;--panel2:#104653;--line:#246675;--text:#ecfbfc;--muted:#9bbcc2;--ok:#65e09a;--danger:#ff6666;--warn:#ffd166;font-family:Inter,"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:linear-gradient(180deg,#0d4653,var(--bg) 42%);color:var(--text)}button,input,select{font:inherit}.shell{min-height:100vh}.header{position:sticky;top:0;z-index:20;background:#062832f2;border-bottom:1px solid var(--line)}.header-inner,.content{width:min(980px,100%);margin:auto}.header-inner{height:68px;display:flex;align-items:center;gap:10px;padding:8px 12px}.brand{display:flex;align-items:center;gap:8px;font-size:1.05rem;font-weight:800}.brand img{width:40px;height:40px}.header-spacer{flex:1}.device-select{max-width:190px;min-height:44px;border-radius:11px;border:1px solid var(--line);background:#efffff;color:#08252d;padding:8px;font-weight:750}.icon-button{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:12px;display:grid;place-items:center;box-shadow:none}.icon-button.large{width:48px;height:48px}.icon-button img{width:27px;height:27px}.icon-button.exit{font-size:2.25rem;line-height:1;font-weight:300}.content{padding:14px 12px 28px}.status-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.badge{display:flex;align-items:center;gap:7px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-weight:700}.badge i{width:10px;height:10px;border-radius:50%;background:var(--muted)}.badge.online i{background:var(--ok)}.badge.offline i,.badge.alarm i{background:var(--danger)}.badge.warning i{background:var(--warn)}.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.metric{background:linear-gradient(150deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:20px;padding:18px;min-height:190px}.metric-top{display:flex;align-items:center;gap:10px;color:var(--muted);font-weight:750}.metric-top img{width:40px;height:40px}.metric-raw{margin-top:22px;color:#91aeb4;font-size:.9rem;letter-spacing:.06em}.metric-value{font-size:clamp(4rem,13vw,7.2rem);font-weight:900;line-height:.92;letter-spacing:-.06em;margin-top:3px}.metric-value small{font-size:1rem;color:var(--muted);letter-spacing:0;margin-left:7px}.panel{margin-top:14px;border:1px solid var(--line);border-radius:18px;background:#092f3a;padding:15px}.history-head,.range-nav{display:flex;align-items:center;justify-content:space-between;gap:10px}.history-head h2{margin:0}.secondary,.primary,.nav-day{border-radius:11px;min-height:44px;padding:9px 14px;font-weight:750}.secondary,.nav-day{background:var(--panel2);color:var(--text);border:1px solid var(--line)}.primary{border:0;background:linear-gradient(135deg,#27a8b8,#26886f);color:white}.primary.compact{width:auto}.range-nav{margin:14px 0}.range-nav strong{text-align:center;font-size:.9rem;color:var(--muted)}.chart-card{border-top:1px solid #1b5360;padding-top:10px;margin-top:10px}.chart-card h3{margin:0 0 8px}.chart-wrap{height:300px}.range-form{display:flex;align-items:end;gap:10px;margin-top:14px}.range-form label{flex:1;color:var(--muted);font-weight:700}.range-form input,.form-grid input,.cal-row input{display:block;width:100%;margin-top:5px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:#f2ffff;color:#08252d;padding:9px}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.action-grid button,.settings-menu button{min-height:86px;border:1px solid var(--line);border-radius:15px;background:var(--panel);color:var(--text);font-weight:750;display:flex;align-items:center;justify-content:center;gap:10px}.action-grid img,.settings-menu img{width:38px;height:38px}.dialog-backdrop{position:fixed;inset:0;z-index:50;background:#000a;display:grid;place-items:end center}.dialog{width:min(760px,100%);max-height:94vh;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:22px 22px 0 0;padding:17px}.dialog-head{position:sticky;top:-17px;background:var(--bg);z-index:2;display:flex;justify-content:space-between;align-items:center;padding:8px 0}.dialog-head h2{margin:0}.settings-menu{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{color:var(--muted);font-weight:700}.current-raw{font-size:1.1rem;background:var(--panel2);padding:12px;border-radius:12px}.current-raw strong{font-size:1.8rem;margin-left:8px}.muted{color:var(--muted)}.cal-points{display:grid;gap:9px}.cal-row{display:grid;grid-template-columns:44px 120px 1fr auto;align-items:end;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px}.cal-row label{color:var(--muted)}.cal-row input{display:inline-block;width:120px}.action-row{display:flex;gap:10px;margin-top:14px}.action-row>*{flex:1}.data-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.data-row{padding:9px;border-bottom:1px solid #1b5360}.data-row span{display:block;color:var(--muted);font-size:.82rem}.about-logo{width:80px;display:block;margin:auto}.notice{padding:10px;border:1px solid var(--danger);border-radius:10px;background:#542a31}.loading{min-height:100vh;display:grid;place-items:center}.spinner{width:30px;height:30px;border:4px solid #ffffff33;border-top-color:#5ed4df;border-radius:50%;animation:s .8s linear infinite}@keyframes s{to{transform:rotate(360deg)}}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:18px}.login-card{width:min(440px,100%);background:#082f39;border:1px solid var(--line);border-radius:22px;padding:24px}.login-logo{width:80px;display:block;margin:auto}.login-card h1,.subtitle{text-align:center}.subtitle{color:var(--muted)}.field{margin:13px 0}.field label{display:block;color:var(--muted);margin-bottom:5px}.field input,.field select{width:100%;min-height:48px;border-radius:11px;border:1px solid var(--line);background:#efffff;color:#08252d;padding:10px}.login-card .primary{width:100%}
@media(max-width:650px){.header-inner{gap:7px}.brand span{display:none}.device-select{max-width:140px;font-size:.75rem}.hero-grid{grid-template-columns:1fr}.metric{min-height:160px}.metric-value{font-size:4.7rem}.range-nav{display:grid;grid-template-columns:1fr 1fr}.range-nav strong{grid-column:1/-1;grid-row:1}.chart-wrap{height:260px}.action-grid{grid-template-columns:1fr}.range-form{flex-direction:column;align-items:stretch}.settings-menu,.form-grid,.data-grid{grid-template-columns:1fr}.cal-row{grid-template-columns:42px 1fr}.cal-row label,.cal-row button{grid-column:1/-1}.action-row{flex-direction:column}}

/* v1.1.2 clean symbols and range-aware live values */
.metric-top img,.action-grid img,.settings-menu img,.brand img,.about-logo,.login-logo,.icon-button img{background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important}
.metric-value.value-normal{color:var(--ok)}
.metric-value.value-low{color:#58aaff}
.metric-value.value-high{color:var(--danger)}
.metric-value.value-unknown{color:var(--text)}
.chart-wrap canvas{display:block}

/* v1.1.3 safe date rendering and compact chart headings */
.chart-card h3{display:flex;align-items:baseline;gap:.38rem;flex-wrap:wrap}
.chart-date-range{font-size:.82rem;font-weight:400;color:var(--muted);letter-spacing:0}


/* v1.1.4 device alias administration and wider selector */
.device-picker{display:flex;flex-direction:column;align-items:stretch;gap:2px;width:240px;min-width:190px}
.device-select,.device-single{width:100%;max-width:none;min-height:44px}
.device-single{display:flex;align-items:center;border-radius:11px;border:1px solid var(--line);background:#efffff;color:#08252d;padding:8px 10px;font-weight:750}
.device-alias{min-height:16px;padding:0 4px;color:var(--muted);font-size:.72rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.device-alias.empty{opacity:.55;font-style:italic}
.alias-form label{display:block;color:var(--muted);font-weight:700}
.alias-form input{display:block;width:100%;margin-top:6px;min-height:46px;border:1px solid var(--line);border-radius:10px;background:#f2ffff;color:#08252d;padding:10px}
.alias-form .primary{width:100%;margin-top:12px}
@media(max-width:650px){.brand{flex:0 0 auto}.header-spacer{display:none}.device-picker{width:auto;min-width:0;flex:1}.device-select,.device-single{font-size:.78rem}.device-alias{font-size:.68rem}.header-inner{padding-left:10px;padding-right:10px}.icon-button.large{width:48px;flex:0 0 48px}}


/* v1.1.5 aligned device selector and alias */
.header-inner{height:76px}
.device-picker{position:relative;align-self:center;gap:0}
.device-select,.device-single{min-height:48px;height:48px}
.device-alias{position:absolute;left:4px;right:4px;top:51px;padding:0;line-height:1;pointer-events:none}
@media(max-width:650px){
  .header-inner{height:76px;align-items:center}
  .device-picker{align-self:center}
  .device-select,.device-single{height:48px;min-height:48px}
  .device-alias{top:51px}
}


/* v1.1.6 refined iconography and device identity spacing */
.icon-button img,.metric-top img,.action-grid img,.settings-menu img{object-fit:contain}
.header-inner{height:92px}
.device-picker{width:270px;min-width:220px;padding-bottom:25px}
.device-select,.device-single{font-size:1.18rem;font-weight:800;letter-spacing:.01em;padding-left:14px;padding-right:36px}
.device-alias{top:54px;left:0;right:0;min-height:22px;line-height:22px;padding:0 8px;text-align:center;font-size:.86rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.device-alias.empty{opacity:.72;font-style:normal}
.icon-button.large{border-radius:14px}
.icon-button.large img{width:30px;height:30px}
.metric-top img{width:42px;height:42px}
.action-grid img,.settings-menu img{width:40px;height:40px}
@media(max-width:650px){
  .header-inner{height:92px;gap:8px}
  .brand img{width:38px;height:38px}
  .device-picker{width:auto;min-width:0;flex:1;padding-bottom:25px}
  .device-select,.device-single{font-size:1.02rem;padding-left:12px;padding-right:32px}
  .device-alias{top:54px;font-size:.8rem;line-height:22px}
  .icon-button.large{width:50px;height:50px;flex:0 0 50px}
}


/* v1.1.7 header alignment, centered alias and refined logout */
.header-inner{height:96px;display:grid;grid-template-columns:auto minmax(0,1fr) 48px 48px;grid-template-rows:48px 24px;align-items:center;column-gap:9px;row-gap:4px;padding:8px 12px 8px}
.brand{grid-column:1;grid-row:1}
.header-spacer{display:none}
.device-picker{grid-column:2;grid-row:1;position:static;width:100%;min-width:0;align-self:center}
.device-select,.device-single{width:100%;height:48px;min-height:48px;margin:0;align-self:center}
.icon-button.large{width:48px;height:48px;align-self:center}
#settings-button{grid-column:3;grid-row:1}
#logout-button{grid-column:4;grid-row:1}
.icon-button img{width:29px;height:29px}
.device-alias{position:static;grid-column:1/-1;grid-row:2;justify-self:stretch;align-self:center;min-height:24px;line-height:24px;padding:0 12px;text-align:center;color:var(--ok);font-size:.9rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.device-alias.empty{opacity:1;color:var(--ok);font-style:normal}
@media(max-width:650px){.header-inner{height:96px;grid-template-columns:42px minmax(0,1fr) 48px 48px;column-gap:8px;padding-left:10px;padding-right:10px}.brand{width:42px}.brand img{width:38px;height:38px}.device-picker{width:100%;min-width:0}.device-select,.device-single{font-size:1.02rem}.device-alias{font-size:.84rem;line-height:24px}}

/* v1.1.8 exact header control alignment */
.device-picker{
  padding:0!important;
  margin:0!important;
  height:48px;
  min-height:48px;
  display:flex;
  align-items:stretch;
}
.device-select,.device-single{
  display:flex;
  align-items:center;
  box-sizing:border-box;
  height:48px!important;
  min-height:48px!important;
  max-height:48px!important;
  margin:0!important;
  vertical-align:top;
}
#settings-button,#logout-button{
  margin:0!important;
  height:48px!important;
  min-height:48px!important;
  max-height:48px!important;
}
@media(max-width:650px){
  .device-picker{padding:0!important;height:48px;min-height:48px}
  .device-select,.device-single,#settings-button,#logout-button{height:48px!important;min-height:48px!important;max-height:48px!important;margin:0!important}
}

/* v1.2.0 login, per-panel alarms, language and web user management */
.login-help{margin:-4px 0 12px;color:var(--muted);font-size:.82rem;line-height:1.35}
.metric-top{justify-content:space-between}
.metric-title{display:flex;align-items:center;gap:10px;min-width:0}
.metric-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metric-alarm-button{width:55px;height:55px;flex:0 0 55px;border:0;background:transparent;color:var(--text);padding:5px;border-radius:50%;display:grid;place-items:center;cursor:pointer;touch-action:manipulation}
.metric-alarm-button:active,.metric-alarm-button:focus-visible{background:#ffffff12;outline:2px solid var(--line);outline-offset:1px}
.metric-alarm-button img{width:39px!important;height:39px!important;background:transparent!important;border:0!important;box-shadow:none!important}
.metric-alarm-button{position:relative}
.metric-alarm-button.alarm-all-off::after{content:"";position:absolute;left:50%;top:50%;width:38px;height:4px;border-radius:999px;background:#ff7373;box-shadow:0 0 0 1px rgba(6,30,39,.28);transform:translate(-50%,-50%) rotate(-45deg);pointer-events:none}
html[data-theme="light"] .metric-alarm-button.alarm-all-off::after{background:#c83f43;box-shadow:0 0 0 1px rgba(255,255,255,.58)}
.dialog-head{gap:12px}
.dialog-head h2{min-width:0;line-height:1.15}
.dialog-close{width:48px;height:48px;min-width:48px;min-height:48px;padding:0;margin:0;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);display:grid;place-items:center;line-height:1;cursor:pointer}
.dialog-close span{display:block;font-size:2rem;font-weight:300;line-height:1;transform:translateY(-1px)}
.dialog-wide{width:min(920px,100%)}
.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.settings-emoji{font-size:2rem;line-height:1}
.alarm-choice button{min-height:100px}
.alarm-adjust{--range-rest:#285b66}
.dual-range{position:relative;height:58px;margin:18px 6px 8px;display:flex;align-items:center}
.range-track{position:absolute;left:0;right:0;height:10px;border-radius:999px;background:var(--range-rest);box-shadow:inset 0 0 0 1px #ffffff12}
.dual-range input[type="range"]{position:absolute;left:0;width:100%;height:10px;margin:0;padding:0;background:transparent;pointer-events:none;-webkit-appearance:none;appearance:none;outline:none}
.dual-range input[type="range"]::-webkit-slider-runnable-track{height:10px;background:transparent;border:0}
.dual-range input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:28px;height:28px;margin-top:-9px;border-radius:50%;border:3px solid #eaffff;background:#0b3440;box-shadow:0 0 0 2px var(--ok);pointer-events:auto;cursor:pointer}
.dual-range input[type="range"]::-moz-range-track{height:10px;background:transparent;border:0}
.dual-range input[type="range"]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;border:3px solid #eaffff;background:#0b3440;box-shadow:0 0 0 2px var(--ok);pointer-events:auto;cursor:pointer}
.range-low{z-index:3}.range-high{z-index:4}
.alarm-number-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.alarm-limit-card{display:block;min-width:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(9,47,58,.44);transition:.18s ease}
.alarm-limit-card.is-disabled{opacity:.68;border-color:#49666d}
.alarm-limit-head{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:10px}
.alarm-limit-head>span{min-width:0;color:var(--text);font-weight:800;overflow-wrap:anywhere}
.alarm-limit-switch{grid-template-columns:50px auto;min-width:84px;gap:6px}
.alarm-limit-switch .switch-slider{width:50px;height:28px}
.alarm-limit-switch .switch-slider::after{width:20px;height:20px}
.alarm-limit-switch input:checked + .switch-slider::after{transform:translateX(22px)}
.alarm-limit-switch input:checked ~ b{color:var(--ok)}
.alarm-number-grid label,.language-form label,.user-form label,.password-editor label{color:var(--muted);font-weight:700}
.number-with-unit{display:flex;min-width:0;width:100%;align-items:center;gap:7px;margin-top:6px;background:#f2ffff;border-radius:11px;padding-right:10px;border:1px solid var(--line)}
.number-with-unit input{min-width:0;flex:1;min-height:48px;border:0;background:transparent;color:#08252d;padding:10px;font-weight:800}
.number-with-unit span{color:#45666e;font-weight:800;white-space:nowrap}
.language-form select,.user-form input,.user-form select{display:block;width:100%;min-height:48px;margin-top:6px;border:1px solid var(--line);border-radius:11px;background:#f2ffff;color:#08252d;padding:9px 10px}
.user-manager-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.user-manager-head p{margin:0;max-width:70%}
.user-list{display:grid;gap:10px}
.user-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.user-card-main{min-width:0;display:grid;gap:2px}
.user-card-main strong{font-size:1.05rem;color:var(--text)}
.user-card-main span,.user-card-main small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-card-main small{font-size:.77rem}
.secondary.compact{min-height:40px;padding:7px 11px}
.user-form{display:grid;gap:14px}
.user-form .form-grid{align-items:end}
.check-field{display:flex!important;align-items:center;gap:8px;min-height:48px;margin-top:26px;color:var(--text)!important}
.check-field input{width:22px!important;height:22px!important;min-height:22px!important;margin:0!important;accent-color:var(--ok)}
.password-editor{border-top:1px solid #1b5360;padding-top:13px}
.password-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:end}
.password-row input{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;letter-spacing:.04em}
.device-access-section{border-top:1px solid #1b5360;padding-top:10px}
.device-access-section h3{margin:0 0 6px}
.admin-device-note{display:none;padding:10px;border:1px solid var(--line);border-radius:10px;background:#0c3a45}
.device-access-list{display:grid;gap:8px}
.device-access-list.disabled{opacity:.45;pointer-events:none}
.device-access-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #164b57}
.device-access-row span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.device-access-row select{min-height:42px;border:1px solid var(--line);border-radius:9px;background:#f2ffff;color:#08252d;padding:7px}
.user-form-actions{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;margin-top:4px}
.danger-button{border:1px solid #ff7f7f;background:#542a31;color:#fff;border-radius:11px;min-height:44px;padding:9px 14px;font-weight:800;justify-self:start}
@media(max-width:650px){
 .metric-alarm-button{width:60px;height:60px;flex-basis:60px}
 .metric-alarm-button img{width:42px!important;height:42px!important}
 .dialog-close{width:48px;height:48px;min-width:48px}
 .alarm-number-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .user-manager-head{align-items:stretch;flex-direction:column}
 .user-manager-head p{max-width:none}
 .user-manager-head .primary{width:100%}
 .user-card{grid-template-columns:1fr}
 .user-card .secondary{width:100%}
 .password-row{grid-template-columns:1fr}
 .device-access-row{grid-template-columns:1fr}
 .device-access-row select{width:100%}
 .user-form-actions{grid-template-columns:1fr}
 .user-form-actions>*{width:100%;justify-self:stretch}
 .danger-button{justify-self:stretch}
}


/* v1.2.3 robust instant DO RAW read in calibration */
.current-raw{display:flex;align-items:center;justify-content:space-between;gap:12px}
.current-raw-value{display:flex;align-items:baseline;gap:8px;min-width:0}
.current-raw-value span{color:var(--text);white-space:nowrap}
.current-raw-value strong{margin-left:0;white-space:nowrap}
.instant-read-button{min-height:42px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px;touch-action:manipulation}
.instant-read-button img{width:22px;height:22px;object-fit:contain}
.instant-read-button.reading img{animation:instant-read-spin .8s linear infinite}
.instant-read-button:disabled{opacity:.65;cursor:wait}
.instant-read-status{min-height:20px;margin:5px 3px 0;font-size:.8rem;color:var(--muted);text-align:right}
.instant-read-status.waiting{color:var(--muted)}
.instant-read-status.success{color:var(--ok);font-weight:700}
.instant-read-status.error{color:var(--danger);font-weight:700}
@keyframes instant-read-spin{to{transform:rotate(360deg)}}
@media(max-width:520px){
 .current-raw{gap:8px;padding:10px}
 .current-raw-value{display:grid;gap:1px}
 .current-raw-value strong{font-size:1.65rem}
 .instant-read-button{min-height:44px;padding:7px 10px;font-size:.88rem}
 .instant-read-button img{width:20px;height:20px}
}

/* v1.2.5 variable 2..5 point calibration */
.calibration-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#0c3944}
.calibration-summary strong{font-size:1.05rem;color:var(--ok);white-space:nowrap}
.calibration-summary span{color:var(--muted);font-size:.84rem;text-align:right}
.cal-row.captured{box-shadow:inset 3px 0 0 var(--ok)}
.calibration-method{margin-top:12px}
.calibration-actions{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr)}
.calibration-actions button:disabled{opacity:.42;cursor:not-allowed}
@media(max-width:650px){
 .calibration-summary{align-items:flex-start;flex-direction:column}
 .calibration-summary span{text-align:left}
 .calibration-actions{grid-template-columns:1fr}
}


/* v1.2.6 remembered login and local configuration backup */
.remember-field{display:flex;align-items:flex-start;gap:10px;margin:12px 0 16px;color:var(--text);cursor:pointer;user-select:none}
.remember-field input{width:22px;height:22px;min-width:22px;margin:1px 0 0;accent-color:var(--ok)}
.remember-field span{display:grid;gap:2px;line-height:1.25}
.remember-field strong{font-size:.95rem}
.remember-field small{color:var(--muted);font-size:.76rem;line-height:1.35}
.settings-menu button:disabled{opacity:.62;cursor:wait}

/* v1.3.0 complete live device backup / restore */
.settings-menu .upload-icon{transform:rotate(180deg)}
.restore-config-form{display:grid;gap:14px}
.backup-warning{border:1px solid #2b6570;border-radius:12px;background:#0b3540;padding:12px 14px}
.backup-warning strong{display:block;color:var(--text);margin-bottom:5px}
.backup-warning p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.45}
.restore-file-label{display:grid;gap:7px;color:var(--muted);font-weight:700}
.restore-file-label input[type="file"]{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:11px;background:#f2ffff;color:#08252d;padding:10px;min-height:48px}
.restore-file-summary{display:grid;gap:4px;min-height:48px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#092e38;font-size:.82rem;line-height:1.4}
.restore-file-summary strong{color:var(--text);overflow-wrap:anywhere}
.restore-file-summary span{color:var(--muted)}
.restore-file-summary.success{border-color:var(--ok);color:var(--ok)}
.restore-file-summary.error{border-color:var(--danger);color:var(--danger);font-weight:700}


/* v1.3.1 live chart refresh and roomier large numeric values */
.metric-value{letter-spacing:-.045em;font-variant-numeric:tabular-nums}

/* v1.4.0 per-user e-mail alarms and delivery-density control */
.dialog-loading{min-height:170px;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-weight:700}
.dialog-loading .spinner{display:block;place-items:initial;min-height:0}
.mail-alert-card{margin-top:14px;padding:15px;border:1px solid var(--line);border-radius:15px;background:#0b3440;transition:border-color .18s ease,box-shadow .18s ease}
.mail-alert-card.enabled{border-color:#3a8c70;box-shadow:inset 3px 0 0 var(--ok)}
.mail-alert-card.disabled{box-shadow:inset 3px 0 0 #59747a}
.mail-alert-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.mail-alert-heading h3{margin:0;color:var(--text);font-size:1.08rem}
.mail-alert-heading p{margin:4px 0 0;color:var(--muted);font-size:.83rem;line-height:1.4}
.switch-control{display:grid;grid-template-columns:58px auto;grid-template-rows:auto;align-items:center;gap:8px;min-width:105px;cursor:pointer;user-select:none}
.switch-control input{position:absolute;opacity:0;pointer-events:none}
.switch-slider{position:relative;width:58px;height:32px;border-radius:999px;background:#315864;border:1px solid #4e7882;transition:.18s ease}
.switch-slider::after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#d9eef1;box-shadow:0 1px 4px #0008;transition:.18s ease}
.switch-control input:checked + .switch-slider{background:#24865d;border-color:var(--ok)}
.switch-control input:checked + .switch-slider::after{transform:translateX(26px);background:#effff4}
.switch-control input:focus-visible + .switch-slider{outline:2px solid #58aaff;outline-offset:2px}
.switch-control input:disabled + .switch-slider{opacity:.42;cursor:not-allowed}
.switch-control b{grid-column:2;grid-row:1;color:var(--muted);font-size:.8rem;min-width:28px}
.mail-alert-card.enabled .switch-control b{color:var(--ok)}
.mail-recipient{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding:10px 12px;border-radius:11px;background:#092f3a;border:1px solid #1b5360;font-size:.82rem}
.mail-recipient span{color:var(--muted)}
.mail-recipient strong{color:var(--text);overflow-wrap:anywhere;text-align:right}
.mail-recipient.missing{border-color:#7f6841}
.mail-alert-notice{margin-top:9px;border-color:#7f6841;background:#4a3b24;color:#ffe4a8}
.mail-density-label{display:block;margin-top:16px;color:var(--muted);font-weight:700}
.mail-density-label>div{display:flex;justify-content:space-between;align-items:center;gap:10px}
.mail-density-label strong{color:var(--ok);font-variant-numeric:tabular-nums}
.mail-density-label input[type="range"]{width:100%;height:34px;margin-top:8px;accent-color:var(--ok);cursor:pointer;touch-action:pan-y}
.mail-density-label input[type="range"]:disabled{opacity:.38;cursor:not-allowed}
.offline-alert-card.disabled .mail-density-label strong{color:var(--muted)}
.density-scale{display:flex;justify-content:space-between;color:#7fa4aa;font-size:.72rem;margin-top:-5px;padding:0 2px}
.mail-repeat-help{font-size:.8rem;line-height:1.45;margin:10px 0 13px}
.mail-alert-save{width:100%;min-height:46px}
.mail-alert-save:disabled{opacity:.45;cursor:not-allowed}
.mail-off-warning{text-align:center}
.mail-off-icon{width:72px;height:72px;margin:3px auto 10px;border-radius:50%;display:grid;place-items:center;background:#4a3b24;border:1px solid #7f6841}
.mail-off-icon img{width:42px;height:42px}
.mail-off-warning h3{margin:5px 0 7px;color:var(--warn)}
.mail-off-warning>p{line-height:1.5}
.mail-off-warning .mail-recipient{text-align:left}
.test-warning-actions{grid-template-columns:1fr 1fr 1.25fr}
@media(max-width:650px){
 .mail-alert-heading{align-items:center}
 .mail-alert-heading>div{min-width:0}
 .switch-control{min-width:96px;grid-template-columns:54px auto;gap:6px}
 .switch-slider{width:54px;height:31px}
 .switch-slider::after{width:23px;height:23px}
 .switch-control input:checked + .switch-slider::after{transform:translateX(23px)}
 .mail-recipient{align-items:flex-start;flex-direction:column;gap:3px}
 .mail-recipient strong{text-align:left}
 .test-warning-actions{grid-template-columns:1fr}
}


/* v1.5.0 device photo, mail-state badge and user-information messaging */
.header-inner{
  grid-template-columns:auto minmax(0,1fr) 48px 48px 48px;
}
#photo-button{grid-column:3;grid-row:1}
#settings-button{grid-column:4;grid-row:1}
#logout-button{grid-column:5;grid-row:1}
#photo-button,#settings-button,#logout-button{
  margin:0!important;height:48px!important;min-height:48px!important;max-height:48px!important;
}
.status-strip{align-items:center}
.badge.mail-off i{background:var(--muted)}
.user-info-button{
  margin-left:auto;width:42px;height:42px;flex:0 0 42px;border-radius:50%;border:1px solid var(--line);
  background:var(--panel);display:grid;place-items:center;padding:7px;cursor:pointer;transition:.16s ease;
}
.user-info-button img{width:26px;height:26px;object-fit:contain}
.user-info-button.severity-none{opacity:.66}
.user-info-button.severity-info{border-color:var(--ok);background:#65e09a20;box-shadow:0 0 0 1px #65e09a22 inset}
.user-info-button.severity-warning{border-color:var(--warn);background:#ffd16620;box-shadow:0 0 0 1px #ffd16622 inset}
.user-info-button.severity-error{border-color:var(--danger);background:#ff666620;box-shadow:0 0 0 1px #ff666622 inset}
.device-photo-frame{
  min-height:260px;display:grid;place-items:center;border:1px solid var(--line);border-radius:16px;
  overflow:hidden;background:#04181f;
}
.device-photo-image{display:block;max-width:100%;max-height:72vh;width:auto;height:auto;object-fit:contain}
.device-photo-error{width:100%;min-height:260px;padding:28px;display:grid;place-items:center;text-align:center;gap:10px;color:var(--muted)}
.device-photo-error strong{color:var(--text);font-size:1.1rem}
.device-photo-error span{max-width:620px}
.device-photo-caption{display:flex;justify-content:space-between;gap:12px;margin-top:10px;color:var(--muted);font-size:.86rem}
.device-photo-caption strong{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.device-photo-caption span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}
.user-message-empty{min-height:180px;display:grid;place-items:center;text-align:center;align-content:center;gap:9px;color:var(--muted)}
.user-message-empty img{width:54px;height:54px;opacity:.62}
.user-message-empty strong{font-size:1.08rem;color:var(--text)}
.user-message-empty p{margin:0;max-width:560px}
.user-message-card{border:1px solid var(--line);border-radius:16px;padding:15px;background:var(--panel)}
.user-message-card.severity-info{border-left:5px solid var(--ok)}
.user-message-card.severity-warning{border-left:5px solid var(--warn)}
.user-message-card.severity-error{border-left:5px solid var(--danger)}
.user-message-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:.82rem}
.message-severity{font-weight:900;text-transform:uppercase;letter-spacing:.055em}
.severity-info .message-severity{color:var(--ok)}
.severity-warning .message-severity{color:var(--warn)}
.severity-error .message-severity{color:var(--danger)}
.user-message-card h3{margin:10px 0 8px;font-size:1.25rem}
.user-message-content{
  max-height:38vh;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;
  padding:12px;border-radius:11px;background:#062832;border:1px solid #1b5360;
}
.user-message-author{margin-top:10px;color:var(--muted);font-size:.86rem}
.message-acknowledged{margin-top:11px;color:var(--ok);font-weight:800}
.user-message-actions{margin-top:12px}
.single-action{grid-template-columns:1fr}
.admin-message-panel{margin-top:20px;padding-top:16px;border-top:1px solid #1b5360}
.admin-message-panel h3{margin:0 0 5px}
.admin-message-panel form{display:grid;gap:12px}
.admin-message-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.admin-message-panel label{display:block;color:var(--muted);font-weight:700}
.admin-message-panel input,.admin-message-panel select,.admin-message-panel textarea{
  display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:11px;
  background:#f2ffff;color:#08252d;padding:10px;min-height:46px;
}
.admin-message-panel textarea{min-height:150px;resize:vertical;line-height:1.4}
.admin-message-actions{display:flex;justify-content:flex-end}
.admin-message-actions .primary{min-width:180px}
.pending-alarm-values{
  display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:11px 13px;
  border:1px solid var(--line);border-radius:11px;background:var(--panel);
}
.pending-alarm-values span{color:var(--muted)}
.pending-alarm-values b{color:var(--text);font-variant-numeric:tabular-nums}
.pending-alarm-values strong{font-variant-numeric:tabular-nums}
.alarm-mail-warning-actions{grid-template-columns:1fr 1fr 1fr}
@media(max-width:650px){
 .header-inner{grid-template-columns:42px minmax(0,1fr) 44px 44px 44px;column-gap:6px;padding-left:8px;padding-right:8px}
 #photo-button,#settings-button,#logout-button{width:44px!important;height:48px!important;min-width:44px!important}
 #photo-button img,#settings-button img,#logout-button img{width:27px;height:27px}
 .status-strip{gap:6px}
 .badge{padding:7px 9px;font-size:.83rem}
 .user-info-button{width:40px;height:40px;flex-basis:40px;padding:6px}
 .device-photo-caption{display:grid;grid-template-columns:1fr;text-align:center}
 .admin-message-grid{grid-template-columns:1fr}
 .admin-message-actions .primary{width:100%}
 .alarm-mail-warning-actions{grid-template-columns:1fr}
}

/* v1.6.0 notifications: content-only panel managed by User Manager. */
#message-cancel,#message-confirm,#message-close{min-height:46px}
.user-message-content{max-height:46vh}
@media(max-width:650px){.user-message-content{max-height:52vh}}


/* v1.6.1 - highly visible Notifications state indicator */
.user-info-button{
  border-width:2px;
  box-shadow:none;
  opacity:1;
}
.user-info-button.severity-none{
  opacity:1;
  background:#40545a;
  border-color:#60747a;
}
.user-info-button.severity-none img{opacity:.78}
.user-info-button.severity-info{
  background:#65e09a;
  border-color:#65e09a;
  box-shadow:0 0 0 2px #65e09a2b,0 0 14px #65e09a45;
}
.user-info-button.severity-warning{
  background:#ffd166;
  border-color:#ffd166;
  box-shadow:0 0 0 2px #ffd1662b,0 0 15px #ffd16655;
}
.user-info-button.severity-error{
  background:#ff4f5e;
  border-color:#ff4f5e;
  box-shadow:0 0 0 2px #ff666633,0 0 18px #ff4f5e88;
  animation:oxyguard-critical-notification 1.05s ease-in-out infinite;
}
.user-info-button.severity-info img,
.user-info-button.severity-warning img{
  filter:brightness(0) saturate(100%);
  opacity:.86;
}
.user-info-button.severity-error img{
  filter:none;
  opacity:1;
}
@keyframes oxyguard-critical-notification{
  0%,100%{
    background:#ff4f5e;
    border-color:#ff4f5e;
    box-shadow:0 0 0 2px #ff666633,0 0 13px #ff4f5e80;
    transform:scale(1);
  }
  50%{
    background:#a91427;
    border-color:#ff8993;
    box-shadow:0 0 0 4px #ff666624,0 0 24px #ff4f5ecc;
    transform:scale(1.07);
  }
}
@media (prefers-reduced-motion: reduce){
  .user-info-button.severity-error{
    animation:none;
    box-shadow:0 0 0 3px #ff666644,0 0 20px #ff4f5eaa;
  }
}


/* v1.6.2 - deterministic Notifications severity styling.
   Use !important only on severity-state colors so older cached/general button
   rules cannot override the notification level. */
.user-info-button.severity-none{
  background:#40545a !important;
  border-color:#60747a !important;
  box-shadow:none !important;
}
.user-info-button.severity-info{
  background:#65e09a !important;
  border-color:#65e09a !important;
  box-shadow:0 0 0 2px #65e09a33,0 0 16px #65e09a66 !important;
}
.user-info-button.severity-warning{
  background:#ffd166 !important;
  border-color:#ffd166 !important;
  box-shadow:0 0 0 2px #ffd16633,0 0 17px #ffd16677 !important;
}
.user-info-button.severity-error{
  background:#ff4f5e !important;
  border-color:#ff7a86 !important;
  box-shadow:0 0 0 2px #ff666644,0 0 21px #ff4f5eaa !important;
  animation:oxyguard-critical-notification-v162 1s ease-in-out infinite !important;
}
.user-info-button.severity-info img,
.user-info-button.severity-warning img{
  filter:brightness(0) saturate(100%) !important;
  opacity:.9 !important;
}
.user-info-button.severity-error img{
  filter:none !important;
  opacity:1 !important;
}
@keyframes oxyguard-critical-notification-v162{
  0%,100%{
    background:#ff4f5e !important;
    border-color:#ff7a86 !important;
    box-shadow:0 0 0 2px #ff666644,0 0 15px #ff4f5e99 !important;
    transform:scale(1);
  }
  50%{
    background:#981326 !important;
    border-color:#ffc2c7 !important;
    box-shadow:0 0 0 5px #ff666633,0 0 28px #ff4f5edd !important;
    transform:scale(1.08);
  }
}
@media (prefers-reduced-motion: reduce){
  .user-info-button.severity-error{
    animation:none !important;
    outline:3px solid #ff4f5e66;
  }
}

/* Whole Notifications dialog follows the message level, not only its label. */
.notification-dialog{
  position:relative;
  overflow:auto;
}
.notification-dialog.severity-info{
  border-color:#65e09a !important;
  box-shadow:0 0 0 2px #65e09a26,0 0 28px #65e09a26;
}
.notification-dialog.severity-warning{
  border-color:#ffd166 !important;
  box-shadow:0 0 0 2px #ffd1662b,0 0 30px #ffd16633;
}
.notification-dialog.severity-error{
  border-color:#ff6666 !important;
  box-shadow:0 0 0 2px #ff666633,0 0 34px #ff4f5e44;
}




.user-message-card.severity-info{
  border:2px solid #65e09a !important;
  border-left:7px solid #65e09a !important;
  background:linear-gradient(145deg,#123f3a,#0b3440) !important;
}
.user-message-card.severity-warning{
  border:2px solid #ffd166 !important;
  border-left:7px solid #ffd166 !important;
  background:linear-gradient(145deg,#493f1f,#252f2d) !important;
}
.user-message-card.severity-error{
  border:2px solid #ff6666 !important;
  border-left:7px solid #ff6666 !important;
  background:linear-gradient(145deg,#4b2028,#292a31) !important;
}

.user-message-card.severity-info .message-severity{
  color:#071e16 !important;background:#65e09a;padding:5px 9px;border-radius:999px;
}
.user-message-card.severity-warning .message-severity{
  color:#2a2108 !important;background:#ffd166;padding:5px 9px;border-radius:999px;
}
.user-message-card.severity-error .message-severity{
  color:#fff !important;background:#d72e40;padding:5px 9px;border-radius:999px;
}

.user-message-card.severity-info .user-message-content{
  background:#0d3c39 !important;border-color:#65e09a88 !important;
}
.user-message-card.severity-warning .user-message-content{
  background:#40391f !important;border-color:#ffd166aa !important;
}
.user-message-card.severity-error .user-message-content{
  background:#442029 !important;border-color:#ff6666aa !important;
}

.user-message-card.severity-info h3{color:#bff8d6}
.user-message-card.severity-warning h3{color:#ffe6a3}
.user-message-card.severity-error h3{color:#ffbcc2}

/* Confirmed notification keeps its original message styling in the dialog,
   while only the main-page Notifications icon becomes gray. */
.notification-dialog.is-confirmed .message-acknowledged{
  color:#b5c8cc;
}


/* v1.6.4 - Notification dialog fine-tune:
   remove the extra colored line under the dialog title because it visually
   touches the top rounded border of the message card. */
.notification-dialog.severity-info .dialog-head,
.notification-dialog.severity-warning .dialog-head,
.notification-dialog.severity-error .dialog-head{
  border-bottom:none !important;
  box-shadow:none !important;
}


/* v1.6.5 - instant current-data refresh beside e-mail state */
.status-refresh-button{
  width:40px;
  height:40px;
  flex:0 0 40px;
  padding:6px;
  border:1px solid var(--line);
  border-radius:50%;
  background:var(--panel);
  color:var(--text);
  display:grid;
  place-items:center;
  cursor:pointer;
  touch-action:manipulation;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease;
}
.status-refresh-button img{
  width:24px;
  height:24px;
  opacity:.9;
}
.status-refresh-button:hover,
.status-refresh-button:focus-visible{
  border-color:#5ed4df;
  background:#104653;
  outline:none;
  box-shadow:0 0 0 2px #5ed4df22;
}
.status-refresh-button.reading img{
  animation:oxyguard-status-refresh-spin .7s linear infinite;
}
.status-refresh-button.success{
  border-color:var(--ok);
  background:#65e09a25;
  box-shadow:0 0 0 2px #65e09a22,0 0 14px #65e09a44;
}
.status-refresh-button:disabled{
  cursor:wait;
  opacity:.9;
}
@keyframes oxyguard-status-refresh-spin{
  to{transform:rotate(360deg)}
}


/* v1.6.7 - professional About / system information panel */
.about-hero{
  display:grid;
  grid-template-columns:110px 1fr;
  gap:20px;
  align-items:center;
  padding:12px 4px 20px;
}
.about-hero .about-logo{width:92px;margin:0 auto}
.about-hero h3{margin:0 0 8px;font-size:1.65rem;color:var(--text)}
.about-hero p{margin:0;color:#cbe8ec;line-height:1.55}
.about-version{
  margin-top:10px;
  display:inline-flex;
  gap:7px;
  padding:6px 10px;
  border:1px solid var(--line);
  border-radius:999px;
  background:#0b3440;
  color:var(--muted);
  font-size:.86rem;
}
.about-version strong{color:inherit}
.about-card{
  margin-top:12px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:linear-gradient(145deg,#0b3440,#082a33);
}
.about-card h3{
  margin:0 0 10px;
  font-size:1rem;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#dff7fa;
}
.about-card>p{margin:0;color:var(--muted);line-height:1.55}
.about-capabilities{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}
.about-capabilities span{
  padding:7px 10px;
  border-radius:999px;
  border:1px solid #2d7382;
  background:#104653;
  color:#dff7fa;
  font-size:.82rem;
  font-weight:700;
}
.about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}
.about-grid .data-row{border:0;padding:8px 0;min-width:0}
.about-grid .data-row span{color:#86aeb5;font-size:.78rem}
.about-grid .data-row strong{display:block;margin-top:2px;color:#ecfbfc;overflow-wrap:anywhere}
.about-support{border-color:#2f7885;background:linear-gradient(145deg,#0c3d48,#082a33)}
.about-contact-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 14px;
  margin-top:14px;
}
.about-contact-grid>div{
  padding:10px 12px;
  border:1px solid #246675;
  border-radius:12px;
  background:#092f3a;
  min-width:0;
}
.about-contact-grid span{display:block;color:#8fb7be;font-size:.78rem;margin-bottom:3px}
.about-contact-grid strong{color:#ecfbfc;overflow-wrap:anywhere}
.about-contact-grid a{color:#8de4ec;text-decoration:none}
.about-contact-grid a:hover{text-decoration:underline}
.about-footer{
  margin-top:16px;
  padding:13px 4px 3px;
  display:flex;
  justify-content:space-between;
  gap:12px;
  color:#769ba2;
  font-size:.78rem;
  border-top:1px solid #164b57;
}
.about-footer strong{color:#9fc9cf}
@media(max-width:650px){
  .about-hero{grid-template-columns:1fr;text-align:center}
  .about-grid,.about-contact-grid{grid-template-columns:1fr}
  .about-footer{flex-direction:column;text-align:center}
}

/* v1.6.8 - login lockout / password recovery */
.login-link-button{appearance:none;border:0;background:transparent;color:#8de4ec;padding:10px 8px 2px;margin:0 auto;cursor:pointer;font:inherit;font-weight:700}
.login-link-button:hover,.login-link-button:focus-visible{color:#dff7fa;text-decoration:underline;outline:none}
.recovery-card{max-width:500px}
.security-code-input{text-align:center;font-family:Consolas,"Courier New",monospace;font-size:1.65rem;font-weight:900;letter-spacing:.35em}
.recovery-validity{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:12px 0 16px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);color:var(--muted)}
.recovery-validity strong{font-family:Consolas,"Courier New",monospace;font-size:1.05rem;letter-spacing:.05em;color:var(--ok)}
.recovery-validity.expired{border-color:var(--danger);background:#542a31}
.recovery-validity.expired strong{font-family:inherit;font-size:.9rem;letter-spacing:0;color:var(--danger)}
.user-card.user-locked{border-color:#ffd166;box-shadow:0 0 0 1px #ffd16633}
.user-card.user-locked small{color:#ffd166}


/* v1.7.0 - independent SMS alarm notification channel */
.sms-alert-card{margin-top:12px}
.sms-alert-card.enabled{border-color:#4d8fa7;box-shadow:inset 3px 0 0 #58aaff}
.sms-alert-card.enabled .switch-control b{color:#79c3ff}
.sms-alert-card .mail-density-label strong{color:#79c3ff}
.sms-alert-card .mail-density-label input[type="range"]{accent-color:#58aaff}
.sms-length-note{margin:10px 0 0;padding:8px 10px;border:1px solid #2d6574;border-radius:9px;color:#8fb7be;font-size:.78rem;line-height:1.4}
.notification-alert-save{width:100%;margin-top:14px}

/* v1.7.1 - Push notification channel */
.push-alert-card{margin-top:12px}
.push-alert-card.enabled{border-color:#7f79c9;box-shadow:inset 3px 0 0 #9a92ff}
.push-alert-card.enabled .switch-control b{color:#b7b2ff}
.push-mode-note{margin:10px 0 0;padding:9px 11px;border:1px solid #4f4b82;border-radius:9px;background:#171b3c;color:#b7b2d8;font-size:.79rem;line-height:1.45}
.push-mode-note strong{color:#d7d3ff}
.user-form label small{display:block;margin-top:5px;color:#789ea5;font-size:.73rem;line-height:1.3}

/* v1.7.4 - responsive live panels with inline 3-hour measured peaks */
.shell{display:flex;flex-direction:column;min-height:100vh}
.header-inner,.content,.app-footer-inner{width:min(1200px,100%);margin-left:auto;margin-right:auto}
.content{width:min(1200px,100%);flex:1}
.hero-grid{align-items:stretch}
.metric{
  position:relative;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  min-width:0;
  min-height:270px;
  padding:18px 20px 16px;
  overflow:hidden;
}
.metric-reading{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:center;
  padding:8px 0 6px;
}
.metric-raw{margin:0 0 9px;color:#91aeb4;font-size:.94rem;letter-spacing:.075em;font-weight:700;text-align:left}
.metric-value-row{
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:clamp(10px,1.6vw,18px);
}
.metric-value{
  min-width:0;
  margin:0;
  display:flex;
  align-items:baseline;
  justify-content:flex-start;
  gap:.45rem;
  font-size:clamp(4.4rem,6.8vw,6.8rem);
  line-height:.9;
  letter-spacing:-.045em;
  white-space:nowrap;
}
.metric-value>span{min-width:0}
.metric-value small{margin-left:0;font-size:clamp(1rem,1.45vw,1.32rem);font-weight:700;white-space:nowrap}
.metric-peaks{
  width:clamp(114px,11.5vw,135px);
  min-width:0;
  display:grid;
  gap:9px;
  justify-items:stretch;
  font-variant-numeric:tabular-nums;
}
.metric-peak{
  min-width:0;
  padding:6px 9px 7px;
  border:1px solid #1b5965;
  border-radius:10px;
  background:#082f39b8;
  line-height:1;
  text-align:right;
}
.metric-peak small{display:block;margin:0 0 2px;color:#a8c1c6;font-size:.67rem;font-weight:800;letter-spacing:.07em;text-align:left}
.metric-peak b{display:flex;align-items:baseline;justify-content:flex-end;gap:3px;font-size:1.89rem;font-weight:900;letter-spacing:-.02em;white-space:nowrap}
.metric-peak i{font-style:normal;font-size:1.2em;font-weight:950}
.metric-peak-high b,.metric-peak-high i{color:var(--danger)}
.metric-peak-low b,.metric-peak-low i{color:#58aaff}
.app-footer{
  width:100%;
  margin-top:18px;
  border-top:1px solid #164b57;
  background:#041a21cc;
  color:#769ba2;
}
.app-footer-inner{
  min-height:48px;
  padding:11px 12px calc(11px + env(safe-area-inset-bottom));
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  font-size:.78rem;
}
.app-footer strong{color:#9fc9cf;white-space:nowrap}
.app-footer span{text-align:right}

@media(max-width:650px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  .header{width:100%}
  .header-inner{width:100%;max-width:none;padding-left:max(6px,env(safe-area-inset-left));padding-right:max(6px,env(safe-area-inset-right));column-gap:5px}
  .content{width:100%;max-width:none;padding:9px max(6px,env(safe-area-inset-right)) 18px max(6px,env(safe-area-inset-left))}
  .panel,.action-grid{width:100%}
  .status-strip{width:100%;margin-bottom:8px;gap:5px}
  .badge{padding:6px 8px;font-size:.78rem;line-height:1.15}
  .badge i{width:8px;height:8px;flex:0 0 8px}
  .hero-grid{width:100%;grid-template-columns:minmax(0,1fr);gap:8px}
  .metric{
    width:100%;
    min-height:250px;
    border-radius:18px;
    padding:14px 16px 14px;
  }
  .metric-top{min-height:44px}
  .metric-title{gap:9px;font-size:.98rem}
  .metric-title img{width:38px;height:38px}
  .metric-alarm-button{width:60px;height:60px;flex-basis:60px;padding:6px}
  .metric-reading{padding:5px 0 3px}
  .metric-raw{margin-bottom:10px;font-size:.91rem}
  .metric-value-row{gap:8px}
  .metric-value{font-size:clamp(4rem,20vw,5.4rem);gap:.32rem}
  .metric-value small{font-size:1.03rem}
  .metric-peaks{width:clamp(102px,30vw,122px);gap:7px}
  .metric-peak{padding:6px 8px 7px;border-radius:9px}
  .metric-peak small{font-size:.63rem}
  .metric-peak b{font-size:1.79rem}
  .app-footer{margin-top:8px}
  .app-footer-inner{width:100%;max-width:none;padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right));gap:8px;font-size:.68rem}
  .app-footer span{min-width:0}
}

@media(max-width:390px){
  .header-inner{grid-template-columns:38px minmax(0,1fr) 40px 40px 40px;column-gap:4px}
  .brand{width:38px}.brand img{width:36px;height:36px}
  #photo-button,#settings-button,#logout-button{width:40px!important;min-width:40px!important}
  #photo-button img,#settings-button img,#logout-button img{width:25px;height:25px}
  .device-select,.device-single{font-size:.88rem;padding-left:9px;padding-right:24px}
  .device-alias{font-size:.76rem}
  .metric{min-height:238px;padding-left:13px;padding-right:13px}
  .metric-title{font-size:.94rem}
  .metric-value{font-size:clamp(3.8rem,20vw,4.9rem)}
  .metric-value small{font-size:.96rem}
  .metric-peaks{width:clamp(96px,29vw,112px);gap:6px}
  .metric-peak{padding-left:7px;padding-right:7px}
  .metric-peak b{font-size:1.65rem}
  .app-footer-inner{flex-direction:column;justify-content:center;text-align:center;line-height:1.2}
  .app-footer span{text-align:center}
}


/* v1.7.5 - Theme and contrast display preferences (ported from supplied Web v1.8.4 branch) */
:root{
  --chart-text:#a9cbd0;
  --chart-grid:rgba(100,160,170,.13);
  --chart-fill:rgba(124,232,239,.08);
  --chart-do:#7ce8ef;
  --chart-temp:#ffcf7c;
}
.theme-settings{display:grid;gap:12px}
.theme-setting-card{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:15px;border:1px solid var(--line);border-radius:15px;background:var(--panel)
}
.theme-setting-card h3{margin:0 0 5px}
.theme-setting-card p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.4}
.theme-switch-line{display:flex;align-items:center;gap:8px;font-weight:800;white-space:nowrap}
.theme-switch-line>span{min-width:52px;text-align:center;color:var(--muted)}
.theme-switch-line .switch-control{display:grid;min-width:58px;width:58px;grid-template-columns:58px;gap:0}
.theme-storage-note{margin:0;padding:9px 11px;border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:.78rem}
@media(max-width:650px){
  .theme-setting-card{align-items:stretch;flex-direction:column}
  .theme-switch-line{justify-content:center}
}

/* Light theme: professional, slightly darker light palette from the supplied branch. */
html[data-theme="light"]{
  color-scheme:light;
  --bg:#cbdadd;--panel:#dde8eb;--panel2:#c9dce1;--line:#467986;
  --text:#071f27;--muted:#294e57;
  --ok:#11744e;--danger:#b83238;--warn:#875800;
  --chart-text:#204b55;--chart-grid:rgba(23,76,87,.24);
  --chart-fill:rgba(9,111,129,.10);--chart-do:#086f7f;--chart-temp:#835900
}
html[data-theme="light"] body{background:linear-gradient(180deg,#aec8ce,var(--bg) 44%);color:var(--text)}
html[data-theme="light"] .header{background:#d3e1e4f2;backdrop-filter:saturate(135%) blur(5px)}
html[data-theme="light"] .panel,
html[data-theme="light"] .login-card,
html[data-theme="light"] .mail-alert-card,
html[data-theme="light"] .theme-setting-card,
html[data-theme="light"] .about-card{background:linear-gradient(180deg,#e4edef,#d9e6e9);box-shadow:0 10px 24px rgba(18,57,66,.08)}
html[data-theme="light"] .dialog,
html[data-theme="light"] .dialog-head{background:var(--bg)}
html[data-theme="light"] .metric{background:linear-gradient(150deg,#cfdee2,#e2ecef);box-shadow:0 10px 22px rgba(18,57,66,.08)}
html[data-theme="light"] .metric-raw{color:#3f626b}
html[data-theme="light"] .metric-peak{background:#d9e6e9;border-color:var(--line)}
html[data-theme="light"] .badge,
html[data-theme="light"] .icon-button,
html[data-theme="light"] .secondary,
html[data-theme="light"] .nav-day,
html[data-theme="light"] .status-refresh-button{box-shadow:0 3px 10px rgba(31,72,82,.04)}
html[data-theme="light"] .device-select,
html[data-theme="light"] .device-single,
html[data-theme="light"] .field input,
html[data-theme="light"] .field select,
html[data-theme="light"] .range-form input,
html[data-theme="light"] .form-grid input,
html[data-theme="light"] .cal-row input,
html[data-theme="light"] .alias-form input,
html[data-theme="light"] .number-with-unit,
html[data-theme="light"] .language-form select,
html[data-theme="light"] .user-form input,
html[data-theme="light"] .user-form select,
html[data-theme="light"] .device-access-row select,
html[data-theme="light"] .restore-file-label input[type="file"]{background:#eaf1f3;color:#06242c}
html[data-theme="light"] .mail-recipient,
html[data-theme="light"] .restore-file-summary,
html[data-theme="light"] .calibration-summary,
html[data-theme="light"] .admin-device-note{background:#d4e2e6;border-color:var(--line)}
html[data-theme="light"] .backup-warning{background:#d4e2e6;border-color:var(--line)}
html[data-theme="light"] .about-version,
html[data-theme="light"] .about-capabilities span,
html[data-theme="light"] .about-contact-grid>div{background:#d4e2e6;color:var(--text)}
html[data-theme="light"] .about-hero p,
html[data-theme="light"] .about-grid .data-row strong,
html[data-theme="light"] .about-contact-grid strong{color:var(--text)}
html[data-theme="light"] .about-support{background:linear-gradient(145deg,#d0e1e5,#e2ecef);border-color:#658e98}
html[data-theme="light"] .push-mode-note{background:#ebefff;color:#46467e}
html[data-theme="light"] .dialog-backdrop{background:#12343b66}
html[data-theme="light"] .chart-card,
html[data-theme="light"] .data-row,
html[data-theme="light"] .password-editor,
html[data-theme="light"] .device-access-section,
html[data-theme="light"] .device-access-row{border-color:var(--line)}
html[data-theme="light"] .app-footer{background:#c3d4d8e8;border-top-color:#71949d;color:#365c65}
html[data-theme="light"] .app-footer strong{color:#163f49}

/* High contrast is opt-in. Normal contrast is unchanged/default. */
html[data-contrast="high"]{
  --line:#62dce8;--text:#ffffff;--muted:#d4eff2;
  --chart-text:#f0ffff;--chart-grid:rgba(190,240,245,.30)
}
html[data-contrast="high"] .metric,
html[data-contrast="high"] .panel,
html[data-contrast="high"] .badge,
html[data-contrast="high"] .icon-button,
html[data-contrast="high"] .status-refresh-button,
html[data-contrast="high"] .action-grid button,
html[data-contrast="high"] .settings-menu button,
html[data-contrast="high"] .theme-setting-card{border-width:2px}
html[data-theme="light"][data-contrast="high"]{
  --bg:#eef5f6;--panel:#f4f9fa;--panel2:#e2eef1;--line:#176775;
  --text:#071d22;--muted:#294e55;
  --chart-text:#103f48;--chart-grid:rgba(16,63,72,.28);
  --chart-do:#006a78;--chart-temp:#815000
}
html[data-theme="light"][data-contrast="high"] body{background:#eaf3f5}

/* Light-theme foreground visibility refinements from v1.8.2/v1.8.3. */
html[data-theme="light"] .brand{color:#071f27}
html[data-theme="light"] .device-alias{color:#147a57}
html[data-theme="light"] .badge{color:#071f27;background:#dbe7ea;border-color:#467986}
html[data-theme="light"] .badge i{background:#365c65}
html[data-theme="light"] .badge.online i{background:#17885c}
html[data-theme="light"] .badge.offline i,
html[data-theme="light"] .badge.alarm i{background:#c83f43}
html[data-theme="light"] .badge.warning i{background:#9a6800}
html[data-theme="light"] .metric-title{color:#163f49}
html[data-theme="light"] .metric-value.value-normal{color:#17885c}
html[data-theme="light"] .metric-value.value-low{color:#176fc1}
html[data-theme="light"] .metric-value.value-high{color:#c83f43}
html[data-theme="light"] .metric-value.value-unknown{color:#365c65}
html[data-theme="light"] .secondary,
html[data-theme="light"] .nav-day,
html[data-theme="light"] .action-grid button,
html[data-theme="light"] .settings-menu button,
html[data-theme="light"] .icon-button,
html[data-theme="light"] .status-refresh-button{color:#071f27;background:#d7e4e7;border-color:#467986}
html[data-theme="light"] .chart-card{border-top-color:#71949d}
html[data-theme="light"] .data-row{border-bottom-color:#8eaab1}
html[data-theme="light"] .chart-date-range{color:#365c65}
html[data-theme="light"] img[src*="assets/icons/"]:not([src*="/alarm.svg"]):not([src*="/water.svg"]){
  filter:brightness(0) saturate(100%) invert(18%) sepia(29%) saturate(1100%) hue-rotate(145deg) brightness(88%) contrast(94%) !important;
  opacity:1 !important;
}
html[data-theme="light"] img[src*="/alarm.svg"]{filter:none!important;opacity:1!important}
html[data-theme="light"] img[src*="/water.svg"],
html[data-theme="light"] .brand img,
html[data-theme="light"] .login-logo,
html[data-theme="light"] .about-logo{filter:none!important;opacity:1!important}
html[data-theme="light"] .action-grid button{color:#071f27;font-weight:800}
html[data-theme="light"] .action-grid button img{opacity:1!important}
html[data-theme="light"] .muted,
html[data-theme="light"] .metric-raw,
html[data-theme="light"] .chart-date-range{color:#294e57}

/* v1.7.6 - Settings protection and stronger dashboard state contrast */
.settings-lock-button{
  width:40px;height:40px;flex:0 0 40px;padding:6px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;touch-action:manipulation;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,opacity .16s ease,filter .16s ease;
}
.settings-lock-button img{width:23px;height:23px}
.settings-lock-button.locked{
  border:1px solid var(--ok);background:#65e09a25;
  box-shadow:0 0 0 2px #65e09a22,0 0 14px #65e09a35;
}
.settings-lock-button.unlocked{border:1px solid #60747a;background:#40545a;box-shadow:none}
.settings-lock-button:hover,.settings-lock-button:focus-visible{outline:none;filter:brightness(1.12)}
#settings-button:disabled,.metric-alarm-button:disabled{opacity:.34!important;cursor:not-allowed!important;filter:grayscale(1)}
#settings-button:disabled:hover,.metric-alarm-button:disabled:hover{background:var(--panel);box-shadow:none}

/* State indicator dots: OFF is intentionally subdued; active states are brighter and easier to distinguish. */
:root{
  --status-off:#3b5960;
  --status-ok:#79f2ad;
  --status-danger:#ff7a7a;
  --status-warning:#ffdc78;
}
.badge i{
  width:11px;height:11px;flex:0 0 11px;
  background:var(--status-off);
  box-shadow:inset 0 0 0 1px rgba(1,18,23,.7);
}
.badge.mail-off i{
  background:var(--status-off);
  box-shadow:inset 0 0 0 1px rgba(1,18,23,.78);
}
.badge.online i{
  background:var(--status-ok);
  box-shadow:0 0 0 2px rgba(121,242,173,.16),0 0 9px rgba(121,242,173,.42);
}
.badge.offline i,.badge.alarm i{
  background:var(--status-danger);
  box-shadow:0 0 0 2px rgba(255,122,122,.16),0 0 9px rgba(255,122,122,.42);
}
.badge.warning i{
  background:var(--status-warning);
  box-shadow:0 0 0 2px rgba(255,220,120,.14),0 0 8px rgba(255,220,120,.34);
}

html[data-theme="light"]{
  --status-off:#4e6970;
  --status-ok:#18ad6e;
  --status-danger:#e34850;
  --status-warning:#b97a00;
}
html[data-theme="light"] .settings-lock-button{box-shadow:0 3px 10px rgba(31,72,82,.04)}
html[data-theme="light"] .settings-lock-button.locked{
  background:#b8d9ca;border-color:#17885c;
  box-shadow:0 0 0 2px rgba(23,136,92,.14),0 0 12px rgba(23,136,92,.16)
}
html[data-theme="light"] .settings-lock-button.unlocked{background:#aebdc1;border-color:#647c82}
html[data-theme="light"] .badge i,
html[data-theme="light"] .badge.mail-off i{
  background:var(--status-off);
  box-shadow:inset 0 0 0 1px rgba(14,48,56,.35);
}
html[data-theme="light"] .badge.online i{
  background:var(--status-ok);
  box-shadow:0 0 0 2px rgba(24,173,110,.16),0 0 7px rgba(24,173,110,.28);
}
html[data-theme="light"] .badge.offline i,
html[data-theme="light"] .badge.alarm i{
  background:var(--status-danger);
  box-shadow:0 0 0 2px rgba(227,72,80,.15),0 0 7px rgba(227,72,80,.25);
}
html[data-theme="light"] .badge.warning i{
  background:var(--status-warning);
  box-shadow:0 0 0 2px rgba(185,122,0,.13),0 0 6px rgba(185,122,0,.22);
}
html[data-contrast="high"] .settings-lock-button{border-width:2px}
html[data-contrast="high"] .badge.online i{box-shadow:0 0 0 2px rgba(255,255,255,.42),0 0 11px rgba(121,242,173,.65)}
html[data-contrast="high"] .badge.offline i,
html[data-contrast="high"] .badge.alarm i{box-shadow:0 0 0 2px rgba(255,255,255,.42),0 0 11px rgba(255,122,122,.65)}
html[data-contrast="high"] .badge.warning i{box-shadow:0 0 0 2px rgba(255,255,255,.38),0 0 10px rgba(255,220,120,.58)}
html[data-theme="light"][data-contrast="high"] .badge.online i{box-shadow:0 0 0 2px rgba(4,47,40,.42),0 0 8px rgba(24,173,110,.38)}
html[data-theme="light"][data-contrast="high"] .badge.offline i,
html[data-theme="light"][data-contrast="high"] .badge.alarm i{box-shadow:0 0 0 2px rgba(69,15,20,.38),0 0 8px rgba(227,72,80,.34)}
html[data-theme="light"][data-contrast="high"] .badge.warning i{box-shadow:0 0 0 2px rgba(76,49,0,.34),0 0 7px rgba(185,122,0,.3)}

@media(max-width:650px){
  .badge i{width:9px;height:9px;flex-basis:9px}
  .settings-lock-button{width:40px;height:40px;flex-basis:40px}
}


/* v1.7.7 DO calibration full-range curve */
.dialog-head h2{display:flex;align-items:center;gap:10px;min-width:0}
.calibration-chart-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 40px;padding:7px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2,#0c3944);cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.calibration-chart-button:hover,.calibration-chart-button:focus-visible{transform:translateY(-1px);border-color:var(--chart-do);outline:none}
.calibration-chart-button img{width:25px;height:25px;display:block}
.calibration-curve-overlay{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(2,18,24,.82);backdrop-filter:blur(3px);border-radius:inherit}
.calibration-curve-dialog{width:min(920px,100%);max-height:100%;overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--bg,#061e27);box-shadow:0 20px 55px rgba(0,0,0,.38);padding:18px}
.calibration-curve-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.calibration-curve-head h3{margin:0;font-size:1.35rem;color:var(--text)}
.calibration-curve-head p{margin:5px 0 0;color:var(--muted);font-size:.9rem}
.calibration-curve-meta{display:flex;flex-wrap:wrap;gap:8px 18px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2,#0c3944);color:var(--muted);font-size:.86rem}
.calibration-curve-meta b{color:var(--text);font-weight:700}
.calibration-curve-canvas{height:420px;margin:14px 0 9px;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--panel,#082b35)}
.calibration-curve-legend{display:flex;gap:18px;flex-wrap:wrap;color:var(--text);font-size:.88rem}
.curve-key{display:inline-flex;align-items:center;gap:7px}.curve-key:before{content:"";display:inline-block}.curve-line:before{width:28px;height:3px;border-radius:4px;background:var(--chart-do)}.curve-point:before{width:11px;height:11px;border:2px solid var(--text);border-radius:50%;background:var(--ok)}
.calibration-curve-note{margin:10px 0 0;color:var(--muted);font-size:.82rem;line-height:1.45}
html[data-theme="light"] .calibration-curve-overlay{background:rgba(15,46,53,.42)}
html[data-theme="light"] .calibration-curve-dialog{background:var(--bg)}
@media(max-width:650px){.calibration-chart-button{width:36px;height:36px;flex-basis:36px;padding:6px}.calibration-chart-button img{width:22px;height:22px}.calibration-curve-overlay{padding:8px}.calibration-curve-dialog{padding:12px;border-radius:14px}.calibration-curve-canvas{height:320px;padding:6px}.calibration-curve-meta{gap:6px 12px;font-size:.78rem}.calibration-curve-head h3{font-size:1.12rem}.calibration-curve-head p{font-size:.8rem}}

/* v1.7.9 - uninterrupted calibration guard + clearer nonlinear calibration visualization */
:root{
  --curve-point-1:#58aaff;
  --curve-point-2:#62d9ed;
  --curve-point-3:#65e09a;
  --curve-point-4:#ffd166;
  --curve-point-5:#ff7a7a;
}
html[data-theme="light"]{
  --curve-point-1:#1769aa;
  --curve-point-2:#087b8c;
  --curve-point-3:#11744e;
  --curve-point-4:#9a6500;
  --curve-point-5:#b83238;
}
.calibration-curve-dialog{width:min(920px,100%)}
.calibration-curve-meta{align-items:center}
.calibration-curve-meta>span{display:inline-flex;align-items:center;gap:4px}
.curve-meta-status{padding:4px 9px;border:1px solid var(--line);border-radius:999px;font-weight:700}
.curve-meta-status.staged{color:var(--warn);border-color:var(--warn);background:var(--panel2)}
.curve-meta-status.applied{color:var(--ok);border-color:var(--ok);background:var(--panel2)}
.calibration-curve-visual{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:12px;margin:14px 0 10px;align-items:stretch}
.calibration-curve-canvas{height:420px;margin:0;padding:10px;overflow:hidden;background:linear-gradient(180deg,var(--panel2),var(--panel))}
.calibration-curve-side{display:flex;flex-direction:column;gap:10px;min-width:0}
.calibration-curve-side>section{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:11px}
.calibration-curve-side h4{margin:0 0 9px;font-size:.84rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.calibration-point-list{display:grid;gap:7px}
.calibration-point-chip{--point-color:var(--ok);display:grid;grid-template-columns:10px 30px 1fr;grid-template-areas:"dot point raw" "dot value value";column-gap:7px;align-items:center;padding:7px 8px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);box-shadow:inset 3px 0 0 var(--point-color);font-variant-numeric:tabular-nums}
.calibration-point-chip i{grid-area:dot;width:9px;height:9px;border-radius:50%;background:var(--point-color);box-shadow:0 0 0 2px rgba(255,255,255,.08)}
.calibration-point-chip strong{grid-area:point;color:var(--point-color);font-size:.84rem}
.calibration-point-chip span{grid-area:raw;color:var(--muted);font-size:.74rem;text-align:right}
.calibration-point-chip b{grid-area:value;color:var(--text);font-size:.9rem;font-weight:800;text-align:right}
.point-c1{--point-color:var(--curve-point-1)}.point-c2{--point-color:var(--curve-point-2)}.point-c3{--point-color:var(--curve-point-3)}.point-c4{--point-color:var(--curve-point-4)}.point-c5{--point-color:var(--curve-point-5)}
.calibration-fit-card{margin-top:auto}
.calibration-fit-card>div{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-top:1px solid var(--line)}
.calibration-fit-card>div:first-of-type{border-top:0}
.calibration-fit-card span{color:var(--muted);font-size:.75rem}.calibration-fit-card strong{color:var(--text);font-size:.82rem;text-align:right;font-variant-numeric:tabular-nums}
.calibration-curve-empty{margin:0;color:var(--muted);font-size:.78rem;line-height:1.4}
.calibration-curve-legend{gap:10px 18px;padding:2px 0}
.curve-key:before{flex:0 0 auto}
.curve-line:before{width:30px;height:4px;border-radius:4px;background:var(--chart-do)}
.curve-trend:before{width:30px;height:3px;background:repeating-linear-gradient(90deg,var(--warn) 0 8px,transparent 8px 13px)}
.curve-point:before{width:12px;height:12px;border:2px solid var(--text);border-radius:50%;background:linear-gradient(135deg,var(--curve-point-1),var(--curve-point-5))}
.curve-deviation:before{width:30px;height:2px;background:repeating-linear-gradient(90deg,var(--danger) 0 3px,transparent 3px 7px)}
html[data-contrast="high"] .calibration-point-chip{border-width:2px}
html[data-contrast="high"] .calibration-curve-canvas,html[data-contrast="high"] .calibration-curve-side>section{border-width:2px}
@media(max-width:760px){
  .calibration-curve-visual{grid-template-columns:1fr}
  .calibration-curve-side{display:grid;grid-template-columns:1fr 1fr}
  .calibration-fit-card{margin-top:0}
}
@media(max-width:650px){
  .calibration-curve-canvas{height:330px}
  .calibration-curve-side{grid-template-columns:1fr}
  .calibration-point-list{grid-template-columns:1fr 1fr}
  .calibration-point-chip{grid-template-columns:9px 28px 1fr;padding:6px 7px}
  .calibration-curve-legend{font-size:.78rem;gap:8px 13px}
}
@media(max-width:420px){
  .calibration-point-list{grid-template-columns:1fr}
  .calibration-curve-canvas{height:300px}
}


/* v1.8.1 - first-use User License Agreement gate */
.eula-wrap{
 min-height:100vh;min-height:100dvh;padding:14px;display:grid;place-items:center;
 background:radial-gradient(circle at 50% 0%,#11515f55,transparent 42%)
}
.eula-card{
 width:min(980px,100%);max-height:calc(100dvh - 28px);display:flex;flex-direction:column;overflow:hidden;
 background:linear-gradient(160deg,var(--panel2),var(--bg) 55%);border:1px solid var(--line);border-radius:22px;
 box-shadow:0 24px 70px #0008
}
.eula-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;border-bottom:1px solid var(--line);background:#082d37ee}
.eula-brand{display:flex;align-items:center;gap:13px;min-width:0}.eula-logo{width:54px;height:54px;object-fit:contain;flex:0 0 54px}.eula-brand div{display:grid;gap:3px;min-width:0}.eula-brand strong{font-size:1.3rem}.eula-brand span{color:var(--muted);font-size:.94rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eula-language{display:grid;grid-template-columns:auto minmax(170px,220px);align-items:center;gap:10px;color:var(--muted);font-size:.96rem;font-weight:800;white-space:nowrap}.eula-language select{width:100%;min-height:48px;border:1px solid var(--line);border-radius:11px;background:#efffff;color:#08252d;padding:9px 11px;font-size:1rem;font-weight:750}
.eula-content{overflow:auto;padding:24px 26px 18px;scrollbar-gutter:stable;outline:none}.eula-content:focus-visible{box-shadow:inset 0 0 0 2px var(--chart-do)}.eula-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.eula-title-row h1{margin:0;font-size:clamp(1.9rem,3.4vw,2.45rem);line-height:1.12}.eula-version{margin:7px 0 0;color:var(--muted);font-size:.96rem}.eula-badge{padding:8px 13px;border:1px solid var(--line);border-radius:999px;color:var(--ok);font-size:.9rem;font-weight:900;letter-spacing:.05em;white-space:nowrap}.eula-intro{margin:20px 0;padding:16px 18px;border-left:4px solid var(--chart-do);border-radius:0 12px 12px 0;background:#0f4350;color:var(--text);line-height:1.58;font-size:1.08rem}
.eula-clauses{display:grid;grid-template-columns:1fr;gap:12px}.eula-clause{padding:16px 18px;border:1px solid #24667599;border-left:4px solid #3997a8;border-radius:13px;background:#0a323d}.eula-clause h3{margin:0 0 7px;font-size:1.16rem;color:var(--text);font-weight:850}.eula-clause p{margin:0;color:var(--muted);font-size:1.04rem;line-height:1.58}
.eula-accept-note{margin-top:15px;padding:15px 17px;border:1px solid #65e09a88;border-radius:12px;background:#153e38}.eula-accept-note strong{color:var(--ok);font-size:1.08rem}.eula-accept-note p{margin:6px 0 0;font-size:1.02rem;line-height:1.52}
.eula-support{margin-top:13px;display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:start;padding:15px 17px;border:1px solid #54d7e888;border-radius:12px;background:#0c3743}.eula-support-mark{width:38px;height:38px;display:grid;place-items:center;border:1px solid #58dcedaa;border-radius:10px;color:var(--chart-do);font-size:1.22rem;font-weight:900}.eula-support h3{margin:0 0 4px;font-size:1.08rem}.eula-support p{margin:0 0 6px;color:var(--muted);font-size:.98rem;line-height:1.48}.eula-support a{display:inline-block;color:var(--chart-do);font-size:1.02rem;font-weight:850;text-decoration:none;border-bottom:1px solid #6ee9f588;overflow-wrap:anywhere}.eula-support a:hover,.eula-support a:focus-visible{color:#bdf8ff;border-bottom-color:currentColor}
.eula-storage{margin:12px 2px 2px;color:var(--muted);font-size:.9rem;line-height:1.45}
.eula-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:11px;padding:12px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#082d37f5}.eula-scroll-state{grid-column:1/-1;min-height:24px;text-align:center;color:#ffd166;font-size:.94rem;font-weight:800;line-height:1.35}.eula-scroll-state.ready{color:var(--ok)}.eula-actions button{min-height:54px;font-size:1.08rem;font-weight:850}.eula-disagree{border-color:#ff666688;color:#ffb2b2}.eula-agree{box-shadow:0 0 0 1px #65e09a44,0 8px 20px #0c806033}.eula-agree:disabled{opacity:.38;cursor:not-allowed;filter:grayscale(.7);box-shadow:none}.eula-agree:not(:disabled){animation:eula-ready-glow .45s ease-out}@keyframes eula-ready-glow{0%{box-shadow:0 0 0 0 #65e09a00}55%{box-shadow:0 0 0 5px #65e09a33}100%{box-shadow:0 0 0 1px #65e09a44,0 8px 20px #0c806033}}
.eula-declined{width:min(560px,100%);padding:30px;text-align:center;align-items:center;gap:12px;overflow:auto}.eula-declined .eula-logo{width:76px;height:76px}.eula-declined h1{margin:4px 0 0;font-size:2rem}.eula-declined p{margin:0 0 8px;color:var(--muted);font-size:1.05rem;line-height:1.55}.eula-declined .primary{width:min(340px,100%);min-height:52px;font-size:1.05rem}
html[data-theme="light"] .eula-wrap{background:radial-gradient(circle at 50% 0%,#5b9ba744,transparent 44%)}
html[data-theme="light"] .eula-card{background:linear-gradient(160deg,#e4edef,var(--bg) 58%);box-shadow:0 24px 60px #37596344}
html[data-theme="light"] .eula-head,html[data-theme="light"] .eula-actions{background:#d3e1e4f2}
html[data-theme="light"] .eula-intro{background:#d4e4e8;color:var(--text)}
html[data-theme="light"] .eula-clause{background:#dce8eb;border-color:#6f969f;border-left-color:#147e91}.eula-clause h3{font-weight:850}
html[data-theme="light"] .eula-accept-note{background:#d5e8df;border-color:#3b8b68}
html[data-theme="light"] .eula-support{background:#d7e7ea;border-color:#368b99}.eula-declined{background:var(--panel)}
html[data-theme="light"] .eula-support a{color:#075d6a;border-bottom-color:#075d6a88}html[data-theme="light"] .eula-support a:hover,html[data-theme="light"] .eula-support a:focus-visible{color:#003e49}
html[data-contrast="high"] .eula-card,html[data-contrast="high"] .eula-clause,html[data-contrast="high"] .eula-intro,html[data-contrast="high"] .eula-accept-note,html[data-contrast="high"] .eula-support{border-width:2px}
@media(max-width:700px){
 .eula-wrap{padding:0;place-items:stretch}.eula-card{width:100%;max-height:100dvh;min-height:100dvh;border-radius:0;border-left:0;border-right:0}
 .eula-head{align-items:stretch;flex-direction:column;padding:12px 14px;gap:10px}.eula-logo{width:46px;height:46px;flex-basis:46px}.eula-brand strong{font-size:1.16rem}.eula-brand span{font-size:.84rem}.eula-language{grid-template-columns:auto 1fr;font-size:.9rem}.eula-language select{min-height:46px;font-size:.98rem}
 .eula-content{padding:17px 14px 13px}.eula-title-row{gap:8px}.eula-title-row h1{font-size:1.72rem}.eula-version{font-size:.88rem}.eula-badge{display:none}.eula-intro{margin:14px 0;padding:13px 14px;font-size:1rem}.eula-clauses{gap:9px}.eula-clause{padding:13px 14px}.eula-clause h3{font-size:1.08rem}.eula-clause p{font-size:.98rem;line-height:1.52}.eula-accept-note{padding:13px 14px}.eula-accept-note p{font-size:.96rem}.eula-support{grid-template-columns:36px 1fr;padding:13px 14px;gap:10px}.eula-support-mark{width:34px;height:34px}.eula-support p{font-size:.94rem}.eula-support a{font-size:.98rem}.eula-storage{font-size:.84rem}.eula-actions{padding:9px 12px calc(10px + env(safe-area-inset-bottom));grid-template-columns:1fr 1.35fr;gap:9px}.eula-scroll-state{font-size:.86rem;min-height:20px}.eula-actions button{padding:8px 10px;min-height:50px;font-size:1rem}.eula-declined{min-height:100dvh;justify-content:center;padding:24px}
}
@media(max-width:390px){.eula-language{grid-template-columns:1fr}.eula-language>span{display:none}.eula-actions{grid-template-columns:1fr 1fr}.eula-title-row h1{font-size:1.58rem}}

/* v1.8.3 startup splash and local Settings switch */
.startup-splash{
 position:fixed;inset:0;z-index:1000;display:grid;place-items:center;
 min-height:100dvh;padding:calc(18px + env(safe-area-inset-top)) 18px calc(18px + env(safe-area-inset-bottom));
 overflow:hidden;background:
  radial-gradient(circle at 50% 34%,#1f73804d 0,transparent 38%),
  linear-gradient(180deg,#0c4653 0%,#072934 40%,#061e27 100%);
 color:#ecfbfc;opacity:1;visibility:visible;transition:opacity .3s ease,visibility 0s linear .3s;
}
.startup-splash.leaving{opacity:0;visibility:hidden;pointer-events:none}
/* Web 1.8.55: keep splash content invisible until both local WebP frames are ready.
   This prevents Firefox/other browsers from flashing an <img> fallback icon or alt text on F5. */
.startup-splash-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;text-align:center;transform:translateY(-1vh);opacity:0;visibility:hidden;transition:opacity .14s ease,transform .3s ease,visibility 0s linear .14s}
.startup-splash.ready .startup-splash-inner{opacity:1;visibility:visible;transition:opacity .14s ease,transform .3s ease,visibility 0s}
.startup-splash.leaving .startup-splash-inner{opacity:0;visibility:hidden;transform:translateY(-1vh) scale(.99)}
.startup-splash-art-wrap{position:relative;display:inline-block;max-width:100%;line-height:0}
.startup-splash-art-wrap .startup-splash-art{display:block;width:min(60vw,630px);height:auto;max-height:64vh;object-fit:contain;filter:drop-shadow(0 18px 32px #00151c78);opacity:0}
.startup-splash-art-wrap .startup-splash-art.loaded{opacity:1}
.startup-splash.art-failed .startup-splash-art-wrap{display:none}
.startup-splash-wink-frame{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;opacity:0;z-index:2;will-change:opacity}
.startup-splash-wink-frame.loaded{display:block}
.startup-splash-copy{display:grid;gap:7px;margin-top:1.25em;line-height:1.18;text-shadow:0 2px 18px #001318aa}
.startup-splash-copy strong{font-size:clamp(1.45rem,3.2vw,2.15rem);font-weight:900;letter-spacing:.015em;color:#f1fdff}
.startup-splash-copy strong span{color:#73e4ef;font-weight:850}
.startup-splash-copy>span{font-size:clamp(.95rem,1.9vw,1.2rem);font-weight:650;letter-spacing:.045em;color:#b9dce1}
.startup-splash-domain{display:flex;align-items:center;justify-content:center;min-height:1.45em;margin-top:.72em;font-size:clamp(1.02rem,2.15vw,1.34rem);font-weight:850;letter-spacing:.105em;color:#5ee6ad;text-shadow:0 0 18px #39d99726,0 2px 14px #0013189c}
.startup-splash-domain-text{white-space:pre}
.startup-splash-domain-caret{display:inline-block;margin-left:.08em;color:#9ff4ce;animation:splash-domain-caret .72s steps(1,end) infinite}
.startup-splash-domain-caret.done{opacity:0;animation:none;transition:opacity .18s ease}
@keyframes splash-domain-caret{0%,48%{opacity:1}49%,100%{opacity:.12}}
@media(prefers-reduced-motion:reduce){.startup-splash-domain-caret{animation:none;opacity:0}}
.settings-splash-card{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(135deg,var(--panel2),var(--panel))}
.settings-splash-card h3{margin:0 0 5px;font-size:1rem}.settings-splash-card p{margin:0;color:var(--muted);font-size:.84rem;line-height:1.42;max-width:520px}
.settings-splash-switch{flex:0 0 auto}.settings-splash-switch>span{min-width:34px}
html[data-theme="light"] .settings-splash-card{background:linear-gradient(180deg,#e4edef,#d9e6e9);box-shadow:0 8px 18px rgba(18,57,66,.06)}
html[data-contrast="high"] .settings-splash-card{border-width:2px}
@media(max-width:650px){
 .startup-splash-art-wrap .startup-splash-art{width:min(60vw,390px);max-height:58vh}
 .startup-splash-copy{margin-top:1.15em}.startup-splash-copy strong{font-size:1.38rem}.startup-splash-copy>span{font-size:.92rem}.startup-splash-domain{font-size:1rem;margin-top:.68em;letter-spacing:.09em}
 .settings-splash-card{align-items:stretch;flex-direction:column;gap:11px}.settings-splash-switch{justify-content:center}
}

/* v1.8.6 - ADMIN-only backup/restore + About EULA/Q&A resources */
.about-resources{border-color:#2f7885}
.about-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px}
.about-action-grid button{min-height:62px;display:flex;align-items:center;justify-content:center;gap:9px;text-align:center}
.about-action-symbol{width:30px;height:30px;display:inline-grid;place-items:center;flex:0 0 30px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--chart-do);font-size:1.08rem;font-weight:900;line-height:1}
.about-reset-eula{border-color:#8d6d45!important}
.about-reset-eula .about-action-symbol{color:var(--warn);border-color:#8d6d45}

.eula-review-toolbar{display:flex;justify-content:flex-end;margin:0 0 12px}
.eula-review-toolbar .eula-language{width:min(430px,100%)}
.eula-review-content{padding:4px 2px 2px}
.eula-review-content .eula-title-row h1{font-size:clamp(1.55rem,3vw,2rem)}
.eula-review-content .eula-intro{margin-top:16px}

.qa-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:4px 2px 14px}
.qa-head p{margin:0;color:var(--muted);line-height:1.45}
.qa-role{flex:0 0 auto;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--ok);font-size:.8rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em}
.qa-list{display:grid;gap:9px}
.qa-item{border:1px solid var(--line);border-radius:13px;background:var(--panel);overflow:hidden}
.qa-item summary{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;padding:13px 14px;cursor:pointer;list-style:none;user-select:none}
.qa-item summary::-webkit-details-marker{display:none}
.qa-item summary>span{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--chart-do);font-size:.78rem;font-weight:900;font-variant-numeric:tabular-nums}
.qa-item summary strong{color:var(--text);font-size:.98rem;line-height:1.3}
.qa-item[open] summary{border-bottom:1px solid var(--line);background:var(--panel2)}
.qa-item p{margin:0;padding:13px 16px 15px 62px;color:var(--muted);line-height:1.58;font-size:.94rem}
.qa-summary{margin-top:12px;padding:15px 17px;border:1px solid #65e09a88;border-radius:13px;background:#153e38}
.qa-summary strong{display:block;margin-bottom:5px;color:var(--ok);font-size:.86rem;text-transform:uppercase;letter-spacing:.05em}
.qa-summary p{margin:0;color:var(--text);font-weight:750;line-height:1.5}

html[data-theme="light"] .about-action-symbol{background:#d4e2e6;color:#075d6a}
html[data-theme="light"] .qa-role{background:#d4e2e6;color:#11744e}
html[data-theme="light"] .qa-item{background:#e4edef}
html[data-theme="light"] .qa-item[open] summary,
html[data-theme="light"] .qa-item summary>span{background:#d4e2e6}
html[data-theme="light"] .qa-summary{background:#d5e8df;border-color:#3b8b68}

@media(max-width:650px){
 .about-action-grid{grid-template-columns:1fr}
 .about-action-grid button{min-height:56px;justify-content:flex-start;padding-left:18px}
 .eula-review-toolbar{justify-content:stretch}
 .eula-review-toolbar .eula-language{width:100%;grid-template-columns:auto 1fr}
 .eula-review-content .eula-title-row h1{font-size:1.5rem}
 .qa-head{align-items:flex-start;flex-direction:column}
 .qa-item summary{grid-template-columns:34px minmax(0,1fr);padding:12px}
 .qa-item summary>span{width:30px;height:30px}
 .qa-item p{padding:12px 13px 14px 56px;font-size:.92rem}
}

/* v1.8.39 - larger vivid thresholds; crossed bell when both metric alarm limits are disabled */
.metric-alarm-head{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex:0 0 auto;
  min-width:0;
}
.metric-thresholds{
  min-width:68px;
  display:grid;
  gap:3px;
  align-content:center;
  font-variant-numeric:tabular-nums;
}
.metric-threshold{
  display:flex;
  align-items:baseline;
  justify-content:flex-end;
  gap:4px;
  min-width:0;
  padding:1px 3px;
  border-radius:6px;
  font-size:.94rem;
  font-weight:900;
  line-height:1.05;
  white-space:nowrap;
}
.metric-threshold i{
  width:13px;
  flex:0 0 13px;
  font-style:normal;
  font-size:.96em;
  font-weight:950;
  text-align:center;
}
.metric-threshold b{font:inherit;letter-spacing:-.01em}
.metric-threshold-low.is-on{color:#63b5ff;background:rgba(88,170,255,.07)}
.metric-threshold-high.is-on{color:#ff7373;background:rgba(255,102,102,.07)}
/* Web 1.8.54: disabled limit values are grey; enabled limits keep their established low/high colors. */
.metric-threshold-low.is-off,.metric-threshold-high.is-off{color:#7f969c;background:rgba(127,150,156,.055);opacity:.82}
.metric-threshold.is-off i,.metric-threshold.is-off b{color:inherit}
html[data-theme="light"] .metric-threshold-low.is-on{color:#176fc1;background:rgba(23,111,193,.07)}
html[data-theme="light"] .metric-threshold-high.is-on{color:#c83f43;background:rgba(200,63,67,.07)}
html[data-theme="light"] .metric-threshold-low.is-off,html[data-theme="light"] .metric-threshold-high.is-off{color:#73878b;background:rgba(90,112,117,.06);opacity:.9}
html[data-contrast="high"] .metric-threshold-low.is-on{color:#78c3ff}
html[data-contrast="high"] .metric-threshold-high.is-on{color:#ff8484}
html[data-contrast="high"] .metric-threshold-low.is-off,html[data-contrast="high"] .metric-threshold-high.is-off{color:#a4b5b9;opacity:.9}
html[data-theme="light"][data-contrast="high"] .metric-threshold-low.is-on{color:#075fae}
html[data-theme="light"][data-contrast="high"] .metric-threshold-high.is-on{color:#b3262c}
html[data-theme="light"][data-contrast="high"] .metric-threshold-low.is-off,html[data-theme="light"][data-contrast="high"] .metric-threshold-high.is-off{color:#596d72;opacity:1}
@media(max-width:650px){
  .metric-alarm-head{gap:5px}
  .metric-thresholds{min-width:64px;gap:2px}
  .metric-threshold{font-size:.9rem;padding-left:2px;padding-right:2px}
}
@media(max-width:390px){
  .metric-alarm-head{gap:3px}
  .metric-thresholds{min-width:60px}
  .metric-threshold{font-size:.84rem;gap:2px}
  .metric-threshold i{width:11px;flex-basis:11px}
}


/* v1.8.9 - safer spacing between Instant read and Settings lock; oxyguard.ro product identity */
.status-strip .settings-lock-button{margin-left:34px}
.product-site-link{display:block;width:max-content;margin-top:5px;color:#8de4ec;text-decoration:none;font-weight:800}
.product-site-link:hover,.product-site-link:focus-visible{text-decoration:underline;outline:none}
.app-footer-meta{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}
.app-footer-meta a{color:#8de4ec;text-decoration:none;font-weight:800;white-space:nowrap}
.app-footer-meta a:hover,.app-footer-meta a:focus-visible{text-decoration:underline;outline:none}
html[data-theme="light"] .product-site-link,html[data-theme="light"] .app-footer-meta a{color:#075a68}
@media(max-width:650px){
  .status-strip .settings-lock-button{margin-left:30px}
  .app-footer-meta{justify-content:flex-end}
}
@media(max-width:390px){
  .status-strip .settings-lock-button{margin-left:26px}
  .app-footer-meta{justify-content:center;flex-wrap:wrap}
}

/* OxyGuard co-brand lockup: AET  &  Erma. Keep colors/size unchanged; Erma uses Times New Roman Bold. */
:root{--oxyguard-brand:#36c5f0;--ermoxy-erm:#f8fafc;--ermoxy-oxy:#36c5f0;--aet-red:#e30613;--cobrand-ink:#090909;--cobrand-paper:#f6f5f1;--cobrand-border:#d8d5cd}
.co-brand-mark{display:inline-flex;align-items:baseline;white-space:nowrap;padding:.18em .48em;border:1px solid var(--cobrand-border);border-radius:5px;background:var(--cobrand-paper);color:var(--cobrand-ink)!important;font-weight:900;letter-spacing:.055em;line-height:1.08;text-shadow:none!important;box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 1px 3px rgba(0,0,0,.16)}
.co-brand-mark span{color:var(--cobrand-ink)!important}.co-brand-mark .co-brand-e{color:var(--aet-red)!important}.co-brand-mark .co-brand-erma{font-family:"Times New Roman","Liberation Serif",Times,serif!important;font-weight:400!important;font-style:normal!important;font-size:1em!important;letter-spacing:0!important;font-synthesis:none!important;text-transform:none!important}.co-brand-splash{font-size:.94em;margin-left:.28em;vertical-align:middle}.co-brand-compact{font-size:.78em;padding:.15em .4em}.product-brand-line{display:inline-flex;align-items:center;gap:9px;min-width:0}.product-brand-name,.about-product-title{font-weight:900}.about-product-title{margin:0 0 6px}.ermoxy-name{display:inline;direction:ltr;unicode-bidi:isolate;font-style:normal;font-weight:900;letter-spacing:.01em;white-space:nowrap}.ermoxy-name .ermoxy-erm{color:var(--ermoxy-erm)!important}.ermoxy-name .ermoxy-oxy{color:var(--ermoxy-oxy)!important}.login-brand-name,.about-brand-name{font-size:inherit}.header-brand-name{font-size:inherit}.about-cobrand{margin-bottom:8px}.startup-splash-credit{display:flex;align-items:center;justify-content:center;gap:.1em;flex-wrap:wrap}.app-footer .product-brand-line,.about-footer .product-brand-line{flex:0 0 auto}
html[data-theme="light"] .co-brand-mark{background:#fff;border-color:#c8c5bd}
@media(max-width:650px){.co-brand-splash{margin-left:.18em}.product-brand-line{gap:6px}.app-footer .co-brand-compact{font-size:.7em}}

.eula-brand-lockup{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.eula-brand-lockup .product-brand-name{font-size:1.3rem}

.header .brand>span:not(.ermoxy-name){color:var(--oxyguard-brand)!important}.login-card h1{color:inherit}

/* v1.8.22 - subscription lifecycle and read-only account state */
.badge.subscription-locked{border-color:#a85d64;background:#4a2229;color:#ffd9dc}
.badge.subscription-locked i{background:#ff7f8b;box-shadow:0 0 0 3px #ff7f8b22}
.subscription-dialog{width:min(560px,100%)}
.subscription-notice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:15px;align-items:start;padding:16px;border:1px solid var(--line);border-radius:15px;background:#092e38}
.subscription-notice-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:#123e49;font-size:1.55rem;line-height:1}
.subscription-notice-copy{min-width:0}
.subscription-notice-copy>strong{display:block;margin:1px 0 6px;font-size:1.15rem;color:var(--text)}
.subscription-notice-copy p{margin:0;color:#b6ccd1;line-height:1.48}
.subscription-notice-meta{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:12px;color:#8fb0b7;font-size:.82rem}
.subscription-notice-meta b{color:#d9edf0}
.subscription-readonly-note{margin-top:12px;padding:9px 11px;border:1px solid #8f4a53;border-radius:10px;background:#442128;color:#ffd8dc;font-size:.84rem;font-weight:700;line-height:1.4}
.subscription-expiring{border-color:#8b782f;background:#342f16}
.subscription-expiring .subscription-notice-icon{background:#564a1f}
.subscription-grace{border-color:#9a6033;background:#3b2819}
.subscription-grace .subscription-notice-icon{background:#5a3820}
.subscription-expired,.subscription-suspended{border-color:#914b54;background:#3a2026}
.subscription-expired .subscription-notice-icon,.subscription-suspended .subscription-notice-icon{background:#572a31}
.settings-menu button:disabled,.action-grid button:disabled{opacity:.38;cursor:not-allowed;filter:grayscale(.75)}
html[data-theme="light"] .subscription-notice{background:#e7f0f2}
html[data-theme="light"] .subscription-notice-copy p{color:#496a72}
html[data-theme="light"] .subscription-notice-meta{color:#56757c}
html[data-theme="light"] .subscription-notice-meta b{color:#173941}
html[data-theme="light"] .subscription-expiring{background:#fff5cd}
html[data-theme="light"] .subscription-grace{background:#ffead8}
html[data-theme="light"] .subscription-expired,html[data-theme="light"] .subscription-suspended{background:#ffe4e7}
@media(max-width:650px){.subscription-notice{grid-template-columns:1fr;gap:10px}.subscription-notice-icon{width:44px;height:44px}.subscription-notice-meta{display:grid;gap:5px}}
html[data-theme="light"] .badge.subscription-locked{background:#f6d9dd;border-color:#c77c85;color:#7f2732}
html[data-theme="light"] .badge.subscription-locked i{background:#c94f5d}


/* v1.8.24 - subscription account page */
.subscription-detail-card{display:grid;gap:14px}
.subscription-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 15px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.subscription-detail-head div{display:grid;gap:3px}.subscription-detail-head span{color:var(--muted);font-size:.8rem;font-weight:700}.subscription-detail-head strong{font-size:1.35rem}
.subscription-plan-chip{padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--text)!important;font-size:.85rem!important;font-weight:900!important}
.subscription-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;border:1px solid var(--line);border-radius:14px;padding:6px 12px;background:#082f39}
.subscription-renewal{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.subscription-renewal strong{display:block;margin-bottom:5px}.subscription-renewal p{margin:0 0 12px;color:var(--muted);line-height:1.45}
.subscription-contact{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:44px;padding:9px 14px;border-radius:11px;font-weight:800}
html[data-theme="light"] .subscription-detail-grid{background:#edf5f6}
@media(max-width:650px){.subscription-detail-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:1fr 1fr}}
@media(max-width:390px){.action-grid{grid-template-columns:1fr}}

/* v1.8.30 - device event log and balanced status tools */
.status-tools{margin-left:auto;display:flex;align-items:center;gap:8px}
.status-tools .settings-lock-button,.status-tools .user-info-button{margin-left:0}
.device-log-button{
  width:40px;height:40px;flex:0 0 40px;padding:6px;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);
  cursor:pointer;touch-action:manipulation;transition:border-color .16s ease,background .16s ease,filter .16s ease;
}
.device-log-button img{width:24px;height:24px;object-fit:contain}
.device-log-button:hover,.device-log-button:focus-visible{outline:none;border-color:var(--chart-do);filter:brightness(1.12)}
.device-log-dialog{width:min(900px,100%)}
.device-log-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.device-log-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.log-filter{display:flex;align-items:center;gap:7px;min-height:40px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-weight:800;cursor:pointer;user-select:none}
.log-filter input{width:17px;height:17px;margin:0;accent-color:currentColor}
.log-filter.info{color:var(--ok)}.log-filter.warning{color:var(--warn)}.log-filter.error{color:var(--danger)}
.device-log-refresh{display:flex;align-items:center;gap:7px;min-height:40px}.device-log-refresh img{width:20px;height:20px}
.device-log-range{color:var(--muted);font-size:.82rem;margin:3px 0 7px}
.device-log-status{min-height:1.35em;color:var(--muted);font-size:.82rem;margin-bottom:8px}
.device-log-list{max-height:58vh;overflow:auto;display:grid;gap:8px;padding-right:3px;overscroll-behavior:contain}
.device-log-entry{border:1px solid var(--line);border-left-width:5px;border-radius:12px;background:var(--panel);padding:10px 12px}
.device-log-entry.severity-info{border-left-color:var(--ok)}
.device-log-entry.severity-warning{border-left-color:var(--warn)}
.device-log-entry.severity-error{border-left-color:var(--danger)}
.device-log-entry-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.76rem;color:var(--muted)}
.device-log-level{font-weight:900;text-transform:uppercase;letter-spacing:.055em}
.device-log-entry.severity-info .device-log-level{color:var(--ok)}
.device-log-entry.severity-warning .device-log-level{color:var(--warn)}
.device-log-entry.severity-error .device-log-level{color:var(--danger)}
.device-log-entry-body{display:grid;gap:3px;margin-top:5px;overflow-wrap:anywhere}
.device-log-entry-body strong{color:var(--text);font-size:.96rem}
.device-log-entry-body span{color:var(--muted);font-size:.84rem;line-height:1.4}
.device-log-rid{font-family:ui-monospace,SFMono-Regular,Consolas,monospace!important;font-size:.72rem!important;opacity:.72}
.device-log-empty{min-height:150px;display:grid;place-items:center;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:13px;padding:20px}
html[data-theme="light"] .device-log-button{background:#d7e4e7;border-color:#467986}
html[data-theme="light"] .log-filter,html[data-theme="light"] .device-log-entry{background:#e5eff1}
@media(max-width:650px){
  .status-tools{gap:6px}
  .device-log-button{width:40px;height:40px;flex-basis:40px}
  .device-log-toolbar{align-items:stretch}.device-log-filters{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .log-filter{justify-content:center;padding:6px 7px;font-size:.78rem}.device-log-refresh{width:100%;justify-content:center}
  .device-log-list{max-height:61vh}
}


/* OxyGuard Web 1.8.38 — first-use Quick Tour */
.quick-tour-layer{position:fixed;inset:0;z-index:5000;pointer-events:auto;touch-action:none;font-family:Inter,"Segoe UI",Arial,sans-serif}
.quick-tour-shade{position:fixed;background:rgba(1,15,21,.78);backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px)}
.quick-tour-focus{position:fixed;border:2px solid rgba(101,224,154,.94);border-radius:18px;box-shadow:0 0 0 4px rgba(101,224,154,.13),0 0 34px rgba(67,201,145,.42);pointer-events:none;transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease}
.quick-tour-card{position:fixed;width:min(380px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:20px;border:1px solid var(--ok);border-radius:20px;background:linear-gradient(155deg,var(--panel2),var(--panel));color:var(--text);box-shadow:0 24px 70px rgba(0,0,0,.46);touch-action:auto}
.quick-tour-card-centered{left:50%!important;right:auto!important;top:50%!important;bottom:auto!important;transform:translate(-50%,-50%)}
.quick-tour-kicker{font-size:.76rem;font-weight:850;letter-spacing:.095em;text-transform:uppercase;color:var(--ok);margin-bottom:8px}
.quick-tour-progress{display:flex;align-items:center;gap:10px;margin-bottom:14px;color:var(--muted);font-size:.82rem;font-weight:700}
.quick-tour-progress-track{height:5px;flex:1;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.1)}
.quick-tour-progress-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#43c991,#5ed4df);transition:width .2s ease}
.quick-tour-card h2{margin:0 0 9px;font-size:1.34rem;line-height:1.2;color:var(--text)}
.quick-tour-card p{margin:0;color:var(--muted);font-size:.98rem;line-height:1.55}
.quick-tour-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px}
.quick-tour-nav{display:flex;gap:8px;margin-left:auto}
.quick-tour-actions button{min-height:42px;padding:8px 14px;border-radius:11px;font-weight:780;cursor:pointer}
.quick-tour-skip{border:0;background:transparent;color:var(--muted);padding-left:4px!important;padding-right:4px!important}
.quick-tour-skip:hover,.quick-tour-skip:focus-visible{color:var(--text)}
.quick-tour-card button:focus-visible{outline:3px solid rgba(94,212,223,.56);outline-offset:2px}
html[data-theme="light"] .quick-tour-shade{background:rgba(9,35,42,.58)}
html[data-theme="light"] .quick-tour-card{background:linear-gradient(155deg,#eef7f8,#dbeaed);box-shadow:0 24px 70px rgba(15,48,56,.28)}
@media(max-width:700px){.quick-tour-card{width:auto;max-height:min(46vh,390px);border-radius:18px;padding:17px}.quick-tour-card-centered{left:12px!important;right:12px!important;top:50%!important;width:auto!important;transform:translateY(-50%)}.quick-tour-card h2{font-size:1.18rem}.quick-tour-card p{font-size:.94rem}.quick-tour-actions{gap:8px}.quick-tour-nav{gap:6px}.quick-tour-actions button{min-height:44px;padding:8px 11px}}
@media(prefers-reduced-motion:reduce){.quick-tour-focus,.quick-tour-progress-track i{transition:none}}


/* v1.8.40 Quick Tour localization/layout hotfix */
.quick-tour-card{overflow-y:auto;overflow-x:hidden;max-width:calc(100vw - 32px);overscroll-behavior:contain}
.quick-tour-card>*{min-width:0}
.quick-tour-kicker,.quick-tour-progress span,.quick-tour-card h2,.quick-tour-card p{overflow-wrap:anywhere;word-break:normal}
.quick-tour-actions,.quick-tour-nav{min-width:0;max-width:100%}
.quick-tour-actions{flex-wrap:wrap}
.quick-tour-nav{flex-wrap:wrap}
.quick-tour-actions button{max-width:100%;white-space:nowrap}
@media(max-width:430px){
 .quick-tour-actions{align-items:stretch}
 .quick-tour-skip{width:100%;text-align:left}
 .quick-tour-nav{display:grid;grid-template-columns:1fr 1fr;width:100%;margin-left:0}
 .quick-tour-nav button{width:100%;min-width:0}
}


/* OxyGuard Web 1.8.41 — tutorial launcher and explicit auto-start preference */
.tutorial-button{
  width:40px;height:40px;flex:0 0 40px;padding:6px;border-radius:50%;
  display:grid;place-items:center;border:1px solid #317b87;background:#123d47;
  cursor:pointer;touch-action:manipulation;box-shadow:0 0 0 1px rgba(94,212,223,.08) inset;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,filter .16s ease;
}
.tutorial-button img{width:24px;height:24px;object-fit:contain}
.tutorial-button:hover,.tutorial-button:focus-visible{outline:none;border-color:var(--chart-do);background:#174b56;box-shadow:0 0 14px rgba(94,212,223,.18);filter:brightness(1.1)}
html[data-theme="light"] .tutorial-button{background:#d7e4e7;border-color:#467986;box-shadow:0 2px 8px rgba(31,72,82,.05)}
html[data-contrast="high"] .tutorial-button{border-width:2px}
.quick-tour-no-auto{display:flex;align-items:center;gap:9px;margin-top:15px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.025);color:var(--muted);font-size:.88rem;font-weight:700;cursor:pointer;user-select:none}
.quick-tour-no-auto input{width:18px;height:18px;flex:0 0 18px;margin:0;accent-color:var(--ok)}
.quick-tour-actions{justify-content:flex-end}
.quick-tour-nav{margin-left:0}
.about-enable-tutorial{border-color:#317b87!important}
.about-enable-tutorial .about-action-symbol{color:var(--chart-do);border-color:#317b87}
@media(max-width:650px){.tutorial-button{width:40px;height:40px;flex-basis:40px}.quick-tour-no-auto{font-size:.84rem}.quick-tour-actions{display:block}.quick-tour-nav{width:100%}}


/* OxyGuard Web 1.8.42 — balanced top icon distribution on mobile */
.status-tools{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.status-tools .status-refresh-button,
.status-tools .tutorial-button,
.status-tools .settings-lock-button,
.status-tools .device-log-button,
.status-tools .user-info-button{margin-left:0}
@media(max-width:650px){
  .status-strip{align-items:stretch}
  .status-tools{
    flex:1 1 100%;
    width:100%;
    margin-left:0;
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:8px;
  }
  .status-tools .status-refresh-button,
  .status-tools .tutorial-button,
  .status-tools .settings-lock-button,
  .status-tools .device-log-button,
  .status-tools .user-info-button{
    width:100%;
    min-width:0;
    justify-self:stretch;
    justify-content:center;
    margin:0;
  }
}
@media(max-width:390px){
  .status-tools{gap:6px}
}


/* Web 1.8.49 - unified natural splash wink
   /login and Web App startup use the same raster eye frame as public Welcome. */
/* Web 1.8.54 - server-side DO probe maintenance schedule/status/history */
.maintenance-badge{font:inherit;color:var(--text);cursor:pointer}
.maintenance-badge.due_soon i{background:var(--warn)}
.maintenance-badge.overdue i{background:var(--danger)}
.maintenance-notice{display:flex;gap:14px;align-items:flex-start;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}
.maintenance-notice.due_soon{border-color:rgba(246,190,73,.55)}
.maintenance-notice.overdue{border-color:rgba(255,115,115,.62)}
.maintenance-notice-icon{font-size:2rem;line-height:1}
.maintenance-notice-copy strong{font-size:1.08rem}
.maintenance-notice-copy p{margin:.45rem 0 .7rem;color:var(--muted)}
.maintenance-notice-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:.9rem;color:var(--muted)}
.maintenance-notice-meta b{color:var(--text)}
.maintenance-startup-actions{grid-template-columns:1fr 1fr}
.maintenance-status-card,.maintenance-complete-form,.maintenance-settings-form,.maintenance-history{margin-bottom:14px;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--panel)}
.maintenance-status-card.due_soon{border-color:rgba(246,190,73,.55)}
.maintenance-status-card.overdue{border-color:rgba(255,115,115,.62)}
.maintenance-status-card header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.maintenance-status-card header span{display:block;color:var(--muted);font-size:.82rem}
.maintenance-status-card header strong{font-size:1.15rem}
.maintenance-status-symbol{font-size:1.8rem!important;color:inherit!important}
.maintenance-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.maintenance-status-grid>div{padding:9px;border-radius:10px;background:var(--panel2)}
.maintenance-status-grid span{display:block;color:var(--muted);font-size:.8rem}
.maintenance-status-grid b{display:block;margin-top:3px}
.maintenance-status-card>p{margin:.8rem 0 0;color:var(--muted)}
.maintenance-complete-form h3,.maintenance-settings-form h3,.maintenance-history h3{margin-top:0}
.maintenance-complete-form>label,.maintenance-settings-grid label{display:block;color:var(--muted);font-weight:700}
.maintenance-complete-form input[type="date"],.maintenance-complete-form textarea,.maintenance-settings-grid input{width:100%;margin-top:5px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:#f2ffff;color:#08252d;padding:9px}
.maintenance-complete-form textarea{resize:vertical;min-height:76px}
.maintenance-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.maintenance-check-grid label{display:flex;gap:8px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.maintenance-check-grid input{width:20px;height:20px}
.maintenance-complete-form .primary,.maintenance-settings-form .secondary{width:100%;margin-top:12px}
.maintenance-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.maintenance-settings-grid label span{display:block;margin-top:3px;font-size:.8rem}
.maintenance-history-list{display:grid;gap:8px}
.maintenance-history-item{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.maintenance-history-item>div{display:flex;justify-content:space-between;gap:10px}
.maintenance-history-item span,.maintenance-history-item small{color:var(--muted)}
.maintenance-history-item p{margin:.35rem 0;font-size:.9rem}
.maintenance-history-item small{display:block;white-space:pre-wrap}
.maintenance-history-empty,.maintenance-readonly-note{color:var(--muted)}
.maintenance-readonly-note{margin-bottom:14px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}
html[data-theme="light"] .maintenance-complete-form input[type="date"],html[data-theme="light"] .maintenance-complete-form textarea,html[data-theme="light"] .maintenance-settings-grid input{background:#fff;color:#102e35}
@media(max-width:650px){.maintenance-startup-actions,.maintenance-status-grid,.maintenance-check-grid,.maintenance-settings-grid{grid-template-columns:1fr}.maintenance-notice{padding:13px}.maintenance-history-item>div{display:block}.maintenance-history-item span{display:block;margin-top:2px}}



/* Web 1.8.55 alarm UI/state hotfix: prevent narrow-screen threshold-card overflow. */
.dialog{max-width:100%;overflow-x:hidden}
.alarm-adjust,.alarm-number-grid,.alarm-limit-card,.alarm-limit-head,.number-with-unit{max-width:100%}
@media(max-width:650px){
  .alarm-number-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
  .alarm-limit-card{padding:9px 8px}
  .alarm-limit-head{gap:6px}
  .alarm-limit-head>span{font-size:.92rem;line-height:1.08}
  .alarm-limit-switch{min-width:76px;grid-template-columns:46px auto;gap:4px}
  .alarm-limit-switch .switch-slider{width:46px;height:26px}
  .alarm-limit-switch .switch-slider::after{width:18px;height:18px}
  .alarm-limit-switch input:checked + .switch-slider::after{transform:translateX(20px)}
  .alarm-limit-switch b{font-size:.74rem;min-width:22px}
}
@media(max-width:430px){
  .alarm-number-grid{grid-template-columns:minmax(0,1fr)}
  .alarm-limit-head>span{font-size:1rem}
  .alarm-limit-switch{min-width:84px}
}

/* Web 1.8.55 alarm editor polish: strong, non-italic directional threshold arrows. */
.alarm-limit-arrow{
  display:inline-block;
  margin-left:.22em;
  font-family:Arial,"Segoe UI Symbol","Noto Sans Symbols",sans-serif;
  font-style:normal!important;
  font-weight:900!important;
  font-size:1.28em;
  line-height:.8;
  letter-spacing:0;
  vertical-align:-.08em;
  text-decoration:none;
}
.alarm-limit-card:first-child .alarm-limit-arrow{color:#63b5ff}
.alarm-limit-card:last-child .alarm-limit-arrow{color:#ff7373}
html[data-theme="light"] .alarm-limit-card:first-child .alarm-limit-arrow{color:#176fc1}
html[data-theme="light"] .alarm-limit-card:last-child .alarm-limit-arrow{color:#c83f43}
html[data-contrast="high"] .alarm-limit-card:first-child .alarm-limit-arrow{color:#78c3ff}
html[data-contrast="high"] .alarm-limit-card:last-child .alarm-limit-arrow{color:#ff8484}
@media(max-width:430px){
  .alarm-limit-arrow{font-size:1.34em;margin-left:.18em;vertical-align:-.09em}
}

/* Web App 1.8.58 - alarm switch/arrow final polish.
 * OFF means the limit is disabled, not that the switch itself is disabled.
 * Keep the switch fully interactive/legible while dimming only the inactive
 * threshold content. Direction arrows are CSS-drawn for consistent weight.
 */
.alarm-limit-card.is-disabled{
  opacity:1;
  border-color:#49666d;
}
.alarm-limit-card.is-disabled .alarm-limit-head>span,
.alarm-limit-card.is-disabled .alarm-value-label{
  opacity:.62;
}
.alarm-limit-card.is-disabled .alarm-limit-switch{
  opacity:1!important;
  filter:none!important;
  cursor:pointer;
}
.alarm-limit-card.is-disabled .alarm-limit-switch .switch-slider{
  opacity:1!important;
  cursor:pointer;
}
.alarm-limit-card.is-disabled .alarm-limit-switch b{
  opacity:1;
}

/* Replace font glyph arrows with a thicker CSS arrow so weight is identical
 * on Android/Chrome, desktop browsers, and across installed system fonts. */
.alarm-limit-arrow{
  position:relative;
  display:inline-block;
  width:16px;
  height:24px;
  margin-left:.32em;
  font-size:0!important;
  line-height:0;
  vertical-align:-.28em;
  color:inherit;
  transform-origin:50% 50%;
}
.alarm-limit-arrow::before{
  content:"";
  position:absolute;
  left:6px;
  top:1px;
  width:4px;
  height:15px;
  border-radius:3px;
  background:currentColor;
}
.alarm-limit-arrow::after{
  content:"";
  position:absolute;
  left:1px;
  bottom:0;
  width:0;
  height:0;
  border-left:7px solid transparent;
  border-right:7px solid transparent;
  border-top:8px solid currentColor;
}
.alarm-limit-card:last-child .alarm-limit-arrow{
  transform:rotate(180deg);
}
@media(max-width:430px){
  .alarm-limit-arrow{width:17px;height:25px;margin-left:.30em;vertical-align:-.30em}
  .alarm-limit-arrow::before{left:6.5px;width:4px;height:16px}
  .alarm-limit-arrow::after{border-left-width:7.5px;border-right-width:7.5px;border-top-width:9px}
}

/* Web App 1.8.59 - ERMOXY public wordmark. Technical oxyguard namespaces remain unchanged. */
html[data-theme="light"]{--ermoxy-erm:#111827;--ermoxy-oxy:#0077c8}
html[data-theme="dark"]{--ermoxy-erm:#f8fafc;--ermoxy-oxy:#36c5f0}


/* Web App 1.8.59 - version-number typography polish. */
.web-version-number{
  font-family:"Courier New",Courier,monospace!important;
  font-weight:700!important;
  font-style:normal!important;
  font-variant-numeric:tabular-nums;
  letter-spacing:.025em;
  color:#cbd5e1!important;
  text-shadow:none;
}
html[data-theme="light"] .web-version-number{color:#6b7280!important}
html[data-contrast="high"] .web-version-number{color:#e5e7eb!important}
html[data-theme="light"][data-contrast="high"] .web-version-number{color:#4b5563!important}

/* Web App 1.8.59 - explicit startup splash version typography. */
.startup-splash-copy .web-version-number{
  font-family:"Courier New",Courier,monospace!important;
  font-weight:700!important;
  font-style:normal!important;
  font-variant-numeric:tabular-nums;
  letter-spacing:.025em;
  color:#cbd5e1!important;
  text-shadow:none!important;
}


/* Web App 1.8.59-r4 - splash version is structurally independent from the ERMOXY wordmark.
   Inline font/color in app.js is an intentional fallback for mobile browser/cache resilience. */
.startup-splash-title{
  display:flex;
  align-items:baseline;
  justify-content:center;
  gap:.38em;
  flex-wrap:wrap;
}
.startup-splash-title>strong{
  margin:0;
}
.startup-splash-title .splash-version-number{
  display:inline-block;
  font-family:"Courier New",Courier,"Liberation Mono",monospace!important;
  font-weight:700!important;
  font-style:normal!important;
  font-synthesis:weight;
  font-variant-numeric:tabular-nums;
  font-size:clamp(.95rem,1.9vw,1.2rem);
  line-height:1;
  letter-spacing:.025em;
  color:#cbd5e1!important;
  text-shadow:none!important;
}
@media(max-width:650px){
  .startup-splash-title{gap:.34em}
  .startup-splash-title .splash-version-number{font-size:.96rem}
}
