* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background: #eef2f5;
  color: #17212b;
}
header {
  background: #123f63;
  color: white;
  padding: 16px 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
h1 { margin: 0; font-size: 24px; }
h2 { margin: 0; }
.subtitle, .muted { opacity: .72; margin-top: 4px; }
.toolbar { display: flex; gap: 12px; align-items: center; }
.status {
  padding: 7px 12px;
  background: rgba(255,255,255,.12);
  border-radius: 5px;
}
main { padding: 16px; }
.panel {
  max-width: 1200px;
  margin: 0 auto 14px auto;
  background: white;
  border: 1px solid #cbd5dd;
  border-radius: 7px;
  padding: 16px;
}
.panel-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
}
select { padding: 5px 8px; }
.empty { padding: 35px; text-align: center; color: #667; }
.tank-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(275px, 100%), 1fr));
  gap: 14px;
}
.tank-card {
  display: block;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  text-decoration: none;
  color: inherit;
  border: 1px solid #cad3da;
  border-radius: 7px;
  padding: 14px;
  transition: transform .08s, box-shadow .08s;
}
.tank-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 3px 12px rgba(0,0,0,.10);
}
.tank-title {
  display: flex;
  justify-content: space-between;
  font-weight: bold;
  margin-bottom: 10px;
}
.level-track {
  width: 100%;
  max-width: 100%;
  height: 22px;
  border: 1px solid #789;
  background: #f4f6f7;
  overflow: hidden;
  margin: 10px 0;
}
.level-fill { height: 100%; background: #4ba9d1; width: 0; }
.big { font-size: 28px; font-weight: bold; }
.detail { margin-top: 7px; color: #46525c; }
.offline { opacity: .55; }
.button {
  display: inline-block;
  border: 0;
  border-radius: 5px;
  background: #1674a6;
  color: white;
  padding: 9px 14px;
  cursor: pointer;
  text-decoration: none;
}
.button.secondary { background: rgba(255,255,255,.16); }
.tank-detail-grid {
  display: grid;
  grid-template-columns: minmax(420px, 2fr) minmax(190px, .8fr);
  gap: 18px;
}
.geometry-card, .live-card {
  border: 1px solid #d4dde3;
  border-radius: 6px;
  padding: 10px;
  min-height: 310px;
}
.live-card { padding: 24px; }
.label { color: #65727c; }
.hero-value { font-size: 42px; font-weight: bold; margin-top: 8px; }
.hero-sub { font-size: 22px; margin-top: 4px; }
#tankSvg { width: 100%; height: 390px; }
.svg-title { font-size: 18px; font-weight: bold; }
.config-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 10px 18px;
}
.config-item {
  border-bottom: 1px solid #edf0f2;
  padding: 7px 0;
}
.config-label { color: #66737c; font-size: 13px; }
.config-value { font-weight: bold; margin-top: 2px; }
footer { text-align: center; padding: 10px; color: #68737c; }

@media (max-width: 760px) {
  header { align-items: flex-start; gap: 12px; flex-direction: column; }
  main { padding: 8px; }
  .tank-detail-grid { grid-template-columns: 1fr; }
  .geometry-card { min-height: 260px; }
  #tankSvg { height: 310px; }
  .panel-title { align-items: flex-start; gap: 10px; }
}

/* =====================================================   TankSense V0.2 detail-page layout refinement
   ============================================================ */

.tank-page {
  max-width: 1200px;
  margin: 0 auto;
}

/* Give the header controls some breathing room */
header {
  gap: 20px;
}

.toolbar {
  padding-right: 4px;
  flex-wrap: wrap;
}

/* Slightly tighter live/config panel */
.live-panel {
  padding-bottom: 14px;
}

.tank-detail-grid {
  grid-template-columns: minmax(360px, 1.45fr) minmax(250px, .75fr);
  gap: 16px;
  align-items: stretch;
}

/* Remove the unnecessarily tall cards */
.geometry-card,
.live-card {
  min-height: 0;
}

.geometry-card {
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* This is the main change: 390px -> compact display */
#tankSvg {
  width: 100%;
  height: 285px;
  max-height: 285px;
  display: block;
}

.live-card {
  padding: 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.hero-value {
  font-size: 38px;
  margin-top: 6px;
}

.hero-sub {
  font-size: 20px;
  margin-top: 3px;
  margin-bottom: 8px;
}

/* Configuration area */
.config-grid {
  grid-template-columns: repeat(3, minmax(180px, 1fr));
  gap: 0 24px;
}

.config-item {
  padding: 9px 0;
  min-height: 52px;
}

.config-label {
  font-size: 12px;
  color: #66737c;
}

.config-value {
  font-size: 15px;
  margin-top: 3px;
}

/* Make clickable dashboard cards more obvious */
.tank-card {
  cursor: pointer;
}

.tank-card::after {
  content: "View / Configure \2192";
  display: block;
  margin-top: 12px;
  font-size: 13px;
  font-weight: bold;
  color: #1674a6;
}

/* Mobile/tablet */
@media (max-width: 760px) {
  .toolbar {
    width: 100%;
    padding-right: 0;
  }

  .tank-detail-grid {
    grid-template-columns: 1fr;
  }

  #tankSvg {
    height: 250px;
    max-height: 250px;
  }

  .config-grid {
    grid-template-columns: 1fr;
  }

  .geometry-card,
  .live-card {
    min-height: 0;
  }
}

/* V0.3 Tank Setup header */

.panel-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.panel-title > div:first-child {
  min-width: 0;
}

.config-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-left: auto;
}

.config-actions .button {
  display: inline-block;
  width: auto;
  white-space: nowrap;
}

.config-input {
  width: 100%;
  max-width: 220px;
  box-sizing: border-box;
  padding: 7px 9px;
  margin-top: 4px;
  border: 1px solid #b8c2c9;
  border-radius: 5px;
  background: #fff;
  font-size: 15px;
}

/* Configuration edit rows */
.config-item:has(.config-input) {
  display: grid;
  grid-template-columns: minmax(125px, auto) minmax(120px, 1fr);
  align-items: center;
  column-gap: 10px;
}

.config-item:has(.config-input) .config-label {
  white-space: nowrap;
}

.config-item:has(.config-input) .config-input {
  width: 100%;
  max-width: none;
}

@media (max-width: 760px) {

  .config-item:has(.config-input) {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .config-item:has(.config-input) .config-label {
    white-space: normal;
  }

  .config-item:has(.config-input) .config-input {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }
}

/* Secondary buttons inside Tank Setup use light-panel styling */
.config-actions .button.secondary {
  color: #1674a6;
  background: #ffffff;
  border: 1px solid #1674a6;
}

.config-actions .button.secondary:hover {
  background: #eef6fa;
}

[hidden] {
  display: none !important;
}

/* V0.6 isometric tank presentation */
.geometry-card { position: relative; min-height: 470px; }
.iso-title { text-align:center; font-weight:700; margin-bottom:4px; }
.shape-reference-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.reference-card { border:1px solid #d7e1e8; border-radius:10px; padding:12px; background:#fff; }
.reference-card h3 { margin:0 0 4px; }
.reference-card p { margin:6px 8px 2px; color:#53616c; line-height:1.35; }
.reference-card svg { width:100%; height:auto; display:block; }
.iso-dim { font-size:14px; fill:#183b63; font-weight:600; }
.iso-value { font-size:14px; fill:#102d4d; font-weight:700; }
.iso-outline { fill:none; stroke:#17232d; stroke-width:3; stroke-linejoin:round; }
.iso-hidden { fill:none; stroke:#597287; stroke-width:1.5; stroke-dasharray:7 6; }
.iso-dimension { fill:none; stroke:#1c5790; stroke-width:1.7; }
.iso-water { fill:#43b7e8; fill-opacity:.62; stroke:none; }
@media (max-width: 900px) {
  .shape-reference-grid { grid-template-columns:1fr; }
}

/* ===== SenseServer V0.6.1 product UI ===== */
:root { --navy:#143f61; --navy2:#0f3554; --blue:#1686df; --line:#cbdbe7; --bg:#eef4f8; --ink:#102b45; --muted:#617486; }
body { margin:0; background:var(--bg); color:var(--ink); font-family:Arial,Helvetica,sans-serif; }
.app-shell { min-height:100vh; display:grid; grid-template-columns:200px minmax(0,1fr); }
.sidebar { background:linear-gradient(180deg,var(--navy2),#173f61); color:#fff; min-height:100vh; position:sticky; top:0; height:100vh; display:flex; flex-direction:column; }
.brand { display:flex; gap:12px; align-items:center; padding:20px 18px 18px; border-bottom:1px solid rgba(255,255,255,.12); }
.sail-logo,.mini-logo { font-size:38px; transform:rotate(-45deg); line-height:1; }
.brand-name { font-size:24px; font-weight:700; }.brand-sub{font-size:13px;opacity:.88}
.side-nav { padding:14px 8px; display:flex; flex-direction:column; gap:5px; }
.side-nav a { color:#eaf4fb; text-decoration:none; padding:13px 14px; border-radius:7px; font-size:16px; display:flex; gap:12px; align-items:center; }
.side-nav a.active,.side-nav a:hover { background:#1686df; color:white; }
.sidebar-foot { margin-top:auto; padding:22px 12px; display:flex; flex-direction:column; align-items:center; gap:4px; font-size:13px; }
.sidebar-foot small { margin-top:8px; opacity:.8; }
.app-main { min-width:0; }
.product-header { height:66px; box-sizing:border-box; background:linear-gradient(90deg,#153f60,#123856); color:white; display:flex; align-items:center; justify-content:space-between; padding:0 28px; font-size:18px; }
.header-right { display:flex; align-items:center; gap:14px; font-size:14px; }
.header-right select { padding:6px 26px 6px 8px; border-radius:5px; }
.connection-pill { background:#18b76a; padding:7px 12px; border-radius:7px; font-weight:700; }
.product-page { max-width:1380px; margin:0 auto; padding:18px 24px 30px; }
.page-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.page-heading h1 { margin:0; font-size:28px; color:#102f52; }
.product-card { background:#fff; border:1px solid #bfd3e2; border-radius:9px; box-shadow:0 1px 2px rgba(15,53,84,.04); overflow:hidden; }
.card-heading { background:linear-gradient(180deg,#f6fbff,#edf5fb); border-bottom:1px solid #d9e6ef; padding:9px 14px; }
.card-heading h2 { margin:0; color:#12365b; font-size:20px; }
.primary-grid { display:grid; grid-template-columns:430px minmax(0,1fr); gap:14px; margin-bottom:14px; align-items:stretch; }
.parameters-card { padding-bottom:12px; }
.parameters-card .config-grid { padding:12px 14px 4px; }
.parameters-card .config-status { margin:6px 14px; }
.parameters-card .config-actions { padding:8px 14px 0; display:flex; gap:8px; flex-wrap:wrap; }
.live-product-card { min-width:0; }
.live-layout { display:grid; grid-template-columns:minmax(0,1fr) 180px; gap:6px; align-items:center; padding:8px 12px 12px; }
.live-geometry svg { width:100%; height:auto; max-height:470px; display:block; }
.live-readouts { background:#f1f7fb; border-radius:9px; padding:14px; display:flex; flex-direction:column; gap:14px; }
.live-readouts div:not(.level-track) { border-bottom:1px solid #cadbe7; padding-bottom:11px; }
.live-readouts span { display:block; color:#536c82; margin-bottom:4px; }
.live-readouts strong { font-size:22px; color:#12365b; }
.reference-panel { margin-bottom:14px; }
.shape-reference-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:12px; }
.reference-card { display:grid; grid-template-columns:minmax(0,1fr) 180px; grid-template-rows:auto 1fr; column-gap:8px; padding:10px; min-height:245px; }
.reference-card h3 { grid-column:1/-1; margin:0 0 2px; font-size:16px; }
.reference-card svg { grid-column:1; width:100%; max-height:205px; align-self:center; overflow:visible; }
.reference-notes { grid-column:2; align-self:center; background:#edf5fb; border-radius:8px; padding:12px; font-size:13px; line-height:1.4; }
.dimension-note { margin:0 12px 12px; padding:7px 10px; text-align:center; border:1px solid #d3e2ed; border-radius:6px; font-size:12px; color:#415d73; }
.device-panel { margin-bottom:14px; }
.device-info-grid { padding:14px; }
.button { background:#117dbb; color:white; border:0; border-radius:5px; padding:9px 14px; cursor:pointer; text-decoration:none; }
.button.secondary { background:#e8f0f6; color:#163c5d; border:1px solid #b9ccda; }
.level-track { height:12px; background:#e0e9ef; border:1px solid #b6c8d5; padding:0!important; overflow:hidden; }
.level-fill { height:100%; background:#1686df; }
@media(max-width:1050px){ .primary-grid{grid-template-columns:1fr}.reference-card{grid-template-columns:1fr}.reference-notes{grid-column:1}.live-layout{grid-template-columns:1fr 160px} }
@media(max-width:760px){ .app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;min-height:auto}.side-nav{flex-direction:row;overflow:auto}.sidebar-foot{display:none}.product-header{height:auto;padding:12px}.primary-grid,.shape-reference-grid,.live-layout{grid-template-columns:1fr}.reference-card{grid-template-columns:1fr}.reference-notes{grid-column:1}.product-page{padding:12px}.brand{padding:12px}.page-heading{align-items:flex-start;gap:10px}.page-heading h1{font-size:23px} }

/* ===== V0.6.2 layout refinement ===== */
.primary-grid { grid-template-columns: 460px minmax(0,1fr); }
.parameters-card .config-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:20px;
  row-gap:0;
  overflow:visible;
}
.parameters-card .config-item { min-width:0; overflow:visible; padding:8px 0; border-bottom:1px solid #e4edf3; }
.parameters-card .config-label { display:block; color:#60778a; font-size:12px; margin-bottom:3px; white-space:normal; }
.parameters-card .config-value { display:block; color:#102f52; font-size:14px; font-weight:700; line-height:1.25; overflow-wrap:anywhere; }
.parameters-card .config-input { box-sizing:border-box; width:100%; max-width:100%; min-width:0; padding:7px 8px; }
.live-layout { grid-template-columns:minmax(0,1fr) 180px; }
.live-geometry { min-width:0; padding:0 4px; }
.live-geometry svg { max-height:430px; }
.reference-card { min-height:260px; grid-template-columns:minmax(0,1fr) 165px; }
.reference-card svg { max-height:230px; }
.reference-notes { font-size:12px; }
@media(max-width:1150px) {
  .primary-grid { grid-template-columns:400px minmax(0,1fr); }
  .parameters-card .config-grid { grid-template-columns:1fr; }
}
@media(max-width:900px) {
  .primary-grid { grid-template-columns:1fr; }
  .parameters-card .config-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* V0.7.1 safe mockup refinement */
.primary-grid{grid-template-columns:420px minmax(0,1fr)}
.parameters-card .config-grid{display:block;padding:10px 14px 4px}
.setup-section-title{color:#12365b;font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.05em;padding:4px 0 7px;border-bottom:1px solid #cfdeea;margin-bottom:3px}
.setup-section-title.sensor-title{margin-top:12px}
.parameters-card .config-item{display:grid;grid-template-columns:145px minmax(0,1fr);align-items:center;min-height:34px;padding:3px 0;border-bottom:1px solid #edf2f6}
.parameters-card .config-label{margin:0;font-size:12px;color:#294c69}
.parameters-card .config-value{font-size:13px;text-align:left}
.parameters-card .config-input{width:100%;height:29px;padding:3px 7px;font-size:13px;border:1px solid #aebfcd;border-radius:4px;box-sizing:border-box}
@media(max-width:1150px){.primary-grid{grid-template-columns:380px minmax(0,1fr)}}
@media(max-width:900px){.primary-grid{grid-template-columns:1fr}.parameters-card .config-item{grid-template-columns:160px minmax(0,1fr)}}

/* V0.7.4: SVG dimension callouts use their own class.
   Do not reuse .iso-dimension; that name is also used by the product UI layout. */
.live-geometry .iso-dim-line,
.reference-card .iso-dim-line {
  fill:none;
  stroke:#1c5790;
  stroke-width:1.7;
  vector-effect:non-scaling-stroke;
}
.live-geometry .iso-dim,
.reference-card .iso-dim {
  fill:#183b63;
  font-weight:600;
}
.live-geometry .iso-value,
.reference-card .iso-value {
  fill:#102d4d;
  font-weight:700;
}

/* V0.7.5: clearer live ISO tank drawing and dimensions. */
.live-geometry .iso-outline {
  stroke-width:4;
  vector-effect:non-scaling-stroke;
}
.live-geometry .iso-hidden {
  stroke-width:1.8;
  vector-effect:non-scaling-stroke;
}
.live-geometry .iso-dim-line {
  stroke-width:2.4;
}
.live-geometry .iso-dim {
  font-size:18px;
  font-weight:700;
}
.live-geometry .iso-value {
  font-size:19px;
  font-weight:800;
}
.live-geometry .iso-arrow-head {
  fill:#1c5790;
}


/* ===== V0.7.6 compact device information ===== */
.device-info-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  column-gap:28px;
  row-gap:0;
  padding:10px 16px 12px;
}
.device-info-grid .config-item {
  display:grid;
  grid-template-columns:minmax(110px,0.9fr) minmax(0,1.35fr);
  align-items:center;
  min-width:0;
  min-height:36px;
  padding:5px 0;
  border-bottom:1px solid #e4edf3;
}
.device-info-grid .config-label {
  margin:0;
  color:#60778a;
  font-size:12px;
}
.device-info-grid .config-value {
  min-width:0;
  margin:0;
  color:#102f52;
  font-size:13px;
  font-weight:700;
  text-align:left;
  overflow-wrap:anywhere;
}
@media(max-width:1050px) {
  .device-info-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:700px) {
  .device-info-grid { grid-template-columns:1fr; }
}

/* ===== V0.7.12 approved fixed tank image renderer ===== */
.tank-image-diagram {
  position:relative;
  width:100%;
  max-width:760px;
  margin:0 auto;
}
.tank-image-diagram[hidden] { display:none !important; }
.tank-image-diagram img { display:block; width:100%; height:auto; }

.tank-dimension-input {
  position:absolute;
  transform:translate(-50%,-50%);
  z-index:3;
  box-sizing:border-box;
  width:10.5%;
  min-width:58px;
  min-height:28px;
  border:1px solid #b9c7d5;
  border-radius:5px;
  background:#fff36a;
  color:#000;
  font:700 22px/1 Arial,sans-serif;
  text-align:center;
  padding:0 3px;
}
.tank-dimension-input:disabled {
  opacity:1;
  color:#000;
  -webkit-text-fill-color:#000;
  cursor:default;
  background:#fff;
}
.tank-dimension-input:not(:disabled) {
  background:#fff36a;
  outline:2px solid rgba(0,104,205,.18);
}

/* Trapezoidal approved image positions */
.trap-dim-top-breadth    { left:47%;   top:20.0%; }
.trap-dim-depth          { left:87%;   top:24.0%; }
.trap-dim-total-height   { left:7.3%;  top:61.0%; }
.trap-dim-top-height     { left:22%;   top:48%; }
.trap-dim-bottom-height  { left:22.0%; top:74.5%; }
.trap-dim-bottom-breadth { left:57.7%; top:93.0%; }

/* Linear image is cropped from the right half of the approved two-tank artwork */
.linear-dim-breadth { left:50.5%; top:22.5%; }
.linear-dim-depth   { left:88.0%; top:24.5%; }
.linear-dim-height  { left:11.8%; top:63.0%; }

.shape-reference-approved img {
  display:block;
  width:100%;
  max-width:1200px;
  height:auto;
  margin:8px auto 0;
}

@media(max-width:700px) {
  .tank-dimension-input { font-size:16px; min-height:24px; }
}


/* ===== V0.7.13 dashboard baseline =====
   Live Tank View left, Device Information top-right,
   compact Tank Shape Reference below Device Information,
   Tank Setup below the Live Tank View.
*/
.tank-dashboard-grid {
  display:grid;
  grid-template-columns:minmax(0, 2.15fr) minmax(300px, 1fr);
  grid-template-areas:
    "live side"
    "setup side";
  gap:14px;
  align-items:start;
}
.tank-dashboard-grid > .live-product-card { grid-area:live; }
.tank-dashboard-grid > .parameters-card { grid-area:setup; }
.tank-dashboard-side {
  grid-area:side;
  display:flex;
  flex-direction:column;
  gap:14px;
  min-width:0;
}
.tank-dashboard-side .device-panel,
.tank-dashboard-side .reference-panel { margin:0; }

.live-product-card .live-layout {
  grid-template-columns:minmax(0,1fr) 180px;
  align-items:center;
  min-height:500px;
}
.live-product-card .tank-image-diagram {
  max-width:820px;
}

/* Smaller, cleaner editable overlays.  Yellow is edit-state only. */
.tank-dimension-input {
  width:9.0%;
  min-width:50px;
  min-height:25px;
  height:28px;
  border-radius:4px;
  font-size:18px;
  padding:0 2px;
}
.tank-dimension-input:not(:disabled) {
  background:#fff36a;
  outline:1px solid rgba(0,104,205,.28);
}
.tank-dimension-input:disabled {
  background:#fff;
}

/* Approved reference artwork is deliberately compact in the right column. */
.tank-dashboard-side .shape-reference-approved {
  padding:8px 10px 10px;
}
.tank-dashboard-side .shape-reference-approved img {
  width:100%;
  max-width:430px;
  margin:0 auto;
}
.tank-dashboard-side .reference-panel .card-heading h2 {
  font-size:18px;
}

/* Keep the compact device-information treatment in the narrower side column. */
.tank-dashboard-side .device-info-grid {
  grid-template-columns:1fr;
  gap:0;
  padding:10px 14px 12px;
}
.tank-dashboard-side .device-info-grid .config-item {
  min-height:0;
  padding:7px 0;
}

/* Tank Setup spans only beneath the Live Tank View, matching the new baseline. */
.tank-dashboard-grid .parameters-card {
  min-width:0;
}

@media(max-width:1100px) {
  .tank-dashboard-grid {
    grid-template-columns:1fr;
    grid-template-areas:
      "live"
      "setup"
      "side";
  }
  .tank-dashboard-side .device-info-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .tank-dashboard-side .shape-reference-approved img {
    max-width:700px;
  }
}
@media(max-width:760px) {
  .live-product-card .live-layout { grid-template-columns:1fr; min-height:0; }
  .tank-dashboard-side .device-info-grid { grid-template-columns:1fr; }
  .tank-dimension-input { font-size:14px; min-width:42px; height:24px; }
}


/* ===== V0.7.14 graphics-mode correction ===== */
.tank-dimension-input[hidden] {
  display:none !important;
}
.tank-dimension-input:not([hidden]) {
  display:block;
}
.tank-dimension-input:not([hidden]):not(:disabled) {
  background:#fff36a;
  color:#000;
  -webkit-text-fill-color:#000;
  pointer-events:auto;
  opacity:1;
  z-index:10;
}


/* ===== V0.7.18 dimension-control display =====
   After Read from Device, dimensions remain visible on the tank artwork.
   Normal mode: white read-only values.
   Edit mode: yellow editable values.
*/
#liveView .tank-dimension-input:not([hidden]) {
  display:block !important;
  background:#fff;
  color:#000;
  -webkit-text-fill-color:#000;
  pointer-events:none;
  opacity:1;
  z-index:20;
}
#liveView.tank-edit-mode .tank-dimension-input.dimension-editor-active {
  background:#fff36a;
  color:#000;
  -webkit-text-fill-color:#000;
  pointer-events:auto;
  opacity:1;
  z-index:20;
}

/* V0.7.25 overview CAN-interface status */
.can-status-pill.can-status-error { background:#b83a3a; }

/* ===== V0.7.26 Network page ===== */
.network-controls { display:flex; gap:14px; align-items:end; flex-wrap:wrap; margin:12px 0; }
.network-controls label { display:flex; flex-direction:column; gap:6px; font-weight:600; }
.network-controls select { min-width:170px; padding:8px 10px; border:1px solid #b9c7d5; border-radius:6px; background:#fff; }
.network-stats { display:grid; grid-template-columns:repeat(5,minmax(100px,1fr)); gap:10px; margin-top:14px; }
.network-stats > div { background:#f4f7fa; border:1px solid #dbe4ec; border-radius:7px; padding:10px; display:flex; flex-direction:column; gap:4px; }
.network-stats span { color:#647482; font-size:12px; }
.n2k-bus { padding:18px 16px 16px; }
.n2k-backbone { position:relative; height:34px; margin:0 24px 22px; border-bottom:5px solid #3e657e; text-align:center; }
.n2k-backbone span { position:relative; top:18px; display:inline-block; background:#fff; padding:0 12px; font-weight:700; color:#334b5b; }
.network-device-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:14px; }
.network-device-card { position:relative; border:1px solid #c8d6e1; border-radius:9px; background:#fff; padding:13px 14px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.network-device-card:before { content:""; position:absolute; left:50%; top:-25px; width:2px; height:25px; background:#3e657e; }
.network-device-card.stale { opacity:.55; }
.network-device-head { display:flex; justify-content:space-between; align-items:center; font-size:17px; margin-bottom:9px; }
.network-device-card > div:not(.network-device-head) { display:flex; justify-content:space-between; gap:10px; padding:3px 0; }
.device-dot { width:10px; height:10px; border-radius:50%; background:#28a745; }
.network-device-card.stale .device-dot { background:#89959d; }
@media(max-width:760px) { .network-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ===== SenseServer V0.7.28 navigation architecture ===== */
.nav-divider { height:1px; background:rgba(255,255,255,.16); margin:10px 12px 8px; }
.nav-caption { padding:4px 14px 5px; font-size:11px; text-transform:uppercase; letter-spacing:.08em; opacity:.7; }
.placeholder-card { padding:22px; }
.network-page-card { margin-top:14px; }
.network-settings-panel .network-controls { padding:14px 16px 0; margin-top:0; }
.network-settings-panel #networkStatus { margin:0 16px; }
.network-settings-panel .network-stats { margin:14px 16px 16px; }

/* V0.7.29: TankSense configuration is entered exclusively from the
   device Configuration item in the left navigation.  Keep the legacy
   control in the DOM because the proven editor state machine still uses
   it internally, but never present it as a user-facing button. */
#editConfig {
  display: none !important;
}

/* ===== V0.7.32 System / Sense firmware manager ===== */
.system-fw-intro { padding:14px 16px 8px; color:#4d5e6b; }
.fw-table-wrap { overflow-x:auto; padding:8px 16px 16px; }
.fw-table { width:100%; border-collapse:collapse; }
.fw-table th,.fw-table td { text-align:left; padding:11px 10px; border-bottom:1px solid #dce5ec; white-space:nowrap; }
.fw-table th { color:#60717e; font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
.fw-table td:last-child,.fw-table th:last-child { text-align:right; }
.fw-state { display:inline-block; padding:4px 9px; border-radius:12px; font-size:12px; font-weight:700; }
.fw-state.online { background:#dff4e5; color:#197437; }
.fw-state.offline { background:#edf0f2; color:#69757d; }
.fw-update-button:disabled { opacity:.45; cursor:not-allowed; }
.fw-progress-card { padding-bottom:18px; }
.fw-target { padding:12px 16px 8px; font-weight:700; }
.fw-progress-track { height:18px; margin:8px 16px; border-radius:9px; background:#e4e9ed; overflow:hidden; }
.fw-progress-bar { width:0; height:100%; background:#287db6; transition:width .2s linear; }
.fw-progress-row { display:flex; justify-content:space-between; padding:2px 16px 6px; }
#fwMessage,.fw-error { padding:2px 16px; }
.fw-error { color:#b3261e; font-weight:600; }

/* TankSense local history */
.history-range { display:flex; gap:6px; flex-wrap:wrap; }
.history-range button { border:1px solid #b9c6cf; background:#fff; color:#33434f; border-radius:5px; padding:7px 10px; cursor:pointer; }
.history-range button.active { background:#1674a6; color:#fff; border-color:#1674a6; }
.history-chart-wrap { min-height:330px; width:100%; margin-top:10px; }
#historyChart { display:block; width:100%; height:320px; }
.history-stats { display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)); gap:12px; margin-top:12px; }
.history-stats div { border:1px solid #dbe2e7; border-radius:6px; padding:10px; }
.history-stats span { display:block; color:#65727c; font-size:12px; }
.history-stats strong { display:block; margin-top:4px; }
@media(max-width:760px){.history-stats{grid-template-columns:repeat(2,1fr)}}

/* V0.7.35 historian controls */
.history-settings-grid { display:grid; grid-template-columns:minmax(320px,0.8fr) minmax(420px,1.2fr); gap:16px; margin-top:16px; }
.history-setting-row { display:grid; grid-template-columns:140px 1fr; align-items:center; gap:12px; margin:12px 0; }
.history-setting-row label { color:#53636f; font-weight:600; }
.history-setting-row select { width:100%; max-width:240px; padding:7px 9px; border:1px solid #b9c6cf; border-radius:5px; background:#fff; }
.history-setting-actions { display:flex; align-items:center; gap:12px; margin-top:14px; }
.history-storage { display:grid; grid-template-columns:repeat(2,minmax(180px,1fr)); gap:10px; }
.history-storage div { border:1px solid #dbe2e7; border-radius:6px; padding:10px; min-width:0; }
.history-storage span { display:block; color:#65727c; font-size:12px; }
.history-storage strong { display:block; margin-top:4px; overflow-wrap:anywhere; }
.history-storage-note { margin-top:12px; }
.history-warning { color:#a04a00 !important; font-weight:700; }
@media(max-width:900px){.history-settings-grid{grid-template-columns:1fr}.history-storage{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.history-storage{grid-template-columns:1fr}.history-setting-row{grid-template-columns:1fr}}


/* V0.7.36 Dashboard-only vertical tank level indicator.
   Individual TankSense device artwork is intentionally untouched. */
.dashboard-tank-row { display:flex; align-items:center; gap:18px; margin:10px 0 12px; }
.dashboard-tank-gauge {
  position:relative; width:82px; height:132px; flex:0 0 82px;
  border:2px solid #27343d; border-radius:42% 42% 18% 18% / 10% 10% 7% 7%;
  background:#f4f7f9; overflow:hidden; box-shadow:inset 0 0 0 1px rgba(255,255,255,.65);
}
.dashboard-tank-gauge::before {
  content:""; position:absolute; z-index:3; left:-2px; right:-2px; top:-2px; height:16px;
  border:2px solid #27343d; border-radius:50%; background:#f4f7f9;
}
.dashboard-tank-fill { position:absolute; left:0; right:0; bottom:0; background:#4ba9d1; transition:height .35s ease; }
.dashboard-tank-gauge.fuel .dashboard-tank-fill { background:#55ad62; }
.dashboard-tank-gauge.water .dashboard-tank-fill { background:#4ba9d1; }
.history-setting-row label { padding-left:10px; }

/* ===== V0.7.37 TankSense device System page ===== */
.device-system-grid{display:grid;grid-template-columns:repeat(2,minmax(320px,1fr));gap:16px}
.system-kv-grid{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:10px;padding:12px 14px 16px}
.system-kv-grid>div{border:1px solid #dbe2e7;border-radius:6px;padding:10px;min-width:0}
.system-kv-grid span,.system-metric span{display:block;color:#65727c;font-size:12px}
.system-kv-grid strong,.system-metric strong{display:block;margin-top:4px;overflow-wrap:anywhere}
.system-health-grid{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:10px;padding:12px 14px 16px}
.system-metric{border:1px solid #dbe2e7;border-radius:6px;padding:12px}
.system-metric strong{font-size:20px;color:#12365b}.system-metric small{display:block;color:#89959d;margin-top:5px}
.system-note{margin:0 14px 14px;padding:9px 11px;border-radius:5px;background:#f4f7f9;color:#65727c;font-size:12px}
.system-maintenance-card{grid-column:1/-1}.maintenance-action{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 16px;border-bottom:1px solid #e2e8ec}.maintenance-action p{margin:4px 0 0;color:#65727c}.danger-action strong{color:#9a2d2d}.danger-button{background:#a33;color:#fff;border-color:#922}.danger-button:disabled{opacity:.45;cursor:not-allowed}.connection-pill.offline{background:#f3dddd;color:#8b2f2f}
@media(max-width:850px){.device-system-grid{grid-template-columns:1fr}.system-maintenance-card{grid-column:auto}}
@media(max-width:560px){.system-kv-grid,.system-health-grid{grid-template-columns:1fr}}

/* ===== V0.7.37 TankSense device System page ===== */
.device-system-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.device-system-grid .product-card { margin:0; min-width:0; }
.system-value-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 22px; padding:10px 16px 14px; }
.system-value { display:flex; justify-content:space-between; gap:14px; align-items:baseline; padding:9px 0; border-bottom:1px solid #e3e9ee; }
.system-value span { color:#65727c; }
.system-value strong { text-align:right; overflow-wrap:anywhere; }
.system-note { margin:0 16px 16px; padding:10px 12px; border-radius:6px; background:#f4f7fa; color:#65727c; font-size:13px; }
.system-maintenance-card { grid-column:1 / -1; }
.maintenance-action { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:16px; border-bottom:1px solid #e3e9ee; }
.maintenance-action .button { min-width:120px; }
.danger-action strong { color:#9b2c24; }
.danger-button { background:#a9362e; }
.danger-button:disabled { opacity:.45; }
@media(max-width:900px) { .device-system-grid { grid-template-columns:1fr; } .system-maintenance-card { grid-column:auto; } }
@media(max-width:600px) { .system-value-grid { grid-template-columns:1fr; } .maintenance-action { align-items:flex-start; flex-direction:column; } }
/* ===== V0.7.39 ChainSense ===== */
.chain-overview-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px}.chain-side{display:grid;gap:16px;align-content:start}.chain-graphic-wrap{position:relative;background:#eef6fb}.chain-graphic-wrap>img{display:block;width:100%;height:auto}.chain-live-overlay{position:absolute;left:3%;bottom:3%;display:flex;gap:10px;flex-wrap:wrap}.chain-live-overlay>div{background:rgba(255,255,255,.92);border:1px solid #bfd3e2;border-radius:7px;padding:8px 12px;min-width:125px}.chain-live-overlay span{display:block;font-size:12px;color:#536b7c}.chain-live-overlay strong{font-size:20px;color:#123856}.config-item{display:flex;flex-direction:column;gap:6px}.config-item input{box-sizing:border-box;width:100%;padding:9px;border:1px solid #b9cbd8;border-radius:5px;font:inherit;background:white}.config-item input:disabled{background:#eef3f6;color:#536b7c}@media(max-width:900px){.chain-overview-grid{grid-template-columns:1fr}.chain-live-overlay{position:static;padding:10px;background:white}}

/* V0.7.39a: ChainSense overview readouts use the same compact key/value treatment as TankSense. */
.chain-side .device-info-grid {
  grid-template-columns:1fr;
  gap:0;
  padding:10px 14px 12px;
}
.chain-side .device-info-grid .config-item {
  min-height:0;
  padding:7px 0;
}
@media(max-width:900px) {
  .chain-side .device-info-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px) {
  .chain-side .device-info-grid { grid-template-columns:1fr; }
}

/* ===== V0.7.41 ChainSense Overview repair =====
   Restore TankSense compact key/value rows after the generic ChainSense config rule. */
.chain-side .device-info-grid .config-item {
  display:grid;
  grid-template-columns:minmax(110px,0.9fr) minmax(0,1.35fr);
  align-items:center;
  gap:0;
  min-width:0;
  min-height:0;
  padding:7px 0;
  border-bottom:1px solid #e4edf3;
}
.chain-side .device-info-grid .config-label {
  margin:0;
  color:#60778a;
  font-size:12px;
}
.chain-side .device-info-grid .config-value {
  min-width:0;
  margin:0;
  color:#102f52;
  font-size:13px;
  font-weight:700;
}


/* ===== V0.7.42 ChainSense live dimension overlays ===== */
.chain-dimension-value{position:absolute;z-index:2;box-sizing:border-box;min-width:86px;padding:5px 9px;border:1px solid rgba(18,56,86,.38);border-radius:5px;background:rgba(255,255,255,.92);color:#102f52;font-size:15px;font-weight:700;line-height:1.2;text-align:center;box-shadow:0 1px 2px rgba(0,0,0,.08)}
/* Values sit directly below the labels embedded in the approved artwork. */
.chain-bow-value{left:49.5%;top:34.0%;transform:translateX(-50%)}
.chain-depth-value{left:69.0%;top:61.5%;transform:translateX(-50%)}
/* Chain deployed has no embedded label; place it midway along the visible chain. */
.chain-rode-value{left:37%;top:56.0%;transform:translateX(-50%)}
@media(max-width:700px){.chain-dimension-value{min-width:66px;padding:3px 6px;font-size:12px}}

/* ===== V0.7.43 ChainSense momentary windlass controls ===== */
.windlass-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 16px 8px}
.windlass-button{min-height:54px;border:1px solid #9fb7c8;border-radius:7px;background:#f7fafc;color:#123856;font:inherit;font-weight:700;cursor:pointer;touch-action:none;user-select:none}
.windlass-button:hover{background:#edf4f8}
.windlass-button:active,.windlass-button.active{background:#dceaf3;border-color:#607f95}
.windlass-button:focus-visible{outline:3px solid rgba(18,56,86,.22);outline-offset:2px}
.windlass-control-status{padding:2px 16px 14px;color:#60778a;font-size:12px;text-align:center}
@media(max-width:420px){.windlass-controls{grid-template-columns:1fr}}

/* ===== V0.7.44 ChainSense latched anchor position ===== */
.anchor-position-body{padding:12px 16px 16px}.anchor-position-value{box-sizing:border-box;width:100%;min-height:58px;padding:9px 12px;border:1px solid #bfd3e2;border-radius:6px;background:#f8fbfd;color:#102f52;font-size:15px;font-weight:700;line-height:1.45;white-space:pre-line}.anchor-position-note{margin-top:7px;color:#60778a;font-size:12px}.anchor-position-actions{margin-top:10px}.anchor-position-actions button{width:100%;min-height:38px}.anchor-position-actions button:disabled{opacity:.5;cursor:not-allowed}

/* ===== V0.7.45 ChainSense scope overlay ===== */
.chain-scope-box{position:absolute;z-index:2;left:53%;top:76%;transform:translateX(-50%);box-sizing:border-box;min-width:96px;padding:5px 9px;border:1px solid rgba(18,56,86,.38);border-radius:5px;background:rgba(255,255,255,.92);color:#102f52;text-align:center;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.chain-scope-label{font-size:11px;font-weight:600;color:#60778a;line-height:1.1;text-transform:uppercase;letter-spacing:.04em}
.chain-scope-value{margin-top:2px;font-size:15px;font-weight:700;line-height:1.2}
@media(max-width:700px){.chain-scope-box{min-width:72px;padding:3px 6px}.chain-scope-label{font-size:9px}.chain-scope-value{font-size:12px}}

/* ===== V0.7.46 ChainSense Anchor Watch history ===== */
.anchor-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;padding:14px 16px}.anchor-settings-grid label{display:grid;gap:5px;color:#60778a;font-size:12px}.anchor-settings-grid input{box-sizing:border-box;width:100%;padding:8px;border:1px solid #bfd3e2;border-radius:5px;background:#fff;color:#102f52;font:inherit}.anchor-map-note{padding:0 16px 10px}.anchor-track-wrap{overflow-x:auto;padding:0 16px 16px}.anchor-track-table{width:100%;border-collapse:collapse;font-size:13px}.anchor-track-table th,.anchor-track-table td{padding:8px 10px;border-bottom:1px solid #e4edf3;text-align:left;white-space:nowrap}.connection-pill[data-state="warning"]{background:#f0ad4e}.connection-pill[data-state="alarm"]{background:#c94b4b}

/* V0.7.48 Anchor Watch navigation-state indication */
.connection-pill[data-state="no-gps"] { background:#6b7280; color:#fff; }

/* V0.7.50 global alarm banner and bounded Anchor Watch track */
.global-alarm-banner{position:fixed;z-index:2000;top:8px;left:50%;transform:translateX(-50%);min-width:360px;max-width:min(760px,calc(100vw - 24px));border-radius:7px;box-shadow:0 3px 14px rgba(0,0,0,.28);overflow:hidden}
.global-alarm-banner[hidden]{display:none}
.global-alarm-banner a{display:flex;gap:12px;align-items:center;justify-content:center;padding:10px 16px;color:#fff;text-decoration:none;font-size:14px}
.global-alarm-banner[data-severity="warning"]{background:#b87813}
.global-alarm-banner[data-severity="alarm"]{background:#b52d2d}
.global-alarm-banner strong{letter-spacing:.06em}
.anchor-track-wrap{max-height:390px;overflow:auto}
.anchor-track-table thead th{position:sticky;top:0;z-index:1;background:#fff}
@media(max-width:760px){.global-alarm-banner{top:4px;min-width:0;width:calc(100vw - 16px)}}

/* V0.7.50 global alarm is also rendered inside the shared sidebar on every page. */
.global-alarm-sidebar{margin:8px 10px 4px;border-radius:6px;overflow:hidden;box-shadow:0 2px 7px rgba(0,0,0,.2)}
.global-alarm-sidebar[hidden]{display:none}
.global-alarm-sidebar a{display:flex;flex-direction:column;gap:2px;padding:9px 10px;color:#fff;text-decoration:none;text-align:center}
.global-alarm-sidebar strong{font-size:13px;letter-spacing:.08em}
.global-alarm-sidebar span{font-size:11px;font-weight:700}
.global-alarm-sidebar[data-severity="warning"]{background:#b87813}
.global-alarm-sidebar[data-severity="alarm"]{background:#b52d2d}


/* ===== V0.7.51 ChainSense Anchor Watch overview map ===== */
.chain-map-section{border-top:1px solid #c9dce8;background:#fff;padding:12px 14px 10px}
.chain-map-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;color:#102f52}
.chain-map-heading strong{font-size:16px}
.chain-map-status{font-size:12px;font-weight:700;color:#526d80}
.chain-map-status[data-state="safe"]{color:#287044}.chain-map-status[data-state="warning"]{color:#a36708}.chain-map-status[data-state="alarm"]{color:#b52d2d}.chain-map-status[data-state="no-gps"]{color:#8b4f17}
.chain-map{height:340px;min-height:280px;border:1px solid #bfd3e2;border-radius:6px;background:#eaf2f7;overflow:hidden}
.chain-map-foot{display:flex;justify-content:space-between;gap:12px;padding-top:7px;font-size:11px;color:#6b7f8d}.chain-map-foot a{color:#245f8d;text-decoration:none;font-weight:700}.chain-map-foot a:hover{text-decoration:underline}
@media(max-width:900px){.chain-map{height:320px}}

/* ===== SenseServer V0.7.52 dashboard identity + ChainSense chain gauge ===== */
.brand{background:#eaf4fb;padding:10px 8px;border-bottom:1px solid #c8dbe9;justify-content:center}
.brand-logo-image{display:block;width:100%;max-width:184px;height:auto}
.global-alarm-banner[data-severity="safe"]{background:#238653}
.global-alarm-sidebar[data-severity="safe"]{background:#238653}

#chains.tank-grid{grid-template-columns:1fr}
.chain-dashboard-card{padding:0;overflow:hidden}
.chain-dashboard-card::after{display:none}
.chain-card-grid{display:grid;grid-template-columns:92px minmax(180px,250px) minmax(240px,1fr);gap:18px;align-items:center;padding:18px 20px;min-height:160px}
.chain-card-anchor{display:flex;align-items:center;justify-content:center;color:#123b70}
.chain-card-anchor svg{width:82px;height:100px;display:block}
.chain-card-name{font-size:16px;font-weight:700;margin-bottom:6px;color:#102f52}
.chain-card-summary .big{font-size:30px;margin:2px 0 8px}
.chain-card-summary .detail{margin:4px 0}
.chain-card-link{margin-top:10px;color:#087bc1;font-weight:700}
.chain-card-gauge{position:relative;padding:2px 8px 2px 0;min-width:0}
.chain-card-gauge-title{display:flex;justify-content:space-between;align-items:center;font-size:16px;color:#102f52;margin-bottom:12px}
.chain-card-gauge-title strong{font-size:18px}
.chain-card-scale-labels{display:flex;justify-content:space-between;color:#183b63;margin-bottom:6px}
.chain-card-track{height:14px;border-radius:8px;background:#d9e3eb;position:relative;box-shadow:inset 0 1px 2px rgba(0,0,0,.12)}
.chain-card-fill{position:absolute;left:0;top:0;bottom:0;border-radius:8px;background:#2798dc}
.chain-card-thumb{position:absolute;top:50%;width:28px;height:28px;border-radius:50%;background:#2798dc;transform:translate(-50%,-50%);box-shadow:0 1px 4px rgba(0,0,0,.18)}
.chain-card-ticks{display:flex;justify-content:space-between;color:#31536f;font-size:12px;margin-top:10px}
.chain-card-current{position:absolute;right:6px;top:48px;transform:translateY(-50%);display:none}
@media(max-width:1050px){.chain-card-grid{grid-template-columns:90px 250px minmax(260px,1fr);gap:14px}.chain-card-anchor svg{width:68px}}
@media(max-width:760px){.chain-card-grid{grid-template-columns:70px 1fr;align-items:start}.chain-card-gauge{grid-column:1/-1}.chain-card-anchor svg{width:58px;height:78px}}


/* ===== V0.7.56 TankSense dashboard visual alignment ===== */
#tanks.tank-grid{grid-template-columns:repeat(auto-fit,minmax(min(620px,100%),1fr))}
.tank-dashboard-card{padding:0;overflow:hidden}
.tank-dashboard-card::after{display:none}
.tank-card-grid{display:grid;grid-template-columns:92px minmax(180px,250px) minmax(240px,1fr);gap:18px;align-items:center;padding:18px 20px;min-height:160px}
.tank-card-icon{display:flex;align-items:center;justify-content:center;color:#287eac}
.tank-card-icon.fuel{color:#3f8e4b}
.tank-card-icon svg{width:72px;height:82px;display:block}
.tank-card-name{font-size:16px;font-weight:700;margin-bottom:5px;color:#102f52}
.tank-card-summary .big{font-size:30px;margin:2px 0 7px}
.tank-card-summary .detail{margin:3px 0}
.tank-card-link{margin-top:8px;color:#087bc1;font-weight:700}
.tank-card-gauge{position:relative;padding:2px 6px 2px 0;min-width:0}
.tank-card-gauge-title{display:flex;justify-content:space-between;align-items:center;color:#102f52;margin-bottom:12px}
.tank-card-gauge-title strong{font-size:18px}
.tank-card-gauge-title span{font-size:13px;font-weight:700}
.tank-card-scale-labels{display:flex;justify-content:space-between;color:#183b63;font-size:12px;margin-bottom:6px}
.tank-card-track{height:14px;border-radius:8px;background:#d9e3eb;position:relative;box-shadow:inset 0 1px 2px rgba(0,0,0,.12)}
.tank-card-fill{position:absolute;left:0;top:0;bottom:0;border-radius:8px;background:#4ba9d1;transition:width .35s ease}
.tank-card-fill.fuel{background:#55ad62}
.tank-card-thumb{position:absolute;top:50%;width:26px;height:26px;border-radius:50%;background:#4ba9d1;transform:translate(-50%,-50%);box-shadow:0 1px 4px rgba(0,0,0,.18);transition:left .35s ease}
.tank-card-thumb.fuel{background:#55ad62}
.tank-card-ticks{display:flex;justify-content:space-between;color:#31536f;font-size:11px;margin-top:10px}
.tank-card-current{margin-top:10px;text-align:right;color:#102f52;font-size:16px;font-weight:700}
@media(max-width:760px){.tank-card-grid{grid-template-columns:70px 1fr;gap:12px;align-items:start}.tank-card-icon svg{width:58px;height:68px}.tank-card-gauge{grid-column:1/-1;padding-top:8px}}

/* ===== V0.7.60 phone Anchor Control ===== */
.anchor-remote-body{margin:0;background:#eef4f8;color:#102f52;font-family:Arial,Helvetica,sans-serif;overscroll-behavior:none}
.anchor-remote{
    width:min(100%,520px);
    height:100dvh;
    min-height:0;
    margin:0 auto;
    padding:calc(10px + env(safe-area-inset-top)) 14px
            calc(10px + env(safe-area-inset-bottom));
    display:flex;
    flex-direction:column;
    gap:6px;
    overflow:hidden;
}
.anchor-remote-button.down span{transform:scale(1.0);}
.anchor-remote-button.up span{font-size:clamp(29px,6.3vh,47px);}
.anchor-remote-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:0 0 auto;min-height:0;padding:2px 0;}
.anchor-remote-header strong{display:block;font-size:14px;line-height:1}
.anchor-remote-header span{display:block;color:#60778a;font-size:10px;line-height:1;margin-top:2px}
.anchor-remote-status{padding:4px 8px;border-radius:12px;background:#dff4e5;color:#197437;font-size:10px;font-weight:700}
.anchor-remote-status.offline{background:#f3dddd;color:#8b2f2f}
.anchor-remote-readout{text-align:center;background:#fff;border:1px solid #bfd3e2;border-radius:12px;padding:7px 10px}
/* Anchor Watch alert states reuse the established SenseServer alarm palette. */
.anchor-remote-readout[data-state="warning"]{background:#b87813;border-color:#b87813}
.anchor-remote-readout[data-state="alarm"]{background:#b52d2d;border-color:#b52d2d}
.anchor-remote-readout[data-state="no-gps"]{background:#6b7280;border-color:#6b7280}
.anchor-remote-readout[data-state="warning"] .anchor-remote-label,.anchor-remote-readout[data-state="warning"] .anchor-remote-chain,.anchor-remote-readout[data-state="warning"] .anchor-remote-distance,.anchor-remote-readout[data-state="warning"] .anchor-remote-geofence,
.anchor-remote-readout[data-state="alarm"] .anchor-remote-label,.anchor-remote-readout[data-state="alarm"] .anchor-remote-chain,.anchor-remote-readout[data-state="alarm"] .anchor-remote-distance,.anchor-remote-readout[data-state="alarm"] .anchor-remote-geofence,
.anchor-remote-readout[data-state="no-gps"] .anchor-remote-label,.anchor-remote-readout[data-state="no-gps"] .anchor-remote-chain,.anchor-remote-readout[data-state="no-gps"] .anchor-remote-distance,.anchor-remote-readout[data-state="no-gps"] .anchor-remote-geofence{color:#fff}
.anchor-remote-label{font-size:12px;font-weight:700;letter-spacing:.09em;color:#60778a}
.anchor-remote-chain{font-size:clamp(38px,8vh,58px);line-height:1;font-weight:800;color:#102f52;margin:2px 0 5px}
.anchor-distance-row{display:flex;align-items:baseline;justify-content:center;gap:18px;min-height:28px}
.anchor-remote-distance{font-size:24px;line-height:1.1;font-weight:800;color:#102f52;margin:2px 0 0}
.anchor-remote-geofence{font-size:14px;font-weight:800;letter-spacing:.04em}
.anchor-remote-geofence[data-state="safe"]{color:#287044}
.anchor-remote-geofence[data-state="warning"]{color:#a36708}
.anchor-remote-geofence[data-state="alarm"]{color:#b52d2d}
.anchor-remote-geofence[data-state="no-gps"]{color:#8b4f17}
.anchor-remote-geofence[data-state="idle"]{color:#60778a}
.anchor-remote-motion{font-size:14px;color:#526d80;font-weight:600}
.anchor-remote-controls{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
    flex:none;
    height:18dvh;
    min-height:0;
    max-height:none;
}
.anchor-remote-button{border:2px solid #9fb7c8;border-radius:14px;background:#fff;color:#123856;font:800 clamp(18px,4.5vw,24px)/1 Arial,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 2px 5px rgba(0,0,0,.08)}
.anchor-remote-button span{display:block;font-size:clamp(32px,7vh,52px);margin-bottom:clamp(5px,1.5vh,16px)}
.anchor-remote-button:disabled{opacity:.38}
.anchor-remote-button:not(:disabled).active{background:#dceaf3;border-color:#287eac;transform:translateY(1px)}
.anchor-remote-arm{min-height:58px;border:0;border-radius:10px;background:#123f63;color:#fff;font-size:16px;font-weight:800;letter-spacing:.02em}
.anchor-remote-arm.armed{background:#a33}
.anchor-remote-message{text-align:center;min-height:20px;color:#60778a;font-weight:700}
.anchor-remote-footer{text-align:center;color:#6b7f8d;font-size:10px;line-height:1.2}
/*.anchor-remote-body{background: blue !important;}*/
@media(max-width:380px){
    .anchor-remote{
        padding-left:10px;
        padding-right:10px;
        gap:7px;
    }

    .anchor-remote-chain{
        font-size:48px;
    }

    .anchor-remote-controls{
        gap:10px;
        min-height:0;
    }

    .anchor-remote-button{
        font-size:20px;
    }

    .anchor-remote-button span{
        font-size:42px;
    }
}

/* ===== V0.7.61 Global Configuration ===== */
.config-section{margin-bottom:16px}.global-config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px 20px;padding:4px 0}.global-config-grid label{display:flex;flex-direction:column;gap:6px;color:#526d80;font-size:13px;font-weight:700}.global-config-grid input:not([type="checkbox"]),.global-config-grid select{box-sizing:border-box;width:100%;min-height:38px;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:7px 9px;font:14px Arial,sans-serif}.config-check-grid label:has(input[type="checkbox"]){flex-direction:row;align-items:center;gap:9px;min-height:38px}.config-check-grid input[type="checkbox"]{width:18px;height:18px}.config-storage-status{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid #d9e4eb}.config-storage-status div{display:flex;flex-direction:column;gap:4px}.config-storage-status span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#718695}.config-storage-status strong{font-size:14px;color:#173d5b;overflow-wrap:anywhere}.config-notice{margin-top:14px;padding:10px 12px;border-radius:7px;background:#edf4f8;color:#526d80;font-size:13px}.config-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 24px}

/* ===== SenseServer V0.7.62 global configuration cleanup ===== */
.config-section>.global-config-grid{padding:12px 14px 14px}
.config-section>.config-storage-status{margin:0;padding:13px 14px 14px;border-top:1px solid #d9e4eb}
.config-section>.config-notice{margin:0 14px 14px}
.config-storage-status span{font-size:12px;text-transform:none;letter-spacing:0;color:#60778a}
.config-storage-status strong{font-size:14px;font-weight:600;color:#183c59;margin-top:2px}
.config-storage-status #historyPath{font-weight:400}
.config-label-note{font-weight:400;color:#718695;font-size:11px}
.config-actions{padding:0 2px}
.config-actions .button:disabled{opacity:.45;cursor:not-allowed}
.config-restart-message{font-size:13px;color:#a36708;font-weight:600}

/* ===== SenseServer V0.7.63 notifications ===== */
.config-label-line{display:block;line-height:1.2}
.notification-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:12px 14px 14px}
.notification-panel{border:1px solid #d5e1e9;border-radius:7px;background:#f9fbfc;padding:12px}
.notification-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.notification-heading h3{margin:0;color:#173d5b;font-size:16px}.notification-enable{display:flex;align-items:center;gap:7px;color:#526d80;font-size:13px;font-weight:700}.notification-enable input{width:18px;height:18px}
.notification-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 14px}.notification-fields label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.notification-fields input,.notification-fields select{box-sizing:border-box;width:100%;min-height:36px;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:7px 9px;font:14px Arial,sans-serif}.notification-wide{grid-column:1/-1}.notification-actions{display:flex;align-items:center;gap:10px;margin-top:12px;min-height:36px}
@media(max-width:950px){.notification-grid{grid-template-columns:1fr}}@media(max-width:600px){.notification-fields{grid-template-columns:1fr}.notification-wide{grid-column:auto}}

/* ===== V0.7.66 TankSense alarm configuration ===== */
.tank-alarm-panel{margin:0}
.tank-alarm-body{padding:10px 14px 14px}
.tank-alarm-head,.tank-alarm-row{display:grid;grid-template-columns:minmax(120px,1fr) 62px 88px 104px;gap:7px;align-items:center}
.tank-alarm-head{padding:0 0 7px;color:#65727c;font-size:11px;font-weight:700;border-bottom:1px solid #dbe4ec}
.tank-alarm-row{padding:8px 0;border-bottom:1px solid #edf2f5;font-size:12px}
.tank-alarm-row select{box-sizing:border-box;width:100%;padding:6px;border:1px solid #b9c7d5;border-radius:5px;background:#fff}.tank-alarm-row input[type="number"]{box-sizing:border-box;width:100%;padding:6px;border:1px solid #b9c7d5;border-radius:5px}
.tank-alarm-row input[type="checkbox"]{justify-self:center}
.tank-alarm-row>div:last-child{display:flex;align-items:center;gap:4px;white-space:nowrap}.tank-alarm-row .ta-value{min-width:0;flex:1 1 auto}
.tank-alarm-status{margin:10px 0 8px;font-size:12px}
@media(max-width:520px){.tank-alarm-head,.tank-alarm-row{grid-template-columns:minmax(100px,1fr) 50px 76px 88px;gap:4px}.tank-alarm-body{padding:9px}.tank-alarm-row{font-size:11px}}

/* ===== V0.7.67 Main Data historian ===== */
.data-tabs{display:flex;gap:8px;margin-bottom:12px}.data-tab.active{font-weight:700}.data-filter-card{margin-bottom:16px}.data-filters{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;padding:14px}.data-filters label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.data-filters select{min-height:36px;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:6px 8px}.data-filter-actions{display:flex;align-items:center;gap:10px;padding:0 14px 14px;flex-wrap:wrap}.data-chart-card{margin-bottom:16px;padding-bottom:12px}.data-chart-card canvas{display:block;width:100%;max-width:100%;height:220px;padding:0 10px;box-sizing:border-box}.data-chart-note{padding:2px 16px 8px}.data-table-wrap{overflow:auto;max-height:520px}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th,.data-table td{padding:8px 10px;border-bottom:1px solid #e3ebf0;text-align:left;white-space:nowrap}.data-table thead th{position:sticky;top:0;background:#f7fafc;color:#526d80;z-index:1}.data-table tbody tr:hover{background:#f5f9fb}@media(max-width:850px){.data-filters{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.data-filters{grid-template-columns:1fr}}

/* ===== SenseServer V0.7.71 editable Sense product identity registry ===== */
.registry-table input[type="number"],.registry-table input[type="text"],.registry-table input:not([type]){box-sizing:border-box;width:100%;min-width:110px;padding:7px 8px;border:1px solid #b9cbd8;border-radius:5px;font:inherit;background:#fff;color:#102f52}
.registry-table .registry-family{min-width:160px}
.registry-table input[type="checkbox"]{width:18px;height:18px}
.registry-actions{display:flex;align-items:center;gap:10px;padding:10px 0 2px;flex-wrap:wrap}

/* ===== V0.7.72 tank ordering, friendly names, and duplicate-instance diagnostics ===== */
.tank-name-body{display:grid;gap:8px;padding:10px 14px 14px}.tank-name-edit{display:flex;gap:8px}.tank-name-edit input{flex:1;min-width:0;padding:9px;border:1px solid #b9cbd8;border-radius:5px;font:inherit}
.tank-dashboard-card.duplicate-instance{border-color:#c83d3d;box-shadow:0 0 0 1px rgba(200,61,61,.15)}
.tank-duplicate-warning{margin-top:6px;color:#a82424;font-weight:700;font-size:13px}


/* ===== V0.7.73 CAN diagnostics ===== */
.can-status-pill.clickable { cursor:pointer; }
.can-status-pill.clickable:hover { filter:brightness(.96); }
.can-diagnostics-panel { margin:0 16px 16px; padding:14px; border:1px solid #dbe4ec; border-radius:8px; background:#fbfcfd; }
.can-diagnostics-panel .card-heading { margin-bottom:10px; }
.can-diagnostics-panel .network-stats { margin:0; grid-template-columns:repeat(4,minmax(120px,1fr)); }
@media(max-width:900px) { .can-diagnostics-panel .network-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ===== V0.7.74 alarm severity / acknowledgement ===== */
.tank-dashboard-card.alarm-warning{border-color:#c88a25;box-shadow:0 0 0 1px rgba(200,138,37,.16)}
.tank-dashboard-card.alarm-critical{border-color:#b52d2d;box-shadow:0 0 0 2px rgba(181,45,45,.18)}
.tank-card-alarm{margin-top:7px;font-weight:700;font-size:12px}.tank-card-alarm.warning{color:#a66c0d}.tank-card-alarm.critical{color:#a82424}
.global-alarm-banner{display:flex;align-items:stretch;background:#b52d2d}.global-alarm-banner>a{flex:1}.global-alarm-ack{border:0;border-left:1px solid rgba(255,255,255,.35);padding:0 14px;background:rgba(0,0,0,.12);color:#fff;font-weight:700;cursor:pointer}.global-alarm-ack:hover{background:rgba(0,0,0,.22)}

/* ===== V0.7.75 global notification routing ===== */
.notification-severity{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin:0 0 12px;padding:9px 10px;border:1px solid #e0e8ee;border-radius:6px;background:#fff;color:#526d80;font-size:12px}.notification-severity strong{color:#173d5b}.notification-severity label{display:flex;align-items:center;gap:6px;font-weight:700}.notification-severity input{width:17px;height:17px}
/* ===== SenseServer V0.8.0 Maintenance & Inventory ===== */
.ops-filter{display:grid;grid-template-columns:minmax(240px,2fr) minmax(150px,1fr) minmax(150px,1fr) auto;gap:10px;padding:12px 14px;margin-bottom:16px}.ops-filter input,.ops-filter select,.ops-form input,.ops-form select,.ops-form textarea,.lookup-add input{box-sizing:border-box;width:100%;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:8px 9px;font:14px Arial,sans-serif}.ops-filter input,.ops-filter select{min-height:38px}.ops-table td{vertical-align:top}.ops-description{white-space:normal!important;min-width:300px;max-width:620px}.ops-tag{display:inline-block;background:#e8f1f6;color:#31566f;border-radius:12px;padding:3px 7px;margin:1px 2px 1px 0;font-size:11px;font-weight:700}.ops-row-actions{white-space:nowrap!important}.button.small{padding:5px 8px;font-size:11px}.ops-empty{text-align:center;padding:30px;color:#718695}.ops-dialog{border:0;border-radius:10px;box-shadow:0 14px 45px rgba(16,47,82,.25);width:min(720px,92vw);color:#183c59}.ops-dialog::backdrop{background:rgba(20,40,55,.35)}.ops-dialog h2{margin:0 0 16px}.ops-dialog h3{margin:18px 0 8px}.ops-form{display:grid;grid-template-columns:1fr 1fr;gap:13px 16px}.ops-form label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.ops-wide{grid-column:1/-1}.ops-actions{display:flex;gap:9px;justify-content:flex-end;align-items:center;margin-top:16px}.tag-picker{display:flex;gap:8px;flex-wrap:wrap;padding:8px;border:1px solid #d5e1e9;border-radius:6px;background:#f9fbfc}.tag-picker label{display:flex;flex-direction:row;align-items:center;gap:4px;background:#fff;border:1px solid #d5e1e9;border-radius:14px;padding:5px 8px}.reminder{font-weight:700}.reminder.overdue{color:#b52d2d}.reminder.due{color:#31566f}.reminder.hours{color:#7a5a12}.lookup-list{border:1px solid #d5e1e9;border-radius:6px;max-height:210px;overflow:auto}.lookup-list>div{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border-bottom:1px solid #edf2f5}.lookup-list button{border:0;background:transparent;color:#9a3030;font-size:18px;cursor:pointer}.lookup-add{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px}.qty-cell{white-space:nowrap!important}.qty-cell button{width:28px;height:28px;border:1px solid #b9cbd8;background:#fff;border-radius:5px;color:#183c59;font-weight:800}.qty-cell strong{display:inline-block;min-width:44px;text-align:center}.low-stock{background:#fff7e8}.low-stock:hover{background:#fff0d0!important}@media(max-width:850px){.ops-filter{grid-template-columns:1fr 1fr}.ops-form{grid-template-columns:1fr}.ops-wide{grid-column:auto}}@media(max-width:520px){.ops-filter{grid-template-columns:1fr}}


/* ===== V0.8.4 Hardware page finishing pass ===== */
.hardware-card{margin-bottom:16px}.hardware-card .card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.hardware-config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,190px));gap:12px 16px;padding:14px}.hardware-config-grid label,.track-export label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.hardware-config-grid input:not([type=checkbox]),.hardware-config-grid select,.track-export input{box-sizing:border-box;width:100%;min-height:34px;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:6px 8px;font:13px Arial,sans-serif}.hardware-config-grid .check-field{flex-direction:row;align-items:center;justify-content:flex-start;gap:9px;padding-top:20px}.hardware-config-grid input[type=checkbox],.hardware-table input[type=checkbox]{width:18px;height:18px}.hardware-subhead{padding:10px 14px 0;color:#12365b;font-size:13px;font-weight:700;border-top:1px solid #e3ebf0}.gps-geofence-grid{padding-top:10px}.field-action{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.field-action button{min-height:34px}.hardware-live-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;padding:12px 14px;border-top:1px solid #e3ebf0;background:#fbfdfe}.hardware-live-grid div{display:flex;flex-direction:column;gap:4px;min-width:0}.hardware-live-grid span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#718695}.hardware-live-grid strong{font-size:14px;color:#173d5b;overflow-wrap:anywhere}.hardware-error,.hardware-note{padding:8px 14px}.track-export{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:10px 14px 14px}.track-export label{width:210px}.compact-config{grid-template-columns:100px 110px 150px}.analog-config{grid-template-columns:110px 130px 150px 160px}.hardware-card .table-wrap{overflow-x:auto}.hardware-table input,.hardware-table select{box-sizing:border-box;min-height:30px;border:1px solid #c5d4df;border-radius:5px;background:#fff;color:#183c59;padding:4px 6px;font:12px Arial,sans-serif}.hardware-table input.friendly{width:145px}.hardware-table input.tiny{width:70px}.hardware-table input.units{width:55px}.hardware-table input.threshold{width:72px}.hardware-table input.short{width:78px}.hardware-table .center{text-align:center}.alarm-row{background:#fff3f3!important}.alarm-value{color:#b3261e!important;font-weight:800}@media(max-width:700px){.hardware-config-grid{grid-template-columns:1fr 1fr}.compact-config,.analog-config{grid-template-columns:1fr 1fr}.track-export label{width:100%}}@media(max-width:460px){.hardware-config-grid,.compact-config,.analog-config{grid-template-columns:1fr}}
/* ===== V0.8.4 Vessel Watch separation ===== */
.compact-gps{grid-template-columns:190px 130px 100px}.vessel-grid{display:grid;grid-template-columns:150px 190px 190px;gap:12px 16px;padding:14px}.vessel-grid label,.stack-fields label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.vessel-grid input:not([type=checkbox]),.vessel-grid select,.vessel-table input,.vessel-table select{box-sizing:border-box;min-height:32px;border:1px solid #c5d4df;border-radius:5px;background:#fff;color:#183c59;padding:4px 6px;font:12px Arial,sans-serif}.vessel-grid .check-field{flex-direction:row;align-items:center;gap:9px;padding-top:20px}.vessel-grid input[type=checkbox],.vessel-table input[type=checkbox]{width:18px;height:18px}.stack-fields{display:flex;flex-direction:column;gap:10px}.geofence-grid{grid-template-columns:110px 190px 190px 130px 140px 190px}.vessel-table input.threshold{width:82px}.vessel-table input.short{width:76px}.vessel-table select{min-width:105px}.vessel-table .center{text-align:center}.hardware-table th:nth-child(2),.hardware-table td:nth-child(2){width:170px}.hardware-table th,.hardware-table td{padding-left:8px;padding-right:8px}@media(max-width:800px){.vessel-grid,.geofence-grid{grid-template-columns:1fr 1fr}}@media(max-width:500px){.vessel-grid,.geofence-grid,.compact-gps{grid-template-columns:1fr}}

.vessel-table input.tiny{width:58px}.vessel-table td,.vessel-table th{white-space:nowrap}
/* ===== V0.8.8 configuration usability ===== */
.heading-tools,.section-save{display:flex;align-items:center;gap:10px}.heading-tools{justify-content:flex-end}.save-status{min-width:92px;font-size:12px;font-weight:700;color:#526d80}.save-status.saved{color:#238653}.save-status.error{color:#b52d2d}.save-status.dirty{color:#b87813}.vessel-table th.group-start,.vessel-table td.group-start{border-left:2px solid #c8d6e0!important;padding-left:18px}.vessel-table th:nth-child(5),.vessel-table td:nth-child(5),.vessel-table th:nth-child(6),.vessel-table td:nth-child(6),.vessel-table th:nth-child(9),.vessel-table td:nth-child(9){padding-left:18px}.vessel-table select:disabled,.vessel-table input:disabled{opacity:.55;background:#f3f6f8}.alarm-value.warning{color:#b87813!important}.alarm-value.critical{color:#b3261e!important}

/* ===== V0.8.9 global save-state convention ===== */
.save-status{min-width:92px;font-size:12px;font-weight:700;color:#526d80}.save-status.saved{color:#238653}.save-status.error{color:#b52d2d}.save-status.dirty{color:#b87813}.button:disabled{cursor:not-allowed;opacity:.55}
/* V0.8.10 Float Plan */
.fp-wide{grid-column:1/-1}.fp-notes{padding:12px 14px 14px}.fp-notes textarea{box-sizing:border-box;width:100%;resize:vertical;border:1px solid #b9cbd8;border-radius:6px;background:#fff;color:#183c59;padding:9px;font:14px Arial,sans-serif}.fp-tanks{display:flex;gap:10px;flex-wrap:wrap;padding:10px 14px 14px}.fp-tanks span{background:#edf4f8;border-radius:14px;padding:5px 9px;color:#526d80;font-size:12px}.fp-tanks strong{color:#173d5b}

.float-plan-active{color:#b3261e!important;font-weight:800}.page-heading:has(.float-plan-active){border-left:5px solid #b3261e;padding-left:12px}
.server-update-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px}.server-update-row input[type=file]{max-width:420px}.server-update-message{padding:0 14px 14px}.card-heading>div{display:flex;align-items:center;gap:8px}

/* V0.8.13: keep GPS Fix Alarm beside the logging controls on wide screens. */
.gps-top-grid{display:grid;grid-template-columns:minmax(470px,560px) minmax(420px,1fr);gap:22px;align-items:start;padding-right:14px}.gps-logging-grid{grid-template-columns:150px 190px 190px;padding-right:0}.gps-fix-panel{padding:14px 0 14px 18px;border-left:1px solid #e3ebf0}.gps-fix-title{margin-bottom:10px;color:#12365b;font-size:13px;font-weight:700}.gps-fix-fields{display:grid;grid-template-columns:110px 190px 190px;gap:12px 16px}.gps-fix-fields label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700}.gps-fix-fields input:not([type=checkbox]),.gps-fix-fields select{box-sizing:border-box;width:100%;min-height:32px;border:1px solid #c5d4df;border-radius:5px;background:#fff;color:#183c59;padding:4px 6px;font:12px Arial,sans-serif}.gps-fix-fields .check-field{flex-direction:row;align-items:center;gap:9px;padding-top:20px}.gps-fix-fields input[type=checkbox]{width:18px;height:18px}@media(max-width:1050px){.gps-top-grid{grid-template-columns:1fr;padding-right:0}.gps-fix-panel{padding:10px 14px 14px;border-left:0;border-top:1px solid #e3ebf0}}@media(max-width:650px){.gps-logging-grid,.gps-fix-fields{grid-template-columns:1fr 1fr}}@media(max-width:500px){.gps-logging-grid,.gps-fix-fields{grid-template-columns:1fr}}

/* ===== V0.8.15 boat-test UI refinement ===== */
/* Keep the selected product navigation reachable when its submenu extends below the viewport. */
.sidebar{overflow:hidden}
.brand{flex:0 0 auto}
.side-nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}
.sidebar-foot{flex:0 0 auto;margin-top:0;padding:12px 10px 14px}

/* SenseServer product identity in the upper-left; Catamaran Electronics remains the company identity. */
.senseserver-wordmark{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;line-height:1}
.senseserver-wordmark .sense-word{font-size:24px;font-weight:800;font-style:italic;color:#087bd3;letter-spacing:-1px}
.senseserver-wordmark .server-word{font-size:24px;font-weight:800;color:#12365b;letter-spacing:-1px}
.senseserver-wordmark small{flex-basis:100%;margin-top:4px;text-align:center;font-size:9px;font-weight:700;letter-spacing:.03em;color:#49677d}
.company-header-brand{display:flex;align-items:center;gap:10px;min-width:0}
.company-header-brand img{display:block;width:54px;height:50px;object-fit:contain;background:#fff;border-radius:3px}
.sidebar-company-logo{display:block;width:78px;max-height:64px;object-fit:contain;background:#fff;border-radius:4px;margin-bottom:2px}

/* Keep all eight GPS live values on one row on normal desktop widths. */
.hardware-card:first-of-type .hardware-live-grid{grid-template-columns:1fr 1.25fr 1.25fr .85fr .85fr .85fr .85fr .8fr}

/* Hardware input identifier is tiny; give Friendly Name the useful width. */
.hardware-table th:first-child,.hardware-table td:first-child{width:54px;min-width:54px;max-width:54px}
.hardware-table th:nth-child(2),.hardware-table td:nth-child(2){width:230px;min-width:190px}
.hardware-table input.friendly{width:100%;min-width:190px;max-width:260px}

/* Float-plan history */
.fp-history{padding:0 14px 14px}.fp-history-empty{padding:12px 0;color:#617486}
.fp-history-table{width:100%;border-collapse:collapse;font-size:13px}.fp-history-table th,.fp-history-table td{padding:8px;border-bottom:1px solid #dbe6ee;text-align:left;vertical-align:middle}.fp-history-table th{color:#526d80;font-size:11px;text-transform:uppercase;letter-spacing:.03em}.fp-history-actions{display:flex;gap:6px;flex-wrap:wrap}.fp-history-detail{margin:10px 0 0;padding:10px;border:1px solid #d7e3ec;border-radius:6px;background:#f8fbfd;white-space:pre-wrap;font:12px/1.45 Arial,sans-serif}
@media(max-width:1100px){.hardware-card:first-of-type .hardware-live-grid{grid-template-columns:repeat(4,minmax(120px,1fr))}}
@media(max-width:760px){.sidebar{overflow:visible}.side-nav{overflow-x:auto;overflow-y:hidden}.company-header-brand img{width:44px;height:42px}.company-header-brand strong{font-size:14px}}

/* ===== V0.8.15 Vessel Watch table alignment ===== */
.vessel-table th:nth-child(1),.vessel-table td:nth-child(1){width:58px}
.vessel-table th:nth-child(2),.vessel-table td:nth-child(2){min-width:180px;width:220px}
.vessel-table th:nth-child(3),.vessel-table td:nth-child(3){min-width:105px;width:115px}
.vessel-table th:nth-child(4),.vessel-table td:nth-child(4){width:70px;text-align:center}

/* ===== V0.8.16 Vessel Watch recorded GPS track ===== */
.gps-track-map{height:380px;min-height:280px;margin:0 16px 10px;border:1px solid #bfd3e2;border-radius:6px;background:#eaf2f7;overflow:hidden}
.track-summary{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding:0 16px 10px;color:#526d80;font-size:13px}.track-summary strong{color:#102f52}.map-cache-note{padding:0 16px 12px}.track-export-only{padding-top:4px}
@media(max-width:900px){.gps-track-map{height:320px}}

/* V0.8.18 historian hover and Float Plan people selector */
.history-chart-wrap{position:relative}.history-tooltip{position:absolute;top:10px;z-index:5;pointer-events:none;background:rgba(16,47,82,.94);color:white;padding:6px 9px;border-radius:5px;font-size:12px;white-space:nowrap}.people-select{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.person-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid #c9d8e3;border-radius:18px;padding:6px 10px;background:#fff}.person-chip input{width:auto}.people-add{display:flex;gap:8px;max-width:520px}.people-add input{flex:1;min-width:0;padding:9px;border:1px solid #b9cbd8;border-radius:5px;font:inherit}

/* ===== V0.8.23 historian and Anchor Watch GPS layout ===== */
.history-chart-wrap{position:relative}
.history-tooltip{z-index:20;font-weight:700;box-shadow:0 2px 7px rgba(0,0,0,.18)}
.parameters-card>.global-config-grid{padding:12px 14px 14px}
.parameters-card>.config-notice{margin:0 14px 14px}

/* ===== V0.8.24 global section-save convention ===== */
.product-card>.card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.section-save{margin-left:auto;min-width:190px;justify-content:flex-end}
.section-save .save-status{display:inline-block;min-width:100px;text-align:left}
.history-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.history-settings-card{min-width:0}
.history-setting-body{padding:2px 14px 12px}
.history-setting-row{margin:10px 0;padding:0}
.history-setting-row label{padding-left:0}
.history-section-state{display:flex;gap:12px;align-items:center;padding:4px 0 2px;color:#53636f;font-size:13px}
.history-section-state strong{color:#173d5b}
.history-storage{padding:12px 14px}
.data-chart-wrap{position:relative;width:100%}
.data-chart-tooltip{position:absolute;top:8px;z-index:20;pointer-events:none;min-width:220px;background:rgba(16,47,82,.95);color:#fff;padding:8px 10px;border-radius:6px;font-size:12px;box-shadow:0 2px 7px rgba(0,0,0,.18)}
.data-chart-tooltip>strong{display:block;margin-bottom:5px}
.data-chart-tooltip>div{display:grid;grid-template-columns:10px minmax(90px,1fr) auto;gap:7px;align-items:center;padding:2px 0}
.data-tip-swatch{width:8px;height:8px;border-radius:50%}
.tank-name-note{margin-top:7px}
@media(max-width:900px){.history-settings-grid{grid-template-columns:1fr}}
@media(max-width:560px){.section-save{min-width:0}.section-save .save-status{min-width:82px}.product-card>.card-heading{align-items:flex-start;flex-wrap:wrap}}

/* ===== V0.8.25 section Cancel + graph cursor refinement ===== */
.section-save{display:flex;align-items:center;gap:8px}
.section-save .section-cancel{order:0}
.section-save .save-status{margin-left:2px}

/* ===== V0.8.26 ChainSense history replay and configuration cleanup ===== */
.anchor-session-list{max-height:none;overflow-x:auto}
.anchor-session-table tbody tr[data-session-id]{cursor:pointer}
.anchor-session-table tbody tr[data-session-id]:hover,.anchor-session-table tbody tr.selected{background:#edf5fa}
.anchor-session-table tbody tr[data-session-id]:focus{outline:2px solid #2380b8;outline-offset:-2px}
.session-list-actions{padding:0 16px 14px}
.anchor-replay-wrap{position:relative;margin:12px 16px 0;min-height:390px;border:1px solid #d7e2e9;border-radius:7px;background:#fbfdfe;overflow:hidden}
#anchorReplayCanvas{display:block;width:100%;height:390px}
.anchor-replay-wrap .empty{padding:40px;text-align:center}
.anchor-replay-controls{display:grid;grid-template-columns:auto auto auto minmax(180px,1fr) auto;gap:10px;align-items:center;padding:12px 16px}
.anchor-replay-controls label{display:flex;align-items:center;gap:6px;color:#526d80;font-size:12px;font-weight:700}
.anchor-replay-controls select{min-height:34px;border:1px solid #b9cbd8;border-radius:5px;background:#fff;padding:5px}
.anchor-replay-controls input[type="range"]{width:100%}
.session-detail-actions{display:flex;align-items:center;gap:12px;padding:0 16px 16px}
.button.danger{background:#b52d2d;border-color:#9e2525;color:#fff}
.button.danger:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:760px){.anchor-replay-controls{grid-template-columns:auto auto auto 1fr}.anchor-replay-controls .muted{grid-column:1/-1}.anchor-session-table th:nth-child(2),.anchor-session-table td:nth-child(2){display:none}}

/* V0.8.27 ChainSense GPS two-axis offset */
.gps-offset-group{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}.gps-offset-group>.config-label{grid-column:1/-1;color:#526d80;font-size:12px;font-weight:700}.gps-offset-group label{display:grid;gap:5px;color:#526d80;font-size:12px;font-weight:700}.gps-offset-group small,.gps-offset-group .muted{font-weight:400}@media(max-width:650px){.gps-offset-group{grid-template-columns:1fr}}

/* ===== V0.8.28 Anchor Session map replay ===== */
.anchor-replay-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin:14px 0 8px}
.anchor-replay-toolbar label{display:flex;align-items:center;gap:7px;color:#526d80;font-size:13px;font-weight:700}
.anchor-replay-map{width:100%;height:430px;border-radius:8px;background:#e8eef2;overflow:hidden}
.anchor-replay-map[hidden]{display:none}
.anchor-replay-wrap .leaflet-container{font-family:inherit}
.anchor-replay-wrap .leaflet-control-attribution{font-size:10px}
@media(max-width:700px){.anchor-replay-map{height:360px}.anchor-replay-toolbar{justify-content:space-between}}

/* V0.8.31 ChainSense live map base-layer selector */
.chain-map-heading-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.chain-map-heading-controls label{display:flex;align-items:center;gap:6px;font-size:12px;color:#526d80;font-weight:700}
.chain-map-heading-controls select{min-width:92px}

/* V0.8.32 ChainSense friendly identity + guarded windlass control */
.chain-config-top-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;align-items:start}.chain-name-body{padding:14px 16px 16px}.chain-name-body label{display:grid;gap:6px;font-weight:700;color:#123856}.windlass-enable-row{padding:14px 16px 0;display:flex;justify-content:center}#windlassEnable{width:100%}#windlassEnable.armed{background:#dceaf3;border-color:#607f95;color:#123856}.windlass-button:disabled{cursor:not-allowed;opacity:.48;background:#eef2f4}@media(max-width:900px){.chain-config-top-grid{grid-template-columns:1fr}}

/* V0.8.33 ChainSense configuration organization */
.chain-config-right{display:grid;gap:16px;align-content:start}
.chain-config-right .anchor-settings-grid{padding:14px 16px 16px}
/* V0.8.37 Vessel Watch system GPS source selector. */
.gps-source-field{margin-bottom:10px}.gps-source-field label{display:flex;flex-direction:column;gap:5px;color:#526d80;font-size:12px;font-weight:700;max-width:300px}.gps-source-field select{box-sizing:border-box;width:100%;min-height:32px;border:1px solid #c5d4df;border-radius:5px;background:#fff;color:#183c59;padding:4px 6px;font:12px Arial,sans-serif}

/* V0.8.39 Vessel Watch live-track controls. Match existing checkbox sizing and keep toolbar compact. */
.track-export .track-live-toggle{width:auto;min-width:0;flex:0 0 auto;flex-direction:row;align-items:center;gap:7px;padding:0 4px;color:#526d80;font-size:12px;font-weight:700;white-space:nowrap}
.track-export .track-live-toggle input[type=checkbox]{box-sizing:border-box;width:18px;height:18px;min-height:0;padding:0;margin:0;flex:0 0 18px}
@media(max-width:700px){.track-export .track-live-toggle{width:auto}}


/* ===== V0.8.43 ChainSense mobile anchoring readouts =====
   Keep depth/rode/scope immediately visible with the windlass controls on phones. */
.chain-mobile-anchor-readings{display:none}
@media(max-width:760px){
  .chain-mobile-anchor-readings{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    padding:12px 16px 2px;
  }
  .chain-mobile-anchor-readings>div{
    min-width:0;
    padding:9px 6px;
    border:1px solid #bfd3e2;
    border-radius:6px;
    background:#f8fbfd;
    text-align:center;
  }
  .chain-mobile-anchor-readings span{
    display:block;
    color:#60778a;
    font-size:10px;
    font-weight:700;
    letter-spacing:.05em;
  }
  .chain-mobile-anchor-readings strong{
    display:block;
    margin-top:3px;
    color:#102f52;
    font-size:18px;
    line-height:1.15;
  }
}


/* ===== V0.8.44 phone Anchor Control depth + scope ===== */
.anchor-remote-anchor-data{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:2px 0 7px}
.anchor-remote-anchor-data>div{min-width:0;padding:5px 6px;border:1px solid #d5e2ea;border-radius:7px;background:rgba(248,251,253,.78)}
.anchor-remote-secondary{margin-top:1px;color:#102f52;font-size:22px;line-height:1.1;font-weight:800}
.anchor-remote-readout[data-state="warning"] .anchor-remote-secondary,
.anchor-remote-readout[data-state="alarm"] .anchor-remote-secondary,
.anchor-remote-readout[data-state="no-gps"] .anchor-remote-secondary{color:#fff}
.anchor-remote-readout[data-state="warning"] .anchor-remote-anchor-data>div,
.anchor-remote-readout[data-state="alarm"] .anchor-remote-anchor-data>div,
.anchor-remote-readout[data-state="no-gps"] .anchor-remote-anchor-data>div{border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.08)}
.anchor-remote-message{font-size:12px;}


/* ===== V0.8.45 Vessel Watch map / satellite selector ===== */
.track-export .track-map-layer{width:auto;min-width:0;flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:7px;color:#526d80;font-size:12px;font-weight:700;white-space:nowrap}
.track-export .track-map-layer select{width:auto;min-width:92px;min-height:32px;border:1px solid #c5d4df;border-radius:5px;background:#fff;color:#183c59;padding:4px 6px;font:12px Arial,sans-serif}

/* ===== V0.8.46 Demo Control ===== */
.demo-card{margin-bottom:14px}.demo-state{font-weight:800;text-transform:uppercase;color:#123856}.demo-telemetry{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px}.demo-telemetry>div,.demo-link-grid>div{padding:12px;border:1px solid #d5e2ea;border-radius:8px;background:#f8fbfd}.demo-telemetry span,.demo-link-grid span{display:block;color:#60798c;font-size:12px;font-weight:700;text-transform:uppercase;margin-bottom:5px}.demo-telemetry strong,.demo-link-grid strong{color:#102f52;font-size:20px}.demo-note{padding:0 14px 14px;color:#60798c}.demo-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:12px;padding:14px}.demo-control-grid label{font-weight:700;color:#294c66}.demo-control-grid input{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:8px}.demo-actions{display:flex;gap:10px;flex-wrap:wrap;padding:0 14px 12px}.demo-message{padding:0 14px 14px}.demo-link-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px}@media(max-width:700px){.demo-telemetry{grid-template-columns:1fr 1fr}.demo-control-grid,.demo-link-grid{grid-template-columns:1fr}.demo-telemetry strong{font-size:17px}}


/* ===== V0.8.48 navigation / demo state ===== */
.demo-mode-field{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px!important;min-height:38px}
.demo-drag-state{font-size:12px;font-weight:800;color:#60798c}.demo-drag-state.active{color:#a33b13}

/* V0.8.48 Anchor Watch Follow Vessel */
.chain-map-heading-controls .chain-follow-toggle{display:flex;align-items:center;gap:7px;font-size:12px;color:#526d80;font-weight:700;white-space:nowrap}
.chain-map-heading-controls .chain-follow-toggle input[type=checkbox]{box-sizing:border-box;width:18px;height:18px;min-height:0;padding:0;margin:0;flex:0 0 18px}

/* V0.8.52 Demo I2C controls */
.demo-i2c-heading{padding:14px 14px 7px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#36576e;border-top:1px solid #d8e4ec}.demo-i2c-list{padding:0 14px 10px}.demo-i2c-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #e4edf3}.demo-i2c-row:last-child{border-bottom:0}.demo-i2c-name{min-width:150px;display:flex;flex-direction:column;gap:2px}.demo-i2c-name span{font-size:11px;color:#6b7f8e}.demo-i2c-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.demo-i2c-actions .button{font-size:12px;padding:7px 9px}.demo-ai-control{display:flex;align-items:center;gap:8px;flex:1;max-width:520px}.demo-ai-control input[type=range]{flex:1}.demo-ai-control input[type=number]{width:88px}.demo-ai-control span{font-size:12px;color:#60798c;white-space:nowrap}@media(max-width:760px){.demo-i2c-row{align-items:flex-start;flex-direction:column}.demo-i2c-actions{justify-content:flex-start}.demo-ai-control{width:100%}}
/* V0.8.53 Demo I2C per-channel test controls */
.demo-di-controls{align-items:center;flex:1}.demo-di-manual,.demo-di-test{display:flex;align-items:center;gap:6px}.demo-di-test{padding-left:8px;border-left:1px solid #d8e4ec}.demo-di-test label{display:flex;align-items:center;gap:5px;font-size:12px;color:#36576e;white-space:nowrap}.demo-di-test input[type=number]{width:62px;padding:6px 7px}.demo-di-status{font-weight:700;color:#6b7f8e}.demo-di-status.active{color:#087a46}.demo-i2c-row[data-sim-mode="activity"] .demo-di-status.active,.demo-i2c-row[data-sim-mode="duration"] .demo-di-status.active{color:#b56600}@media(max-width:1050px){.demo-di-controls{justify-content:flex-start}.demo-di-test{border-left:0;padding-left:0}}

/* V0.8.54 Demo Control layout and digital pulse simulator */
.demo-top-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:14px;align-items:stretch}.demo-top-grid>.demo-card{margin-bottom:14px}.demo-di-stop{white-space:nowrap}.demo-di-test input[type=number]{width:66px}@media(max-width:950px){.demo-top-grid{grid-template-columns:1fr}}

/* V0.8.56 Vessel Watch digital severity highlighting */
.vessel-table tbody tr.vessel-alarm-warning>td{background:#fff4df!important;border-top-color:#e3a23b!important;border-bottom-color:#e3a23b!important}
.vessel-table tbody tr.vessel-alarm-warning>td:first-child{box-shadow:inset 4px 0 0 #e38b16}
.vessel-table tbody tr.vessel-alarm-critical>td{background:#fde8e8!important;border-top-color:#c94b4b!important;border-bottom-color:#c94b4b!important}
.vessel-table tbody tr.vessel-alarm-critical>td:first-child{box-shadow:inset 4px 0 0 #c92f2f}

.demo-di-polarity-label{display:inline-flex;align-items:center;gap:4px}.demo-di-polarity-label select{font-size:11px;padding:3px 20px 3px 6px;border:1px solid #c7d7e2;border-radius:5px;background:#fff;color:#36576e}

/* V0.8.58 vessel personalization */
.header-vessel-name{font-weight:600;opacity:.78;margin-left:4px}
/* V0.8.59 JK-BMS */
.battery-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.battery-kpis>div{border:1px solid var(--line,#d8e0e8);border-radius:10px;padding:16px}.battery-kpis span,.battery-module span{display:block;color:var(--muted,#64748b);font-size:.9rem}.battery-kpis strong{display:block;font-size:1.7rem;margin-top:5px}.battery-module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.battery-module{border:1px solid var(--line,#d8e0e8);border-radius:10px;padding:14px;display:grid;gap:4px}.battery-module b{font-size:1.35rem}.battery-module.offline{opacity:.55}.system-row{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:10px;padding:11px 4px;border-bottom:1px solid var(--line,#d8e0e8)}@media(max-width:700px){.system-row{grid-template-columns:1fr 1fr}}

/* V0.8.60 Battery overview visual alignment */
.battery-section{margin-top:16px;overflow:hidden}.battery-overview-host,.battery-overview-list{padding:16px}.battery-overview-list{display:grid;gap:14px}.battery-card-grid{display:grid;grid-template-columns:96px minmax(210px,1fr) minmax(300px,1.35fr);gap:28px;align-items:center;border:1px solid var(--line,#cbd8e5);border-radius:9px;padding:18px 20px;background:#fff}.battery-overview-host .battery-card-grid{border:0;padding:4px 0}.battery-card-icon{display:flex;align-items:center;justify-content:center;color:#2f8b4b}.battery-card-icon svg{width:68px;height:86px}.battery-module-row .battery-card-icon{color:#17467d}.battery-card-summary{min-width:0}.battery-card-name{font-weight:700;font-size:1.05rem}.battery-card-summary .big{font-size:2rem;font-weight:700;line-height:1.1;margin:4px 0 8px}.battery-card-summary .detail{line-height:1.35}.battery-card-gauge{min-width:0}.battery-card-gauge-title,.battery-card-scale-labels,.battery-card-ticks{display:flex;justify-content:space-between;align-items:center}.battery-card-gauge-title{font-size:1.05rem;margin-bottom:10px}.battery-card-scale-labels,.battery-card-ticks{font-size:.75rem}.battery-card-track{height:14px;background:#d7e1e9;border-radius:9px;position:relative;margin:8px 7px}.battery-card-fill{height:100%;border-radius:9px;background:#52ae69}.battery-card-thumb{position:absolute;top:50%;width:27px;height:27px;border-radius:50%;background:#52ae69;transform:translate(-50%,-50%)}.battery-card-current{text-align:right;font-weight:700;font-size:1rem;margin-top:8px}.battery-module-row.offline{opacity:.55}.battery-module-row.offline .battery-card-fill,.battery-module-row.offline .battery-card-thumb{background:#8795a1}@media(max-width:850px){.battery-card-grid{grid-template-columns:76px 1fr}.battery-card-gauge{grid-column:1/-1}.battery-card-icon svg{width:58px;height:74px}}@media(max-width:520px){.battery-overview-host,.battery-overview-list{padding:10px}.battery-card-grid{grid-template-columns:1fr;gap:12px;padding:14px}.battery-card-icon{justify-content:flex-start}.battery-card-gauge{grid-column:auto}}
.dashboard-battery-grid{border:0;width:100%;box-sizing:border-box}.battery-dashboard-card{display:block;text-decoration:none;color:inherit}.battery-dashboard-card:hover{text-decoration:none}

/* V0.8.61 JK-BMS configuration */
.battery-dashboard-card::after{content:none}.battery-config-list{padding:16px;display:grid;gap:14px}.battery-config-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(180px,1.4fr) minmax(120px,.8fr) minmax(150px,1fr);gap:16px;align-items:end;border:1px solid var(--line,#cbd8e5);border-radius:9px;padding:16px;background:#fff}.battery-config-row label{display:grid;gap:5px}.battery-config-row .config-check{display:flex;align-items:center;gap:8px;min-height:42px}@media(max-width:850px){.battery-config-row{grid-template-columns:1fr 1fr}}@media(max-width:520px){.battery-config-row{grid-template-columns:1fr}}

/* V0.8.62 JK-BMS alarms/history */
.battery-alarm-table{padding:14px}.battery-alarm-head,.battery-alarm-row{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(220px,1fr) minmax(150px,.55fr);gap:16px;align-items:center;padding:10px 0;border-bottom:1px solid #d9e3ea}.battery-alarm-head{font-weight:700;color:#294d69;padding-top:0}.battery-alarm-row:last-child{border-bottom:0}.battery-alarm-row label{display:flex;align-items:center;gap:8px}.battery-alarm-row input,.battery-alarm-row select{width:100%}.battery-history-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap;padding:14px}.battery-history-controls label{display:grid;gap:5px;min-width:190px}.battery-history-legend{display:flex;gap:16px;flex-wrap:wrap;padding:0 14px 10px;font-size:13px}.battery-history-legend span{display:flex;align-items:center;gap:6px}.battery-history-legend i{width:18px;height:3px;background:currentColor;display:inline-block}.battery-history-chart-wrap{position:relative;padding:0 10px 4px}.battery-history-chart-wrap canvas{width:100%;height:320px;display:block}.battery-history-settings-note{padding:0 14px 14px}.battery-history-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:12px 14px 14px}.battery-history-stats>div{border:1px solid #d3dee6;border-radius:6px;padding:10px}.battery-history-stats span{display:block;font-size:12px;color:#5b6f7f}.battery-history-stats strong{display:block;margin-top:4px}.battery-history-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.battery-history-setting-body{padding:14px}.battery-history-setting-row{display:grid;grid-template-columns:140px minmax(160px,240px);align-items:center;gap:12px}.battery-history-storage{padding:0 14px 14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.battery-history-storage>div{border:1px solid #d3dee6;border-radius:6px;padding:10px}.battery-history-storage span{display:block;font-size:12px;color:#5b6f7f}.battery-history-storage strong{display:block;margin-top:4px;overflow-wrap:anywhere}@media(max-width:800px){.battery-alarm-head{display:none}.battery-alarm-row{grid-template-columns:1fr}.battery-history-settings-grid{grid-template-columns:1fr}.battery-history-stats{grid-template-columns:1fr 1fr}.battery-history-storage{grid-template-columns:1fr}}

/* V0.8.64 read-only derived/configuration and global storage guidance */
.battery-derived{display:flex;flex-direction:column;gap:5px;min-height:38px;padding:7px 9px;border:1px solid #d9e4eb;border-radius:6px;background:#f5f8fa}.battery-derived span{font-size:12px;color:#718695}.battery-derived strong{font-size:15px;color:#173d5b}.storage-managed-note{margin:12px 14px 14px;padding:10px 12px;border-radius:7px;background:#edf4f8;color:#526d80;font-size:13px;line-height:1.4}

/* V0.8.66 Solar consistency */
.solar-dashboard-icon{font-size:64px;line-height:1;color:#2f8b4b}
.solar-controller-card{width:100%;box-sizing:border-box;padding:18px 20px;border:1px solid var(--line,#cbd8e5);border-radius:9px;background:#fff}
.solar-history-controls{display:flex;gap:16px;flex-wrap:wrap;padding:16px}.solar-history-controls label{min-width:220px}.solar-history-controls select{width:100%}
.solar-history-chart-wrap{position:relative;padding:0 16px 10px}.solar-history-chart-wrap canvas{width:100%;height:330px;display:block}.solar-history-legend{display:flex;gap:18px;flex-wrap:wrap;padding:0 16px 10px;font-size:.9rem}.solar-history-legend i{display:inline-block;width:14px;height:4px;margin-right:5px;vertical-align:middle}
/* V0.8.68 Venus controls: keep checkbox immediately beside its label text. */
.global-config-grid label.venus-inline-check,.venus-inline-check{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:9px;min-height:38px;width:max-content;max-width:100%}
.venus-inline-check input[type="checkbox"]{width:18px;height:18px;flex:0 0 auto;margin:0}
/* V0.8.69 JK-BMS protocol detail/status presentation */
.battery-system-module{margin-bottom:16px}.battery-system-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:10px;padding:14px 16px}.battery-system-grid>div,.battery-cell-grid>div{display:flex;flex-direction:column;gap:3px;padding:9px 11px;border:1px solid #d9e5ed;border-radius:6px;background:#f8fbfd}.battery-system-grid span,.battery-cell-grid span{font-size:12px;color:#60778a}.battery-system-subhead{margin:4px 16px 8px;color:#173c61;font-size:14px}.battery-cell-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;padding:0 16px 14px}.battery-status-list{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 16px}.battery-status-list span{padding:6px 9px;border-radius:5px;background:#eef4f7}.battery-status-list .status-warning{background:#fff1d6;color:#8a5700}.battery-status-list .status-critical{background:#f8dddd;color:#9b2626}

/* V0.8.70 compact JK-BMS module gauges */
.battery-gauge-stack{min-width:0}.battery-mini-gauges{margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:7px 16px}.battery-mini-gauge{min-width:0}.battery-mini-label{display:flex;justify-content:space-between;gap:8px;font-size:.78rem;line-height:1.1}.battery-mini-label strong{font-size:.78rem;white-space:nowrap}.battery-mini-track{height:6px;background:#d7e1e9;border-radius:5px;position:relative;margin:4px 5px 0}.battery-mini-fill{height:100%;border-radius:5px;background:#52ae69}.battery-mini-thumb{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:#52ae69;transform:translate(-50%,-50%)}.battery-module-row.offline .battery-mini-fill,.battery-module-row.offline .battery-mini-thumb{background:#8795a1}@media(max-width:850px){.battery-gauge-stack{grid-column:1/-1}}@media(max-width:520px){.battery-mini-gauges{grid-template-columns:1fr}}

/* V0.8.71 compact JK-BMS gauge pairing and visual identification */
.battery-mini-gauge.tone-temp .battery-mini-fill,.battery-mini-gauge.tone-temp .battery-mini-thumb{background:#e58b2a}
.battery-mini-gauge.tone-delta .battery-mini-fill,.battery-mini-gauge.tone-delta .battery-mini-thumb{background:#8a62b8}
.battery-mini-gauge.tone-cell1 .battery-mini-fill,.battery-mini-gauge.tone-cell1 .battery-mini-thumb{background:#2785b8}
.battery-mini-gauge.tone-cell2 .battery-mini-fill,.battery-mini-gauge.tone-cell2 .battery-mini-thumb{background:#42a66a}
.battery-mini-gauge.tone-cell3 .battery-mini-fill,.battery-mini-gauge.tone-cell3 .battery-mini-thumb{background:#c19a24}
.battery-mini-gauge.tone-cell4 .battery-mini-fill,.battery-mini-gauge.tone-cell4 .battery-mini-thumb{background:#b45f8c}
.battery-module-row.offline .battery-mini-gauge .battery-mini-fill,.battery-module-row.offline .battery-mini-gauge .battery-mini-thumb{background:#8795a1}

/* ===== V0.8.72 dashboard alignment cleanup ===== */
/* ChainSense/TankSense are the dashboard geometry reference. */
.dashboard-battery-grid{grid-template-columns:92px minmax(180px,250px) minmax(240px,1fr);gap:18px;align-items:center;padding:18px 20px;min-height:160px}
.dashboard-battery-grid .battery-card-icon{width:92px;justify-self:center}
#solarBank .dashboard-battery-grid{grid-template-columns:92px minmax(180px,250px) minmax(240px,1fr)}
@media(max-width:1050px){.dashboard-battery-grid,#solarBank .dashboard-battery-grid{grid-template-columns:90px 250px minmax(260px,1fr);gap:14px}}
@media(max-width:760px){.dashboard-battery-grid,#solarBank .dashboard-battery-grid{grid-template-columns:70px 1fr;gap:14px;align-items:start}.dashboard-battery-grid .battery-card-icon{width:70px}.dashboard-battery-grid .battery-card-gauge{grid-column:1/-1}}


/* ===== V0.8.73 dashboard device alignment + Solar output gauge ===== */
/* ChainSense is the geometry authority: Battery and Solar use chain-card-grid directly. */
.dashboard-device-grid .battery-card-icon{width:92px;justify-self:center}
.dashboard-device-grid .battery-card-summary{min-width:0}
.solar-dashboard-gauge .battery-card-fill,.solar-dashboard-gauge .battery-card-thumb{background:#2f8b4b}
@media(max-width:1050px){.dashboard-device-grid .battery-card-icon{width:90px}}
@media(max-width:760px){.dashboard-device-grid .battery-card-icon{width:70px}.dashboard-device-grid .battery-card-gauge{grid-column:1/-1}}


/* ===== V0.8.84 two-across dashboard device panels ===== */
/* TankSense remains unchanged; non-tank dashboard sections use a responsive two-column grid. */
.dashboard-device-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;align-items:start}
.dashboard-device-section{min-width:0;margin:0}
.dashboard-device-section .chain-card-grid{grid-template-columns:70px minmax(150px,220px) minmax(190px,1fr);gap:14px;align-items:center;padding:16px 18px;min-height:160px}
.dashboard-device-section .chain-card-anchor svg{width:58px;height:78px}
.dashboard-device-section .battery-card-icon{width:70px}
.dashboard-device-section .chain-card-gauge,.dashboard-device-section .battery-card-gauge{grid-column:auto;width:auto;padding-top:0}
@media(max-width:1000px){.dashboard-device-sections{grid-template-columns:1fr}.dashboard-device-section .chain-card-grid{grid-template-columns:92px minmax(180px,250px) minmax(240px,1fr)}}
@media(max-width:760px){.dashboard-device-section .chain-card-grid{grid-template-columns:70px 1fr;align-items:start}.dashboard-device-section .chain-card-gauge,.dashboard-device-section .battery-card-gauge{grid-column:1/-1;width:100%}}

/* V0.8.89: EngineSense dashboard icon matches the navy ChainSense visual language. */
.enginesense-dashboard-icon{color:#17467d}
.enginesense-dashboard-icon svg{width:70px;height:65px;display:block}
@media(max-width:760px){.enginesense-dashboard-icon svg{width:62px;height:58px}}

/* EngineSense V0.8.90 device pages */
.engine-instruments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.engine-instruments .product-card{min-width:0}.engine-dial{max-width:450px;margin:12px auto}.engine-dial svg{width:100%;height:auto}.engine-hours-big{font-size:clamp(38px,5vw,72px);font-weight:750;color:#12375b;padding:36px 10px 16px;text-align:center}.engine-sensor-value{font-size:32px;font-weight:700;color:#12375b;padding:18px 0}.engine-bar{height:12px;background:#dce6ed;border-radius:9px;overflow:hidden}.engine-bar>div{height:100%;width:0;background:#2584b5;transition:width .3s}.engine-controls{display:flex;gap:18px;flex-wrap:wrap;padding:14px 0}.engine-controls label{display:flex;flex-direction:column;gap:6px}.engine-chart-wrap{width:100%;height:300px}.engine-chart-wrap svg{width:100%;height:100%;background:#f8fbfd;border:1px solid #d9e4ec;border-radius:7px}.engine-checkbox-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;padding:16px}.engine-config-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px;border-bottom:1px solid #dce6ed}.engine-config-row label{flex:1;min-width:190px;display:flex;flex-direction:column;gap:5px}.engine-config-row input{max-width:240px}.engine-config-row .save-status{min-width:90px}.engine-config-readonly{padding:12px 16px;border-bottom:1px solid #dce6ed}.engine-instruments .device-info-grid{padding:14px}@media(max-width:760px){.engine-instruments{grid-template-columns:1fr}}

/* EngineSense V0.8.91: match established inset spacing and section controls. */
.engine-instruments .product-card > .muted:not(.card-heading),
.engine-instruments .product-card > .engine-sensor-value,
.engine-instruments .product-card > .engine-bar,
.engine-instruments .product-card > .device-info-grid,
.engine-instruments .product-card > #engineSource { margin-left:18px; margin-right:18px; }
.engine-instruments .product-card > .engine-bar { margin-bottom:18px; }
.engine-instruments .product-card > .engine-hours-big { padding-left:18px; padding-right:18px; }
.engine-instruments .product-card > .engine-card-caption { padding-bottom:16px; }
.engine-instruments .product-card > .device-info-grid { padding:14px 0 18px; }
.engine-identity-content { padding:18px; display:flex; flex-wrap:wrap; gap:12px 20px; align-items:end; }
.engine-identity-content label { display:flex; flex-direction:column; gap:6px; min-width:250px; flex:1; max-width:460px; }
.engine-identity-content input { padding:9px; }
.engine-identity-content .muted { flex-basis:100%; }
.engine-config-row { padding:18px; }
.engine-config-row .button.secondary { margin-left:auto; }
.engine-controls { padding:18px; }
.engine-chart-wrap { padding:0 18px 18px; box-sizing:border-box; }
.engine-instruments .product-card > #alarmValue { margin-top:8px; }

/* V0.8.92 EngineSense consistency with shared SenseServer product cards */
.engine-pad{padding:16px 18px}.engine-stats{padding:12px 18px;display:flex;flex-wrap:wrap;gap:16px;border-top:1px solid #dce6ed;color:#3d5a73;font-size:13px}.engine-maintenance{padding:15px 18px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid #dce6ed}.engine-danger{background:#b3312c!important;color:white!important}.engine-alarm-table-wrap{overflow-x:auto}.engine-alarm-table{width:100%;border-collapse:collapse}.engine-alarm-table th,.engine-alarm-table td{padding:10px;border-bottom:1px solid #dce6ed;text-align:left}.engine-alarm-table input[type=number]{width:95px}.engine-alarm-table select{max-width:170px}.engine-alarm-table th{font-size:13px;color:#405a70}.engine-identity-content,.engine-config-row,.engine-controls,.engine-pad{font-family:inherit}.engine-config-row .save-status,.section-save .save-status{color:#b96b00}.engine-config-row .save-status:not(:empty){white-space:nowrap}.engine-instruments .device-info-grid>div{padding:12px}.engine-chart-wrap{padding:0 18px 18px}

/* V0.8.93: EngineSense history matches the shared TankSense layout */
.engine-history-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.engine-periods{display:flex;gap:6px;flex-wrap:wrap}
.engine-periods .button{font-size:12px;min-height:36px;padding:8px 12px}
.engine-periods .button.active{background:#167caf;color:#fff}
.engine-chart-wrap svg{width:100%;height:100%;}
.engine-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;border-top:0;padding:12px 14px}
.engine-stats>div,.engine-storage-grid>div{border:1px solid #d5e1eb;border-radius:6px;background:#fff;padding:12px;min-width:0;overflow-wrap:anywhere}
.engine-stats small,.engine-storage-grid>div{font-size:12px;color:#47617a}
.engine-stats strong,.engine-storage-grid strong{display:block;font-size:15px;color:#10365b;margin-top:5px}
.engine-storage{padding:12px 14px 14px}
.engine-storage-retention{padding:0 0 14px;font-size:13px;color:#47617a}
.engine-storage-retention strong{color:#10365b;margin-left:8px}
.engine-storage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.engine-storage-note{margin-top:14px;padding:12px;background:#edf4f8;border-radius:7px;color:#47617a;font-size:13px}
.engine-instruments{gap:18px;margin-top:18px;margin-bottom:18px}
@media(max-width:760px){.engine-stats,.engine-storage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* EngineSense V0.8.94 */
.engine-threshold-gauge{position:relative;margin:14px 18px 6px;height:20px}
.engine-threshold-track{height:16px;border-radius:8px;background:#dce6ed;border:1px solid #c6d7e5}
.engine-threshold-pointer{position:absolute;top:-5px;width:4px;height:27px;background:#12375b;transform:translateX(-50%);border-radius:2px;box-shadow:0 0 0 1px #fff}
.engine-threshold-pointer[hidden]{display:none}
.engine-threshold-labels{margin:0 18px 18px;color:#47617a;font-size:12px;min-height:18px}
.engine-config-row{padding:12px 18px;display:block}
.engine-config-row label{display:flex;flex-direction:column;gap:6px;max-width:300px}
.engine-config-row input{padding:7px}
.engine-config-info{padding:16px 18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.engine-config-info>div{padding:12px;border:1px solid #d5e1eb;border-radius:6px}
.engine-temperature-table{overflow-x:auto;margin-bottom:14px}

/* V0.8.96 EngineSense history: chart fills available width without side gutters */
.engine-chart-wrap{padding:0 12px 12px!important;width:100%;box-sizing:border-box}
.engine-chart-wrap svg{display:block;width:100%;height:100%}
.section-save .save-status.saved{color:#238653!important}
.section-save .save-status.dirty{color:#b87813!important}
.section-save .save-status.error{color:#b52d2d!important}

/* V0.8.98: advisory maintenance/inventory indicators (not critical alarms). */
.side-nav a.operations-attention {color:#b52222!important;background:rgba(195,39,39,.13)!important;border-left:3px solid #c62828;}
.side-nav .operations-count{margin-left:auto;background:#b52222;color:#fff;border-radius:12px;padding:1px 7px;font-size:11px;font-weight:700;}

/* V0.8.99 shared reminder actions */
.remind-select{max-width:145px;padding:5px;border:1px solid #b9cbd8;border-radius:5px;background:#fff;color:#183c59;font-size:11px}.ops-row-actions{white-space:normal!important;min-width:320px}.ops-row-actions>*{margin:2px}.ops-table .low-stock{background:#fff3e6}.ops-table .low-stock:hover{background:#ffead4!important}

/* EngineSense dashboard: preserve existing icon and left text anchors. */
.engine-dashboard-readouts{display:flex;align-items:baseline;gap:14px;white-space:nowrap}
.engine-dashboard-readouts .big{font-size:2rem;line-height:1.1;margin:4px 0 8px}
.engine-dashboard-rpm-unit{font-size:.48em;font-weight:600}
.engine-dashboard-gauge .tank-card-fill.engine-coolant-normal,.engine-dashboard-gauge .tank-card-thumb.engine-coolant-normal{background:#55ad62}
.engine-dashboard-gauge .tank-card-fill.engine-coolant-warning,.engine-dashboard-gauge .tank-card-thumb.engine-coolant-warning{background:#e69b25}
.engine-dashboard-gauge .tank-card-fill.engine-coolant-critical,.engine-dashboard-gauge .tank-card-thumb.engine-coolant-critical{background:#d44c4c}
.engine-dashboard-gauge .tank-card-fill.engine-coolant-unavailable,.engine-dashboard-gauge .tank-card-thumb.engine-coolant-unavailable{background:#9caab6}
@media(min-width:701px){.engine-dashboard-grid{grid-template-columns:92px minmax(250px,1fr) minmax(210px,1fr)}}
@media(max-width:700px){.engine-dashboard-readouts{gap:12px;flex-wrap:wrap}.engine-dashboard-readouts .big{font-size:1.65rem}}

/* V0.9.04: narrow coolant gauge, anchored to right edge; keep engine icon/text origin. */
@media(min-width:761px){
.dashboard-device-section .engine-dashboard-grid,
.engine-dashboard-grid{grid-template-columns:92px minmax(0,1fr) 190px;column-gap:12px}
.engine-dashboard-gauge{width:190px;max-width:100%;justify-self:end;grid-column:3}
}
@media(max-width:760px){.engine-dashboard-gauge{width:190px;max-width:100%;justify-self:end}}


/* V0.9.05: Dashboard Standard V1, common fixed four-column geometry. */
.sense-dashboard-v1{
  display:grid!important;
  grid-template-columns:92px minmax(0,1.5fr) minmax(0,0.8fr) minmax(0,1.3fr)!important;
  gap:12px!important;
  align-items:center;
  min-height:170px;
  height:170px;
  padding:12px 16px!important;
  box-sizing:border-box;
}
.sense-dashboard-v1 > :first-child{
  grid-column:1; display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;min-width:0;
}
.sense-dashboard-v1 > :nth-child(2){grid-column:2;min-width:0;overflow:hidden}
.sense-dashboard-v1 > .sense-dashboard-minor{grid-column:3;min-width:0;overflow:hidden}
.sense-dashboard-v1 > :last-child{grid-column:4;min-width:0;width:100%!important;max-width:none!important;justify-self:stretch!important}
.sense-dashboard-source{font-size:11px;font-weight:700;line-height:1.15;text-align:center;color:#315578;white-space:nowrap}
.sense-dashboard-source span{display:block;font-size:12px;margin-top:2px}
.sense-dashboard-v1 .tank-card-name,.sense-dashboard-v1 .chain-card-name,.sense-dashboard-v1 .battery-card-name{
 font-size:16px;font-weight:700;color:#102f52;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.sense-dashboard-v1 .big,.sense-dashboard-v1 .engine-dashboard-readouts .big{font-size:30px!important;font-weight:700;line-height:1.1;white-space:nowrap}
.sense-dashboard-v1 .sense-dashboard-minor span{display:block;font-size:13px;color:#315578}
.sense-dashboard-v1 .sense-dashboard-minor strong{display:block;font-size:23px;line-height:1.15;color:#102f52;overflow:hidden;text-overflow:ellipsis}
.sense-dashboard-v1 .detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:3px 0}
.sense-dashboard-v1 .battery-card-summary .detail:nth-of-type(n+5){display:none}
.sense-dashboard-v1 .tank-card-link,.sense-dashboard-v1 .chain-card-link{margin-top:5px}
.sense-dashboard-v1 .tank-card-icon svg{width:72px;height:76px}
.sense-dashboard-v1 .chain-card-anchor svg{width:72px;height:80px}
.sense-dashboard-v1 .battery-card-icon svg{width:72px;height:76px}
.sense-dashboard-v1 .solar-dashboard-icon{font-size:62px;line-height:1}
.sense-dashboard-v1 .tank-card-gauge-title strong,.sense-dashboard-v1 .chain-card-gauge-title strong,.sense-dashboard-v1 .battery-card-gauge-title strong{font-size:16px}
@media(max-width:760px){
 .sense-dashboard-v1{grid-template-columns:68px minmax(0,1fr) minmax(0,.65fr)!important;height:auto;min-height:170px;gap:8px!important}
 .sense-dashboard-v1 > :first-child{grid-column:1;grid-row:1/3}
 .sense-dashboard-v1 > :nth-child(2){grid-column:2;grid-row:1}
 .sense-dashboard-v1 > .sense-dashboard-minor{grid-column:3;grid-row:1}
 .sense-dashboard-v1 > :last-child{grid-column:2/4;grid-row:2}
 .sense-dashboard-v1 .sense-dashboard-minor strong{font-size:19px}
}

/* V0.9.06: same content height and vertical alignment as ChainSense. */
@media(min-width:761px){
  .sense-dashboard-v1{height:170px!important;min-height:170px!important;max-height:170px!important;align-items:center!important}
  .sense-dashboard-v1 > :nth-child(2){align-self:center!important}
  .sense-dashboard-v1 > .sense-dashboard-minor{align-self:center!important}
  .sense-dashboard-v1 > :last-child{align-self:center!important}
  /* Legacy battery dashboard spacing must not expand EngineSense. */
  .engine-dashboard-grid .battery-card-summary{padding-top:0!important;padding-bottom:0!important;margin:0!important}
  .engine-dashboard-grid .battery-card-icon{margin:0!important}
  .engine-dashboard-grid .engine-dashboard-gauge{padding-top:0!important;padding-bottom:0!important}
  .dashboard-device-section .engine-dashboard-grid{min-height:170px!important}
}

/* V0.9.07: identical outer wrappers and content geometry for all dashboard tiles. */
.dashboard-device-section .tank-card.sense-unified-card,
.dashboard-device-section .tank-card.battery-dashboard-card.chain-dashboard-card,
.dashboard-device-section .tank-card.chain-dashboard-card{padding:0!important;overflow:hidden;box-sizing:border-box}
.dashboard-device-section .tank-card.battery-dashboard-card.chain-dashboard-card::after{display:none}
.dashboard-device-section .sense-dashboard-v1{height:170px!important;min-height:170px!important;max-height:170px!important;box-sizing:border-box;padding:12px 16px!important}
.dashboard-device-section .engine-dashboard-grid .battery-card-summary{align-self:center!important}
.dashboard-device-section .engine-dashboard-grid .battery-card-name{margin-bottom:6px!important}
.dashboard-device-section .engine-dashboard-grid .battery-card-summary .big{margin:2px 0 8px!important}
.dashboard-device-section .engine-dashboard-grid .battery-card-summary .detail{margin:4px 0!important}
.dashboard-device-section .engine-dashboard-grid .tank-card-link{display:block;margin-top:10px!important}

/* Inventory last-price currency input (V0.9.15) */
.inventory-price-input{display:flex;align-items:center;gap:6px}
.inventory-price-input>span{font-weight:600;flex:none}
.inventory-price-input>input{flex:1;min-width:0}

/* TankSense dashboard configuration preview */
.tank-dashboard-config-preview{display:grid;grid-template-columns:92px minmax(0,1.5fr) minmax(0,.8fr) minmax(0,1.3fr);gap:12px;padding:12px 16px;border:1px solid var(--border,#d6e0e8);border-radius:10px;align-items:center}
.tank-dashboard-config-preview>div{min-width:0}
.tank-dashboard-config-preview label{display:block;font-size:12px;margin:8px 0}
.tank-dashboard-config-preview select{display:block;width:100%;min-width:0;margin-top:3px}
.tank-dashboard-config-icon{text-align:center;font-weight:700}
.tank-dashboard-config-icon small{display:block;font-size:11px;font-weight:400;margin-top:12px}
.tank-dashboard-config-gauge{border-radius:8px;background:var(--panel,#edf4f8);padding:16px 8px;text-align:center;font-size:13px;margin-top:12px}
@media(max-width:720px){.tank-dashboard-config-preview{grid-template-columns:1fr 1fr}}

/* V0.9.20 shared dashboard card status placement and sizing */
.sense-dashboard-source .dashboard-source-status{display:block;margin-top:6px;font-size:11px;font-weight:600;color:#17824a;line-height:1.2}
.sense-dashboard-source .dashboard-source-status.offline{color:#b93b3b}
.sense-dashboard-source .dashboard-source-status.warning{color:#b37a0c}
.tank-card-gauge-title>span,.chain-card-gauge-title>span,.battery-card-gauge-title>span{display:none}
.dashboard-config-panel .tank-dashboard-config-preview{grid-template-columns:92px minmax(0,1.5fr) minmax(0,.8fr) minmax(0,1.3fr)}
.dashboard-config-panel .dashboard-status-preview{display:block;color:#17824a;font-size:11px;margin-top:8px}
@media(max-width:720px){.dashboard-config-panel .tank-dashboard-config-preview{grid-template-columns:1fr 1fr}}

/* Hide a specialized gauge when its position is assigned a different parameter. */
.dashboard-nongauge .chain-card-scale-labels,.dashboard-nongauge .chain-card-track,.dashboard-nongauge .chain-card-ticks,
.dashboard-nongauge .tank-card-scale-labels,.dashboard-nongauge .tank-card-track,.dashboard-nongauge .tank-card-ticks,
.dashboard-nongauge .battery-card-scale-labels,.dashboard-nongauge .battery-card-track,.dashboard-nongauge .battery-card-ticks{display:none}
.dashboard-nongauge .chain-card-current,.dashboard-nongauge .tank-card-current,.dashboard-nongauge .battery-card-current{margin-top:16px}

/* V0.9.22: Alarm manager drives EngineSense Overview indications */
.product-card.engine-alarm-critical{border:1.5px solid #cf2929!important}
.product-card.engine-alarm-warning{border:1.5px solid #e38b13!important}
.engine-alarm-text-critical{color:#b42323!important}
.engine-alarm-text-warning{color:#a76500!important}
.engine-alarm-message{padding:6px 14px 0;font-size:12px;font-weight:700;line-height:1.35}
.engine-alarm-critical .engine-alarm-message{color:#b42323}
.engine-alarm-warning .engine-alarm-message{color:#a76500}
.engine-alarm-message[hidden]{display:none}

/* Library manager */
.library-controls{display:flex;gap:12px;flex-wrap:wrap;padding:14px}.library-controls input{flex:1;min-width:220px}.library-table-wrap{overflow-x:auto;padding:0 14px}.library-table{width:100%;border-collapse:collapse}.library-table th,.library-table td{text-align:left;padding:12px;border-bottom:1px solid #d6e2ec}.library-actions{white-space:nowrap}.library-actions button{border:0;background:transparent;color:#0876ad;cursor:pointer;padding:5px}.library-dialog{border:1px solid #bbcfdd;border-radius:10px;max-width:min(95vw,540px);width:100%;padding:22px}.library-dialog::backdrop{background:rgba(0,0,0,.35)}.library-dialog label{display:block;margin:10px 0}.library-dialog input,.library-dialog select{display:block;width:100%;padding:8px}.library-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.library-error{color:#b42323}.dashboard-group-alarm{font-size:12px;font-weight:700;margin-left:auto;text-align:right;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-group-alarm.critical{color:#b42323}.dashboard-group-alarm.warning{color:#b76d00}.dashboard-device-alert.critical{border:2px solid #d12727!important}.dashboard-device-alert.warning{border:2px solid #e08a10!important}

/* V0.9.24 Demo Control scenario panels */
.demo-page-title{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.demo-page-title h1{margin:0}.demo-service-pill{font-weight:700;font-size:13px;border-radius:16px;padding:5px 12px;background:#e9edf1;color:#476071}.demo-service-pill.connected{background:#dff4e8;color:#176d43}.demo-service-pill.disconnected{background:#fce3e3;color:#a52727}.demo-service-pill.connecting{background:#fff1d8;color:#92600e}.demo-device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.demo-device-body{padding:14px;display:flex;flex-direction:column;gap:9px}.demo-device-body label{font-weight:700;color:#294c66}.demo-device-body select{width:100%;box-sizing:border-box;padding:9px;border:1px solid #b7cbd7;border-radius:6px;background:white}.demo-device-body button{align-self:flex-start;margin-top:8px}.demo-device-body .demo-message{padding:5px 0}.demo-device-state{font-size:12px;color:#60798c;font-weight:700}@media(max-width:850px){.demo-device-grid{grid-template-columns:1fr}}

/* V0.9.26: full-width EngineSense section, two equal engine cards per row. */
.dashboard-device-sections > #engineSection.dashboard-engine-full-row{grid-column:1 / -1}
.dashboard-engine-full-row #engines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.dashboard-engine-full-row #engines > .tank-card{min-width:0;overflow:hidden}
.dashboard-engine-full-row .engine-dashboard-grid,
.dashboard-device-section.dashboard-engine-full-row .engine-dashboard-grid{
 grid-template-columns:70px minmax(0,1fr) minmax(80px,110px) 190px;
 gap:12px;padding:16px 14px;min-width:0;
}
.dashboard-engine-full-row .engine-dashboard-grid .battery-card-summary{min-width:0}
.dashboard-engine-full-row .engine-dashboard-grid .sense-dashboard-minor{min-width:0;overflow-wrap:anywhere}
.dashboard-engine-full-row .engine-dashboard-grid .engine-dashboard-gauge{grid-column:4;width:190px;max-width:100%}
@media(max-width:1250px){
 .dashboard-engine-full-row .engine-dashboard-grid,
 .dashboard-device-section.dashboard-engine-full-row .engine-dashboard-grid{grid-template-columns:60px minmax(0,1fr) 170px;gap:10px}
 .dashboard-engine-full-row .engine-dashboard-grid .sense-dashboard-minor{display:none}
 .dashboard-engine-full-row .engine-dashboard-grid .engine-dashboard-gauge{grid-column:3;width:170px}
}
@media(max-width:850px){.dashboard-engine-full-row #engines{grid-template-columns:1fr}}
@media(max-width:500px){
 .dashboard-engine-full-row .engine-dashboard-grid,
 .dashboard-device-section.dashboard-engine-full-row .engine-dashboard-grid{grid-template-columns:60px minmax(0,1fr)}
 .dashboard-engine-full-row .engine-dashboard-grid .engine-dashboard-gauge{grid-column:1/-1;width:100%}
}
