/* Klopt Portal — compact professional dashboard */
:root{--bg:#f4f5f7;--panel:#fff;--text:#171717;--muted:#6b7280;--line:#d9dee5;--green:#159957;--green-dark:#0f6f42;--green-soft:#edf8f2;--nav:#ffffff;--shadow:0 1px 2px rgba(16,24,40,.04)}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg)!important;color:var(--text)!important;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif!important;font-size:14px;line-height:1.45}
button,input,textarea,select{font:inherit}.app-shell{display:grid!important;grid-template-columns:228px minmax(0,1fr)!important;min-height:100vh;background:var(--bg)!important}.sidebar{position:fixed!important;inset:0 auto 0 0;width:228px!important;height:100vh!important;background:#fff!important;border-right:1px solid var(--line)!important;padding:0 16px 18px!important;z-index:20}.workspace{margin-left:228px!important;min-width:0;background:var(--bg)!important}.topbar{height:66px!important;background:#fff!important;border-bottom:1px solid var(--line)!important;padding:0 28px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;position:sticky!important;top:0!important;z-index:10}
.side-brand{height:66px!important;display:flex!important;align-items:center!important;gap:10px!important;border-bottom:1px solid #edf0f3}.brand-mark{width:34px!important;height:34px!important;border:1px solid #bfe6cf!important;background:var(--green-soft)!important;color:var(--green-dark)!important;border-radius:9px!important;display:grid!important;place-items:center!important;font-weight:700!important}.side-brand strong{font-size:17px!important;color:var(--text)!important}.side-brand small{font-size:11px!important;color:var(--muted)!important;text-transform:uppercase!important;letter-spacing:.11em!important}.project-switcher{margin:18px 0!important;padding:12px!important;border:1px solid var(--line)!important;border-radius:9px!important;background:#fff!important}.project-switcher strong{font-size:14px!important;color:var(--text)!important}.project-switcher small{font-size:12px!important;color:var(--muted)!important}.project-icon{background:var(--green-soft)!important;color:var(--green-dark)!important}
.nav-list{display:grid!important;gap:4px!important}.nav-item{height:42px!important;border:0!important;background:transparent!important;color:#2d333a!important;border-radius:7px!important;padding:0 12px!important;font-size:14px!important;font-weight:500!important;text-align:left!important;display:flex!important;align-items:center!important;gap:10px!important}.nav-item:hover{background:#f5f7f8!important}.nav-item.active{background:var(--green-soft)!important;color:var(--green-dark)!important;font-weight:650!important}.nav-item .soon{margin-left:auto!important;font-size:9px!important;color:#758079!important;border:1px solid #dbe3de!important;padding:2px 5px!important;border-radius:4px!important}.side-bottom{position:absolute!important;left:16px!important;right:16px!important;bottom:18px!important;border-top:1px solid var(--line)!important;padding-top:16px!important}.side-meta small{font-size:11px!important;color:var(--muted)!important}.side-meta strong{font-size:13px!important;color:var(--text)!important}.logout-button{height:38px!important;background:#fff!important;color:#242424!important;border:1px solid #bfc6cf!important;border-radius:7px!important;font-size:13px!important;font-weight:600!important;width:100%!important;margin-top:12px!important}
.crumb{margin:0 0 2px!important;color:#737b86!important;font-size:10px!important;font-weight:700!important;letter-spacing:.12em!important}.topbar h3,#pageTitle{margin:0!important;color:#181818!important;font-size:20px!important;font-weight:650!important;letter-spacing:-.01em!important}.top-actions{display:flex!important;align-items:center!important;gap:14px!important}.user-block{display:flex!important;align-items:center!important;gap:8px!important}.user-block strong{font-size:12px!important;color:#222!important}.user-block small{font-size:10px!important;color:var(--muted)!important}.avatar{width:32px!important;height:32px!important;background:var(--green-soft)!important;border:1px solid #bfe6cf!important;color:var(--green-dark)!important}.new-button,.primary-button{height:40px!important;padding:0 16px!important;border:0!important;border-radius:7px!important;background:#202124!important;color:#fff!important;font-size:13px!important;font-weight:650!important;box-shadow:none!important}
.content-view{padding:22px 28px 28px!important;max-width:1540px!important;margin:0 auto!important}.hero-strip{min-height:58px!important;padding:13px 18px!important;border-radius:8px!important;background:linear-gradient(90deg,var(--green-dark),#168a55)!important;border:0!important;box-shadow:none!important;color:white!important;display:flex!important;align-items:center!important;justify-content:space-between!important}.hero-kicker{font-size:10px!important;letter-spacing:.12em!important;color:rgba(255,255,255,.72)!important;font-weight:700!important}.hero-strip h4{font-size:20px!important;line-height:1.2!important;margin:2px 0 0!important;color:#fff!important;font-weight:650!important}.hero-strip p{display:none!important}.pipeline-card{display:flex!important;align-items:center!important;gap:10px!important;background:rgba(255,255,255,.12)!important;border:1px solid rgba(255,255,255,.18)!important;border-radius:7px!important;padding:8px 12px!important}.pipeline-card strong,.pipeline-card span{font-size:12px!important;color:#fff!important}
.metric-row{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:16px!important;margin:18px 0!important}.metric-card{min-height:132px!important;padding:18px!important;background:#fff!important;border:1px solid var(--line)!important;border-radius:9px!important;box-shadow:var(--shadow)!important;position:relative!important;overflow:hidden!important}.metric-card:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--green-dark)}.metric-card small{font-size:11px!important;color:#58616d!important;text-transform:uppercase!important;letter-spacing:.07em!important;font-weight:700!important}.metric-card strong{display:block!important;margin:14px 0 6px!important;font-size:27px!important;line-height:1.05!important;color:#111!important;font-weight:650!important;letter-spacing:-.025em!important}.metric-card span{font-size:13px!important;color:var(--muted)!important}.metric-card.accent{background:#fff!important;border-color:var(--line)!important}.metric-card.accent strong{color:#111!important}
.dashboard-grid{display:grid!important;grid-template-columns:minmax(0,1.45fr) minmax(320px,.75fr)!important;gap:16px!important}.panel{background:#fff!important;border:1px solid var(--line)!important;border-radius:9px!important;padding:18px!important;box-shadow:var(--shadow)!important}.panel-head{display:flex!important;justify-content:space-between!important;align-items:flex-start!important;gap:12px!important;margin-bottom:14px!important}.panel-head small{font-size:10px!important;color:#67717e!important;letter-spacing:.1em!important;font-weight:700!important;text-transform:uppercase!important}.panel-head h5{margin:4px 0 0!important;font-size:18px!important;line-height:1.2!important;color:#171717!important;font-weight:650!important}.state-badge,.count-pill{font-size:10px!important;font-weight:700!important;padding:5px 8px!important;border-radius:999px!important;border:1px solid #d7dde3!important;background:#f6f7f8!important;color:#68717d!important}.state-badge.ready,.state-badge.live{background:#ecfbf2!important;border-color:#b7e9c9!important;color:#117442!important}
.empty-state{min-height:190px!important;padding:18px!important;background:#fafbfc!important;border:1px solid #edf0f3!important;border-radius:7px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important}.empty-state p{max-width:520px!important;margin:8px auto 14px!important;color:#5f6874!important;font-size:14px!important;line-height:1.5!important}.empty-icon{width:36px!important;height:36px!important;border:1px solid #c8d8ce!important;border-radius:8px!important;color:var(--green-dark)!important;background:#fff!important}.secondary-button,.link-button,.end-button{font-size:13px!important;font-weight:600!important}.secondary-button{min-height:38px!important;padding:0 14px!important;background:#fff!important;color:#202124!important;border:1px solid #bfc6cf!important;border-radius:7px!important}.secondary-button:hover{background:#f6f7f8!important}.end-button{height:38px!important;padding:0 14px!important;border-radius:7px!important}.quick-actions{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}.quick-action{width:100%!important;min-height:62px!important;border:1px solid var(--line)!important;background:#fff!important;border-radius:8px!important;padding:11px 12px!important;display:grid!important;grid-template-columns:34px 1fr!important;align-items:center!important;gap:10px!important;text-align:left!important;cursor:pointer!important}.quick-action:hover{background:#f8faf9!important;border-color:#bfcac3!important}.quick-action>span{width:34px!important;height:34px!important;border-radius:7px!important;background:var(--green-soft)!important;color:var(--green-dark)!important;display:grid!important;place-items:center!important;font-size:18px!important}.quick-action div{display:grid!important;gap:2px!important}.quick-action strong{font-size:14px!important;color:#202124!important;font-weight:650!important}.quick-action small{font-size:12px!important;color:var(--muted)!important}.recent-panel{margin-top:16px!important}.table-wrap{margin-top:6px!important;overflow:auto!important}.data-table{width:100%!important;border-collapse:collapse!important;min-width:700px!important}.data-table th{padding:10px 12px!important;background:#f7f8fa!important;color:#59616c!important;font-size:10px!important;font-weight:700!important;text-transform:uppercase!important;letter-spacing:.07em!important;border-bottom:1px solid var(--line)!important}.data-table td{padding:12px!important;color:#343a40!important;font-size:13px!important;border-bottom:1px solid #edf0f3!important}.data-table strong{color:#111!important;font-size:13px!important}.data-table tr:hover td{background:#fafbfc!important}.status-chip{font-size:10px!important;padding:4px 7px!important;border-radius:999px!important}.latest-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important;margin-top:12px!important}.latest-grid>div,.result-summary>div{background:#fafbfc!important;border:1px solid #e1e5ea!important;border-radius:7px!important;padding:12px!important;min-height:70px!important}.latest-grid small,.result-summary small{display:block!important;font-size:10px!important;color:#6b7280!important;text-transform:uppercase!important;letter-spacing:.06em!important;font-weight:700!important}.latest-grid strong,.result-summary strong{display:block!important;margin-top:7px!important;font-size:15px!important;line-height:1.3!important;color:#161616!important;font-weight:650!important}.result-summary{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important}.active-live{padding-top:4px!important}.active-topline{padding-bottom:12px!important;border-bottom:1px solid #e8ebef!important}.active-clock strong{font-size:26px!important;color:var(--green-dark)!important;font-weight:650!important}.active-clock small{font-size:11px!important;color:var(--muted)!important}.recipe-tag{font-size:11px!important;padding:5px 7px!important;border:1px solid #dce3df!important;background:#f8faf9!important;color:#505860!important}.recipe-tag b{color:#202124!important}.active-stats{grid-template-columns:repeat(3,1fr)!important;gap:9px!important}.active-stats div{background:#fafbfc!important;border:1px solid #edf0f3!important;border-radius:7px!important;padding:10px!important}.active-stats small{font-size:10px!important;color:#6b7280!important}.active-stats strong{font-size:13px!important;color:#222!important}.section-intro{margin-bottom:16px!important;align-items:end!important}.section-intro h4{font-size:24px!important;color:#171717!important}.section-intro p{font-size:13px!important;color:var(--muted)!important}.sensor-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:14px!important}.sensor-card{min-height:140px!important;border:1px solid var(--line)!important;border-radius:9px!important;background:#fff!important;padding:16px!important}.sensor-card h5{font-size:16px!important;color:#171717!important}.sensor-card p,.sensor-footer{font-size:12px!important;color:var(--muted)!important}.sensor-location{font-size:10px!important;background:var(--green-soft)!important;color:var(--green-dark)!important}.modal-card{background:#fff!important;border:1px solid var(--line)!important;border-radius:10px!important;box-shadow:0 20px 50px rgba(0,0,0,.16)!important}.modal-head h3{font-size:22px!important}.modal-head p,label{font-size:13px!important;color:#4f5762!important}.modal-card input,.modal-card textarea,.modal-card select{font-size:14px!important;color:#171717!important;background:#fff!important;border:1px solid #cfd5dd!important;border-radius:7px!important;padding:10px 11px!important}.modal-card input:focus,.modal-card textarea:focus{border-color:#4d7f66!important;box-shadow:0 0 0 3px rgba(21,153,87,.10)!important}.ai-stage{min-height:420px!important;background:#fff!important;border:1px solid var(--line)!important;border-radius:9px!important}.ai-stage h4{font-size:28px!important}.ai-stage p{font-size:14px!important}.ai-glow{display:none!important}
@media(max-width:1180px){.metric-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}.dashboard-grid{grid-template-columns:1fr!important}.latest-grid,.result-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sensor-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:820px){.app-shell{display:block!important}.sidebar{position:static!important;width:100%!important;height:auto!important;padding:10px 14px!important;border-right:0!important;border-bottom:1px solid var(--line)!important}.workspace{margin-left:0!important}.side-brand{height:48px!important;border:0!important}.project-switcher,.side-bottom{display:none!important}.nav-list{display:flex!important;overflow:auto!important;gap:4px!important}.nav-item{white-space:nowrap!important;height:38px!important}.topbar{height:58px!important;padding:0 16px!important}.user-block{display:none!important}.content-view{padding:14px!important}.hero-strip{padding:12px 14px!important}.pipeline-card{display:none!important}.metric-row{grid-template-columns:1fr 1fr!important;gap:10px!important;margin:12px 0!important}.metric-card{min-height:110px!important;padding:14px!important}.metric-card strong{font-size:23px!important;margin:10px 0 4px!important}.dashboard-grid{grid-template-columns:1fr!important}.latest-grid,.result-summary,.sensor-grid{grid-template-columns:1fr!important}.panel{padding:14px!important}.topbar h3{font-size:18px!important}.section-intro{align-items:flex-start!important;gap:10px!important}}

/* Layout correction — sidebar occupies only one column */
.app-shell{display:block!important}
.workspace{margin-left:228px!important;width:calc(100% - 228px)!important}
.content-view{width:100%!important;max-width:1480px!important;margin:0 auto!important;padding-left:28px!important;padding-right:28px!important}
.topbar{margin:0!important;width:100%!important}

/* Meezan-style portal typography: clean neutral sans serif */
html,body,button,input,textarea,select,
h1,h2,h3,h4,h5,h6,strong,small,p,span,label,.topbar h3,.hero-strip h4,.panel-head h5,.metric-card strong,.section-intro h4,.modal-head h3,.active-clock strong{
  font-family:Arial,Helvetica,"Helvetica Neue",sans-serif!important;
}
.topbar h3{font-size:20px!important;font-weight:700!important}
.hero-strip h4{font-size:20px!important;font-weight:700!important}
.panel-head h5{font-size:17px!important;font-weight:700!important}
.metric-card strong{font-size:26px!important;font-weight:700!important}
body{font-size:14px!important}

@media(max-width:820px){
  .workspace{margin-left:0!important;width:100%!important}
  .content-view{padding-left:14px!important;padding-right:14px!important}
}

/* Live ESP32 test data — functional enhancement, locked UI preserved */
.active-sensor-block{margin-top:14px!important;padding-top:13px!important;border-top:1px solid #e8ebef!important}
.active-sensor-title{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:8px!important}
.active-sensor-title small{font-size:10px!important;color:#67717e!important;letter-spacing:.09em!important;font-weight:700!important}
.active-sensor-title span{font-size:12px!important;color:#66717c!important}
.active-live .latest-grid{margin-top:0!important}
.active-live .latest-grid>div{min-height:64px!important;padding:10px 11px!important}
.active-live .latest-grid strong{font-size:14px!important}
.active-waiting-line{padding:13px!important;border:1px solid #e5e9ee!important;background:#fafbfc!important;border-radius:7px!important;color:#69737f!important;font-size:13px!important}

/* Device control — keeps the locked dashboard styling */
.device-control-panel{margin-bottom:16px!important}
.device-control-grid{display:grid!important;grid-template-columns:minmax(220px,1fr) auto minmax(210px,.8fr) auto!important;gap:12px!important;align-items:end!important}
.device-control-info{display:grid!important;gap:3px!important}
.device-control-info small,.device-control-field small{font-size:10px!important;color:#67717e!important;text-transform:uppercase!important;letter-spacing:.08em!important;font-weight:700!important}
.device-control-info strong{font-size:15px!important;color:#171717!important}
.device-control-info span{font-size:12px!important;color:#6b7280!important}
.device-control-field{display:grid!important;gap:6px!important}
.device-control-field select{height:38px!important;border:1px solid #cfd5dd!important;border-radius:7px!important;background:#fff!important;color:#202124!important;padding:0 10px!important;font-size:13px!important}
.device-command-result{margin-top:13px!important;padding:10px 12px!important;border-radius:7px!important;background:#fafbfc!important;border:1px solid #e5e9ee!important;color:#69737f!important;font-size:12px!important}
.device-command-result.success{background:#f0faf4!important;border-color:#c8ead5!important;color:#12663c!important}
.device-command-result.error{background:#fff6f6!important;border-color:#efcccc!important;color:#9f2d2d!important}
@media(max-width:1000px){.device-control-grid{grid-template-columns:1fr 1fr!important}.device-control-info{grid-column:1/-1!important}}
@media(max-width:620px){.device-control-grid{grid-template-columns:1fr!important}.device-control-info{grid-column:auto!important}}

/* Hardware readiness controls — locked until physical rewiring is verified */
.hardware-control-panel{margin-bottom:16px!important}
.hardware-control-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:14px!important}
.hardware-control-card{border:1px solid #e5e9ee!important;border-radius:8px!important;padding:14px!important;background:#fff!important}
.hardware-control-head{display:flex!important;justify-content:space-between!important;gap:12px!important;align-items:flex-start!important}
.hardware-control-head small{display:block!important;font-size:10px!important;letter-spacing:.08em!important;color:#737b86!important;font-weight:700!important;margin-bottom:3px!important}
.hardware-control-head strong{font-size:14px!important;color:#171717!important}
.hardware-control-card p{font-size:12px!important;line-height:1.5!important;color:#69737f!important;margin:9px 0 12px!important}
.control-lock{font-size:10px!important;font-weight:700!important;letter-spacing:.05em!important;padding:4px 7px!important;border:1px solid #ddd!important;border-radius:999px!important;color:#7b5d00!important;background:#fffaf0!important;white-space:nowrap!important}
.control-lock.ready{color:#12663c!important;background:#f0faf4!important;border-color:#c8ead5!important}
.control-lock.unavailable{color:#68717b!important;background:#f5f6f7!important;border-color:#e3e6ea!important}
.hardware-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;margin-bottom:12px!important}
.hardware-actions.three{grid-template-columns:repeat(3,1fr)!important}
.hardware-action:disabled{opacity:.48!important;cursor:not-allowed!important}
.control-requirements{display:grid!important;gap:6px!important;border-top:1px solid #eceff2!important;padding-top:10px!important}
.control-requirement-line{display:flex!important;gap:7px!important;align-items:flex-start!important;font-size:11px!important;line-height:1.35!important;color:#646e79!important}
.control-requirement-line>span:first-child{color:#9b7a00!important;font-size:11px!important;line-height:1.35!important}
.hardware-unavailable{background:#fafbfc!important}
@media(max-width:1100px){.hardware-control-grid{grid-template-columns:1fr!important}}
@media(max-width:620px){.hardware-actions,.hardware-actions.three{grid-template-columns:1fr!important}}

/* Sensor diagnostics and telemetry controls */
.sensor-control-panel{margin-bottom:16px!important}
.sensor-control-note{margin:-2px 0 13px!important;font-size:12px!important;color:#69737f!important;line-height:1.5!important}
.sensor-control-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
.sensor-control-card{border:1px solid #e4e8ed!important;border-radius:8px!important;padding:13px!important;background:#fff!important}
.sensor-control-head{display:flex!important;justify-content:space-between!important;gap:12px!important;align-items:flex-start!important}
.sensor-control-head>div{display:grid!important;gap:2px!important}
.sensor-control-head small{font-size:9px!important;letter-spacing:.08em!important;color:#78818b!important;font-weight:700!important}
.sensor-control-head strong{font-size:14px!important;color:#171717!important}
.sensor-control-head span:not(.telemetry-badge){font-size:11px!important;color:#69737f!important}
.telemetry-badge{font-size:9px!important;font-weight:700!important;letter-spacing:.05em!important;padding:4px 7px!important;border-radius:999px!important;white-space:nowrap!important}
.telemetry-badge.on{background:#edf8f1!important;border:1px solid #c7e7d3!important;color:#14663d!important}
.telemetry-badge.off{background:#f4f5f6!important;border:1px solid #dfe3e7!important;color:#707983!important}
.sensor-live-values{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;margin:11px 0!important}
.sensor-live-value{background:#fafbfc!important;border:1px solid #edf0f3!important;border-radius:6px!important;padding:8px 9px!important;min-height:54px!important}
.sensor-live-value small{display:block!important;font-size:9px!important;text-transform:uppercase!important;letter-spacing:.05em!important;color:#77808a!important}
.sensor-live-value strong{display:block!important;margin-top:5px!important;font-size:13px!important;color:#202124!important}
.sensor-live-value.empty{grid-column:1/-1!important}
.sensor-live-value.empty strong{font-size:11px!important;color:#7a838d!important;font-weight:500!important}
.sensor-toggle-button{width:100%!important}
@media(max-width:900px){.sensor-control-grid{grid-template-columns:1fr!important}}
@media(max-width:520px){.sensor-live-values{grid-template-columns:1fr!important}}

/* Firmware management */
.firmware-bootstrap-notice{border:1px solid #efd79a!important;background:#fffaf0!important;border-radius:8px!important;padding:13px 14px!important;margin-bottom:14px!important}
.firmware-bootstrap-notice strong{display:block!important;font-size:13px!important;color:#6f5200!important;margin-bottom:4px!important}
.firmware-bootstrap-notice p{margin:0!important;font-size:12px!important;line-height:1.5!important;color:#6d6551!important}
.firmware-status-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:12px!important;margin-bottom:14px!important}
.firmware-status-card{padding:14px!important}
.firmware-status-card small,.firmware-release-detail small{display:block!important;font-size:10px!important;color:#6b7280!important;text-transform:uppercase!important;letter-spacing:.06em!important;font-weight:700!important}
.firmware-status-card strong{display:block!important;margin:7px 0 4px!important;font-size:15px!important;color:#171717!important}
.firmware-status-card span{font-size:12px!important;color:#69737f!important}
.firmware-build-panel,.firmware-install-panel{margin-bottom:14px!important}
.firmware-explainer{font-size:12px!important;line-height:1.5!important;color:#69737f!important;margin:0 0 13px!important}
.firmware-build-form{display:grid!important;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.4fr) auto!important;gap:12px!important;align-items:end!important}
.firmware-build-form label{display:grid!important;gap:6px!important;font-size:11px!important;color:#626b75!important;font-weight:600!important}
.firmware-build-form input{height:38px!important;border:1px solid #cfd5dd!important;border-radius:7px!important;background:#fff!important;color:#202124!important;padding:0 10px!important;font-size:13px!important}
.firmware-build-form input[type=file]{padding:7px 9px!important}
.firmware-release-detail{display:grid!important;grid-template-columns:1fr 1fr 1.6fr!important;gap:10px!important;margin-bottom:12px!important}
.firmware-release-detail>div{background:#fafbfc!important;border:1px solid #e7eaee!important;border-radius:7px!important;padding:11px!important;min-height:64px!important}
.firmware-release-detail strong{display:block!important;margin-top:7px!important;font-size:13px!important;color:#202124!important;word-break:break-word!important}
.firmware-safety-note{font-size:12px!important;color:#68717b!important;background:#fafbfc!important;border:1px solid #e7eaee!important;border-radius:7px!important;padding:10px 11px!important;margin-bottom:12px!important}
.firmware-install-button{margin-bottom:12px!important}
.firmware-install-button:disabled{opacity:.45!important;cursor:not-allowed!important}
@media(max-width:1000px){.firmware-status-grid{grid-template-columns:1fr!important}.firmware-build-form{grid-template-columns:1fr!important}.firmware-release-detail{grid-template-columns:1fr!important}}

.firmware-bootstrap-actions{display:flex!important;align-items:center!important;gap:10px!important;margin-top:10px!important;flex-wrap:wrap!important}
.firmware-bootstrap-actions span{font-size:11px!important;color:#756a4f!important}
.firmware-usb-progress{margin-top:11px!important}
.firmware-progress-track{height:8px!important;border-radius:999px!important;background:#eee7d5!important;overflow:hidden!important}
.firmware-progress-track span{display:block!important;width:0;height:100%!important;background:#159957!important;transition:width .18s ease!important}
.firmware-usb-progress pre{max-height:150px!important;overflow:auto!important;margin:8px 0 0!important;padding:9px!important;border-radius:6px!important;background:#161a18!important;color:#d7e7dc!important;font-size:10px!important;line-height:1.45!important;white-space:pre-wrap!important}

.firmware-usb-diagnostics{margin-top:11px!important;border:1px solid #e5e9ee!important;border-radius:7px!important;background:#fff!important;padding:10px!important}
.firmware-diagnostics-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;margin-bottom:8px!important}
.firmware-diagnostics-head strong{font-size:12px!important;color:#202124!important}
.firmware-diagnostics-head span{font-size:11px!important;color:#6c7580!important}
.firmware-usb-diagnostics pre{margin:0!important;max-height:260px!important;overflow:auto!important;padding:10px!important;border-radius:6px!important;background:#151a18!important;color:#d8e6dd!important;font-size:10px!important;line-height:1.45!important;white-space:pre-wrap!important}

.firmware-recovery-panel{margin-bottom:14px!important}
.firmware-recovery-actions{display:flex!important;align-items:center!important;gap:10px!important;flex-wrap:wrap!important}
.firmware-recovery-actions span{font-size:11px!important;color:#68717b!important}

/* Physical demo arming */
.control-requirement-line.checklist{cursor:pointer!important}
.control-requirement-line.checklist input{margin:1px 0 0!important;accent-color:#159957!important;flex:0 0 auto!important}
.control-requirement-line.checklist input:disabled{cursor:not-allowed!important}
.control-requirement-line.checklist:has(input:checked) span{color:#2f5f46!important}

/* Compact physical-control prerequisite checklists */
.control-requirements{
  gap:8px!important;
}
.control-requirement-line.checklist{
  display:grid!important;
  grid-template-columns:16px minmax(0,1fr)!important;
  align-items:start!important;
  column-gap:9px!important;
  width:100%!important;
  cursor:pointer!important;
}
.control-requirement-line.checklist input.control-requirement-check{
  appearance:auto!important;
  -webkit-appearance:checkbox!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  max-height:16px!important;
  padding:0!important;
  margin:1px 0 0!important;
  border-radius:3px!important;
  box-shadow:none!important;
  background:#fff!important;
  accent-color:#159957!important;
  flex:none!important;
}
.control-requirement-line.checklist span,
.control-requirement-line.passive span:last-child{
  min-width:0!important;
  font-size:11px!important;
  line-height:1.45!important;
  color:#646e79!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
}
.control-requirement-line.passive{
  display:grid!important;
  grid-template-columns:14px minmax(0,1fr)!important;
  align-items:start!important;
  column-gap:7px!important;
  width:100%!important;
}
.control-requirement-line.passive>span:first-child{
  color:#9b7a00!important;
}

/* AeroLux 9-sensor physical commissioning */
.sensor-test-checklist{
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
  padding:10px 0 4px!important;
  border-top:1px solid #e8edf1!important;
}
.sensor-test-checklist>small{
  font-size:10px!important;
  letter-spacing:.08em!important;
  font-weight:700!important;
  color:#6c7782!important;
}
.sensor-check-row{
  display:grid!important;
  grid-template-columns:16px minmax(0,1fr)!important;
  align-items:start!important;
  gap:9px!important;
  width:100%!important;
  cursor:pointer!important;
}
.sensor-check-row input.sensor-check{
  appearance:auto!important;
  -webkit-appearance:checkbox!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  max-height:16px!important;
  padding:0!important;
  margin:1px 0 0!important;
  border-radius:3px!important;
  box-shadow:none!important;
  background:#fff!important;
  accent-color:#159957!important;
}
.sensor-check-row span{
  min-width:0!important;
  font-size:11px!important;
  line-height:1.45!important;
  color:#606b76!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
}
.sensor-test-actions{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  margin:10px 0 8px!important;
}
.sensor-test-actions .secondary-button{
  min-height:36px!important;
  height:auto!important;
}
.sensor-test-badge{
  display:inline-flex!important;
  align-items:center!important;
  min-height:25px!important;
  padding:4px 8px!important;
  border:1px solid #d8dee5!important;
  border-radius:999px!important;
  font-size:9px!important;
  font-weight:800!important;
  letter-spacing:.05em!important;
  white-space:nowrap!important;
}
.sensor-test-badge.pass{color:#087a42!important;background:#effbf4!important;border-color:#afe6c6!important}
.sensor-test-badge.fail{color:#a32727!important;background:#fff3f3!important;border-color:#f1c0c0!important}
.sensor-test-badge.idle{color:#68737f!important;background:#f7f9fb!important}
.sensor-test-detail{
  margin:0 0 9px!important;
  padding:8px 9px!important;
  border-radius:8px!important;
  background:#f7f9fb!important;
  font-size:10px!important;
  line-height:1.45!important;
  color:#596570!important;
  overflow-wrap:anywhere!important;
}


.sensor-panel-actions{
  display:flex!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  justify-content:flex-end!important;
}

/* Minimal AI analysis page; scoped to this view. */
#aiView .ai-analysis-control{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important;flex-wrap:wrap!important;margin-bottom:18px!important}
#aiView .ai-analysis-control>div{flex:1!important;min-width:220px!important}
#aiView .ai-analysis-control strong{font-size:14px!important}
#aiView #demoMessage{font-size:12px!important;color:#687380!important;margin:7px 0 0!important;line-height:1.5!important}
#aiView #demoAvailability{width:100%!important;margin:0!important}
#aiView .ai-analysis-report{margin-bottom:18px!important}
#aiView #demoReportMeta{font-size:11px!important;text-align:right!important}
#aiView .ai-empty{padding:36px 16px!important;text-align:center!important;background:#fafbfc!important;border-radius:6px!important}
#aiView .ai-empty strong{font-size:15px!important;color:#3f4852!important}
#aiView .ai-empty p{font-size:13px!important;color:#747d87!important;margin:10px 0 0!important}
#aiView .ai-report-summary{font-size:15px!important;line-height:1.7!important;margin:0 0 22px!important;color:#303943!important}
#aiView .ai-report-columns{display:grid!important;grid-template-columns:1fr 1fr!important;gap:28px!important}
#aiView h6{font-size:12px!important;font-weight:700!important;margin:0 0 12px!important;color:#36414c!important}
#aiView ul{margin:0!important;padding-left:18px!important}
#aiView li{font-size:13px!important;line-height:1.7!important;margin-bottom:9px!important;color:#58636f!important}
#aiView summary{cursor:pointer!important;font-size:13px!important;font-weight:600!important;color:#485460!important}
#aiView .ai-report-notes{border-top:1px solid #edf0f3!important;margin-top:18px!important;padding-top:15px!important}
#aiView .ai-report-notes[open] summary{margin-bottom:14px!important}
#aiView #demoSensorMeta{float:right!important;color:#78828d!important;font-size:11px!important;font-weight:400!important}
#aiView .ai-sensor-table-wrap{overflow-x:auto!important;margin-top:18px!important}
#aiView .ai-sensor-table{width:100%!important;border-collapse:collapse!important;min-width:500px!important;text-align:left!important}
#aiView .ai-sensor-table th,#aiView .ai-sensor-table td{font-size:12px!important;padding:12px 8px!important;border-bottom:1px solid #edf0f3!important;line-height:1.6!important}
#aiView .ai-sensor-table thead th{font-size:10px!important;text-transform:uppercase!important;letter-spacing:.04em!important;color:#85909a!important;font-weight:500!important}
#aiView .ai-sensor-table tbody th{font-weight:600!important;color:#43505c!important}
#aiView .ai-sensor-table td{color:#697580!important}
#aiView .ai-sensor-ok{color:#258367!important;white-space:nowrap!important}
#aiView .ai-sensor-wait{color:#87909a!important}
#aiView .ai-sensor-details>p{font-size:11px!important;line-height:1.6!important;margin:14px 0 0!important}
@media(max-width:650px){#aiView .ai-report-columns{grid-template-columns:1fr!important;gap:20px!important}#aiView .ai-analysis-control button{width:100%!important}#aiView #demoReportMeta{text-align:left!important}#aiView .ai-analysis-report>.panel-head{flex-wrap:wrap!important}}

#aiView .ai-test-label{display:block!important;font-size:11px!important;font-weight:600!important;color:#687380!important;margin-bottom:7px!important}
#aiView #analysisExperiment{display:block!important;width:100%!important;max-width:620px!important;border:1px solid #dce2e7!important;border-radius:6px!important;padding:10px 12px!important;background:#fff!important;color:#35414c!important;font-size:13px!important;margin-bottom:12px!important}
.experiment-analysis-button{white-space:nowrap!important}

/* Readable sign-in and password recovery only; retain the existing portal theme. */
@layer portal-readability {
  :is(#loginView,#passwordResetModal) {
    color-scheme:light!important;
    --bg:#fff!important;--bg2:#fff!important;--panel:#fff!important;
    --card:#fff!important;--card2:#fff!important;--nav:#fff!important;
    --text:#000!important;--muted:#000!important;--muted2:#000!important;
    --green:#000!important;--green2:#000!important;--green-dark:#000!important;
    --green-soft:#fff!important;--danger:#000!important;--warn:#000!important;
    --line:#b8b8b8!important;--line2:#b8b8b8!important;--shadow:none!important;
  }
  :is(#loginView,#passwordResetModal),:is(#loginView,#passwordResetModal) * {
    color:#000!important;
    -webkit-text-fill-color:#000!important;
    background-color:#fff!important;
    background-image:none!important;
    text-shadow:none!important;
    opacity:1!important;
  }
  :is(#loginView,#passwordResetModal) {font-size:16px!important;color-scheme:light!important;}
  :is(#loginView,#passwordResetModal) p,:is(#loginView,#passwordResetModal) label,:is(#loginView,#passwordResetModal) input,:is(#loginView,#passwordResetModal) select,
  :is(#loginView,#passwordResetModal) textarea,:is(#loginView,#passwordResetModal) td,:is(#loginView,#passwordResetModal) th,:is(#loginView,#passwordResetModal) li,:is(#loginView,#passwordResetModal) button {
    font-size:14px!important;line-height:1.6!important;
  }
  :is(#loginView,#passwordResetModal) small,:is(#loginView,#passwordResetModal) .muted,:is(#loginView,#passwordResetModal) .crumb,
  :is(#loginView,#passwordResetModal) .sensor-control-note,:is(#loginView,#passwordResetModal) .state-badge,
  :is(#loginView,#passwordResetModal) .status-chip,:is(#loginView,#passwordResetModal) .sensor-test-badge,
  :is(#loginView,#passwordResetModal) .sensor-live-value small,:is(#loginView,#passwordResetModal) .telemetry-badge,
  :is(#loginView,#passwordResetModal) .firmware-explainer,:is(#loginView,#passwordResetModal) .firmware-safety-note,
  :is(#loginView,#passwordResetModal) .sensor-test-detail,:is(#loginView,#passwordResetModal) .sensor-check-row span,
  :is(#loginView,#passwordResetModal) .control-requirement-line span {
    font-size:12px!important;line-height:1.6!important;
  }
  :is(#loginView,#passwordResetModal) button,:is(#loginView,#passwordResetModal) input,:is(#loginView,#passwordResetModal) select,:is(#loginView,#passwordResetModal) textarea {
    border-color:#000!important;box-shadow:none!important;
  }
  :is(#loginView,#passwordResetModal) button:disabled,:is(#loginView,#passwordResetModal) input:disabled,
  :is(#loginView,#passwordResetModal) select:disabled {opacity:1!important;cursor:not-allowed!important;border-style:dashed!important;}
  :is(#loginView,#passwordResetModal) input::placeholder,:is(#loginView,#passwordResetModal) textarea::placeholder {
    color:#000!important;-webkit-text-fill-color:#000!important;opacity:1!important;
  }
  :is(#loginView,#passwordResetModal) input[type=checkbox],:is(#loginView,#passwordResetModal) input[type=radio] {accent-color:#000!important;}
  :is(#loginView,#passwordResetModal) :focus-visible {outline:2px solid #000!important;outline-offset:3px!important;}
  :is(#loginView,#passwordResetModal) a {color:#000!important;text-decoration:underline!important;}
  :is(#loginView,#passwordResetModal) .nav-item {border-color:transparent!important;}
  :is(#loginView,#passwordResetModal) .nav-item.active {font-weight:700!important;border-left:4px solid #000!important;}
  :is(#loginView,#passwordResetModal) .panel,:is(#loginView,#passwordResetModal) .login-card,:is(#loginView,#passwordResetModal) .modal-card,
  :is(#loginView,#passwordResetModal) .sensor-control-card,:is(#loginView,#passwordResetModal) .metric-card,
  :is(#loginView,#passwordResetModal) .data-table th,:is(#loginView,#passwordResetModal) .data-table td {
    border-color:#b8b8b8!important;box-shadow:none!important;
  }
  :is(#loginView,#passwordResetModal) .login-ambient,:is(#loginView,#passwordResetModal) .ai-glow {display:none!important;}
  :is(#loginView,#passwordResetModal) .modal-backdrop {background-color:rgba(255,255,255,.94)!important;}
  :is(#loginView,#passwordResetModal) .firmware-progress-track span {background-color:#000!important;}
  html body .hidden {display:none!important;}
}
