:root{
  --bg:#061321;
  --bg2:#0a1a2d;
  --panel:#111f31;
  --panel2:#16273b;
  --panel3:#0d1b2b;
  --text:#f5f9ff;
  --muted:#8fa5bd;
  --muted2:#a9bdd2;
  --line:rgba(148,163,184,.18);
  --line2:rgba(255,255,255,.08);
  --green:#2ee59d;
  --cyan:#38bdf8;
  --blue:#3b82f6;
  --yellow:#ffd12e;
  --orange:#ff951a;
  --red:#ff5a1a;
  --shadow:0 22px 60px rgba(0,0,0,.32);
}
*{box-sizing:border-box}
body{
  margin:0;min-height:100vh;font-family:Inter,Arial,Helvetica,sans-serif;color:var(--text);
  background:
    linear-gradient(180deg,rgba(4,10,16,.76),rgba(4,10,16,.88)),
    url("pula-rain-bg.png") center center / cover fixed no-repeat,
    #07111f;
}
#app{max-width:1480px;margin:0 auto;padding:18px 22px 30px}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:10px 0 18px;background:linear-gradient(180deg,rgba(5,16,29,.92),rgba(5,16,29,.58));backdrop-filter:blur(16px)}
.topbar h1{margin:0;font-size:28px;letter-spacing:.18em;font-weight:900;text-transform:uppercase;color:#eaf6ff}.topbar p{margin:5px 0 0;color:var(--muted);font-size:13px;letter-spacing:.08em;text-transform:uppercase}.screen{display:none;animation:fadeUp .22s ease}.screen.active{display:block}
button,.icon-btn,.back-btn{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.035));color:var(--text);border-radius:16px;padding:12px 15px;font-weight:800;cursor:pointer;box-shadow:0 12px 32px rgba(0,0,0,.18)}button:hover{border-color:rgba(46,229,157,.42);background:rgba(46,229,157,.08)}.primary,.primary-mini{background:linear-gradient(90deg,var(--green),var(--cyan));color:#04111d;border:none}.back-btn{margin:4px 0 16px}.small-btn{padding:10px 12px;border-radius:14px;font-size:13px}.tiny-icon{width:36px;height:36px;padding:0;border-radius:12px;font-size:14px;box-shadow:none}.hidden{display:none!important}
h2{margin:8px 0 16px;font-size:26px}.muted{color:var(--muted);font-size:14px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.section-head h2{margin:0}.head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.editable-heading{display:flex;align-items:center;gap:10px}
.list{display:grid;gap:18px}.list-card{position:relative;padding:20px;border-radius:24px;background:linear-gradient(180deg,rgba(22,39,59,.88),rgba(12,27,43,.88));border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer}.list-card:hover{border-color:rgba(46,229,157,.45);transform:translateY(-1px)}.list-card h3{margin:0 0 8px;font-size:22px}.list-card p{margin:4px 0;color:var(--muted)}.card-actions{display:flex;gap:8px;margin-top:14px}.card-actions button{padding:9px 10px;box-shadow:none}.status-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.status-pill{display:inline-block;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:900}.status-online{background:rgba(46,229,157,.13);color:var(--green);border:1px solid rgba(46,229,157,.35)}.status-offline{background:rgba(251,113,133,.12);color:#ffc4cc;border:1px solid rgba(251,113,133,.35)}
.weather-launch{display:inline-flex;align-items:center;gap:10px;margin-bottom:12px}.weather-launch-top{float:right}.device-live-state{clear:both;display:flex;align-items:center;gap:12px;margin:4px 0 8px;color:var(--muted);font-weight:900}.device-live-state .status-pill{font-size:14px;padding:7px 13px}.signal-wrap{display:inline-flex;align-items:flex-end;gap:5px;height:30px;padding:6px 9px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.05)}.signal-bar{width:7px;border-radius:999px;background:rgba(143,165,189,.35)}.signal-bar:nth-child(1){height:9px}.signal-bar:nth-child(2){height:14px}.signal-bar:nth-child(3){height:19px}.signal-bar:nth-child(4){height:24px}.signal-bar.on{background:var(--green);box-shadow:0 0 10px rgba(46,229,157,.35)}.signal-text{margin-left:8px;font-size:14px;color:var(--muted);font-weight:900}
.top-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:0;margin:18px 0 22px;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid var(--line);overflow:hidden;max-width:720px}.tab{box-shadow:none;border:0;border-radius:0;padding:14px 12px;font-size:14px;background:transparent;color:var(--muted2)}.tab.active{color:#eafff7;border-bottom:2px solid var(--green);background:linear-gradient(180deg,rgba(46,229,157,.10),rgba(46,229,157,.02))}.tab-muted{opacity:.72}
.dashboard-section-title{margin:18px 0 12px;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:#dbeafe;font-weight:900}.soil-section-title{margin-top:26px;color:#dcefff}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 18px}.card{min-height:116px;padding:20px 22px;border-radius:12px;background:linear-gradient(180deg,rgba(18,34,53,.94),rgba(10,24,39,.94));border:1px solid rgba(148,163,184,.12);box-shadow:0 18px 45px rgba(0,0,0,.22);position:relative;overflow:hidden}.card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at top left,rgba(56,189,248,.08),transparent 38%);pointer-events:none}.metric-card{display:flex;align-items:center;gap:20px}.metric-icon{width:34px;font-size:26px;text-align:center;filter:drop-shadow(0 0 14px rgba(56,189,248,.24))}.rain-icon,.drop-icon,.year-icon{color:var(--cyan)}.temp-icon{color:var(--red)}.humidity-icon{color:var(--cyan)}.soil-icon{color:var(--green)}.battery-icon{color:var(--green)}.metric-body{position:relative;z-index:1}.card span{display:block;color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.card strong{display:block;margin-top:8px;font-size:30px;line-height:1;color:#fff;font-weight:900}.card small{display:block;margin-top:8px;color:var(--muted2);font-size:14px}.battery-card{grid-column:span 2;display:grid;grid-template-columns:auto 1fr 1px auto 48px;align-items:center}.battery-separator{width:1px;height:62px;background:var(--line)}.battery-level-wrap strong{font-size:28px}.battery-shell{position:relative;width:34px;height:72px;border-radius:8px;border:2px solid rgba(148,163,184,.24);background:rgba(255,255,255,.06);align-self:center}.battery-shell:before{content:"";position:absolute;top:-9px;left:9px;width:12px;height:7px;border-radius:3px 3px 0 0;background:rgba(148,163,184,.32)}.battery-fill{position:absolute;bottom:4px;left:4px;right:4px;height:0%;border-radius:5px;background:linear-gradient(180deg,var(--green),#1fbf7c);transition:height .25s ease}.battery-fill.battery-low{background:linear-gradient(180deg,#fb7185,#ff5a1a)}
.tab-content{display:none}.tab-content.active{display:block}.chart-box,.panel{margin-bottom:16px;padding:18px;border-radius:22px;background:linear-gradient(180deg,rgba(22,39,59,.92),rgba(13,30,48,.92));border:1px solid var(--line);box-shadow:var(--shadow)}.chart-box h3,.panel h3{margin:0 0 12px;font-size:15px;letter-spacing:.02em;color:#dcefff}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.chart-head h3{margin:0}.chart-range{width:auto;min-width:118px;padding:10px 13px;border-radius:14px;font-size:13px;font-weight:900}canvas{width:100%!important;height:275px!important}
.control-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.control-grid button{min-height:68px;font-size:14px}.danger{border-color:rgba(251,113,133,.35);color:#ffc4cc;background:rgba(251,113,133,.12)}label{display:block;margin-top:14px;margin-bottom:7px;color:var(--muted);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}input,select{width:100%;padding:14px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--text);font-size:16px;outline:none}select option{background:#0b1b2e}input:focus,select:focus{border-color:rgba(46,229,157,.78);box-shadow:0 0 0 4px rgba(46,229,157,.10)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.modal{position:fixed;inset:0;z-index:99;background:rgba(0,0,0,.62);backdrop-filter:blur(10px);display:grid;place-items:center;padding:16px}.modal-card{position:relative;width:min(620px,100%);max-height:92vh;overflow:auto;padding:22px;border-radius:24px;background:#0b1b2e;border:1px solid var(--line);box-shadow:var(--shadow)}.modal-close{position:absolute;top:12px;right:12px;width:42px;height:42px;padding:0}.modal-card h3{margin-right:46px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.choice-grid{display:grid;gap:12px;margin-top:14px}.choice-grid button{min-height:62px;text-align:left}.rule-list{display:grid;gap:10px;margin-top:14px}.rule-card{padding:12px;border-radius:16px;background:rgba(255,255,255,.07);border:1px solid var(--line)}.connection-fields{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.045)}.weather-page{max-width:900px;margin:0 auto}.weather-coming-card{text-align:center;padding:70px 20px;border-radius:30px;background:linear-gradient(180deg,rgba(22,39,59,.92),rgba(13,30,48,.92));border:1px solid var(--line);box-shadow:var(--shadow)}.weather-cloud-large{font-size:84px;color:var(--cyan)}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:980px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.battery-card{grid-column:span 2}.control-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:760px){.list{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){#app{padding:14px}.topbar h1{font-size:24px}.section-head{align-items:flex-start;flex-direction:column}.head-actions{width:100%;justify-content:stretch}.head-actions button{flex:1}.cards{grid-template-columns:1fr}.battery-card{grid-column:span 1;grid-template-columns:auto 1fr;gap:16px}.battery-separator,.battery-level-wrap,.battery-shell{display:none}.top-tabs{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.control-grid{grid-template-columns:1fr}canvas{height:250px!important}.chart-head{align-items:flex-start;flex-direction:column}.chart-range{width:100%}}


/* v6.3 final requested layout fixes */
.device-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:4px 0 18px;
}
.device-toolbar-right{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:14px;
  flex-wrap:wrap;
}
.device-back-btn{margin:0;min-height:56px;padding:0 18px;border-radius:18px;}
.weather-launch,.weather-launch-top{
  float:none!important;
  margin:0!important;
  min-height:56px;
  min-width:170px;
  justify-content:center;
  padding:0 22px;
  border-radius:18px;
  font-size:16px;
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.05));
}
.weather-cloud{font-size:20px;color:var(--cyan);filter:drop-shadow(0 0 10px rgba(56,189,248,.35));}
.device-live-state,.device-live-state-block{
  clear:none!important;
  margin:0!important;
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
}
.device-live-state .status-pill{
  min-height:56px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 20px;
  border-radius:18px;
  font-size:15px;
}
.device-live-state .signal-wrap{
  min-height:56px;
  height:56px;
  align-items:flex-end;
  padding:10px 14px;
  border-radius:18px;
}
.mini-battery-icon{
  display:inline-block;
  width:20px;
  height:34px;
  border:2px solid var(--green);
  border-radius:5px;
  position:relative;
  vertical-align:middle;
  box-shadow:0 0 14px rgba(46,229,157,.22);
}
.mini-battery-icon:before{
  content:"";
  position:absolute;
  top:-6px;
  left:5px;
  width:6px;
  height:4px;
  border-radius:2px 2px 0 0;
  background:var(--green);
}
.mini-battery-icon span{
  position:absolute;
  left:3px;right:3px;bottom:3px;height:60%;
  border-radius:3px;
  background:linear-gradient(180deg,var(--green),var(--cyan));
}
.field-disabled{opacity:.45;}
.field-disabled select{pointer-events:none;}
.soil-today-grid{display:grid;gap:4px;align-items:center;min-width:840px;}
.soil-time-label{height:42px;font-size:12px;color:#a9bdd2;text-align:left;white-space:nowrap;transform:rotate(-42deg);transform-origin:left bottom;}
.soil-profile-cell{height:25px;border-radius:6px;border:1px solid rgba(3,13,24,.78);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.soil-now-head{height:42px;font-size:12px;color:#a9bdd2;text-align:right;font-weight:800;}
.soil-now-value{font-size:13px;font-weight:900;color:var(--green);text-align:right;}
.soil-heatmap-time{transform:rotate(-42deg)!important;transform-origin:left bottom!important;text-align:left!important;height:50px!important;overflow:visible!important;}
.history-soil-grid{min-width:920px;}
@media (max-width:760px){
  .device-toolbar{align-items:stretch;flex-direction:column;}
  .device-toolbar-right{justify-content:stretch;}
  .device-live-state,.weather-launch{width:100%;}
  .weather-launch{min-width:0;}
}


/* v6.4 mobile-fit interpolated soil moisture image */
.soil-image-wrap {
  width: 100%;
  overflow: hidden;
  padding: 4px 0 0;
}

.soil-image-grid {
  width: 100%;
  display: grid;
  gap: 2px;
  align-items: stretch;
}

.soil-image-time {
  height: 34px;
  font-size: 10px;
  line-height: 1;
  color: #a8c5e6;
  text-align: left;
  transform: rotate(-38deg);
  transform-origin: left bottom;
  white-space: nowrap;
  overflow: visible;
}

.soil-image-depth {
  min-height: 5px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 5px;
  font-size: 10px;
  color: #d9ecff;
  font-weight: 800;
  white-space: nowrap;
}

.soil-image-pixel {
  min-height: 5px;
  border-radius: 2px;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.08);
}

.soil-image-now {
  min-height: 5px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  font-size: 10px;
  font-weight: 900;
  color: var(--green);
  white-space: nowrap;
}

.soil-image-header {
  margin-bottom: 4px;
}

.soil-image-legend {
  margin-top: 10px;
}

@media (max-width: 620px) {
  .soil-visual-wrap,
  .chart-box,
  .panel {
    padding: 12px;
    border-radius: 20px;
  }

  .soil-image-grid {
    gap: 1.5px;
  }

  .soil-image-time {
    font-size: 9px;
    height: 30px;
  }

  .soil-image-depth,
  .soil-image-now {
    font-size: 9px;
  }

  .soil-image-pixel {
    min-height: 4px;
    border-radius: 1.5px;
  }

  .soil-visual-head {
    gap: 6px;
  }

  .soil-visual-head h3 {
    font-size: 13px;
  }

  .soil-visual-head .muted {
    font-size: 11px;
  }

  .soil-legend-bar {
    min-width: 110px;
  }
}

@media (min-width: 900px) {
  .soil-image-pixel {
    min-height: 7px;
  }
}


/* v6.5 true smooth canvas soil renderer */
.soil-smooth-canvas {
  width: 100% !important;
  height: auto !important;
  display: block;
  border-radius: 18px;
}

.soil-visual-wrap {
  overflow: hidden;
}


/* v6.6 sticky top device status */
.topbar {
  gap: 12px;
}

.top-device-status {
  margin-left: auto;
  min-width: 170px;
  max-width: 52%;
  padding: 8px 10px;
  border-radius: 18px;
  background: rgba(255,255,255,0.075);
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 10px 30px rgba(0,0,0,0.22);
  backdrop-filter: blur(14px);
}

.top-status-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  white-space: nowrap;
}

.top-status-row .status-pill {
  margin: 0;
  padding: 7px 11px;
  font-size: 12px;
}

.top-status-row .signal-wrap {
  margin: 0;
  height: 30px;
  padding: 5px 8px;
}

.top-status-row .signal-text {
  font-size: 12px;
}

.top-status-meta {
  margin-top: 5px;
  display: grid;
  gap: 1px;
  text-align: right;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.15;
  font-weight: 800;
}

.top-status-meta span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.device-command-row {
  justify-content: flex-start;
}

@media (max-width: 620px) {
  .topbar {
    align-items: flex-start;
  }

  .topbar h1 {
    font-size: 25px;
  }

  .topbar p {
    font-size: 12px;
  }

  .top-device-status {
    min-width: 145px;
    max-width: 58%;
    padding: 7px 8px;
    border-radius: 15px;
  }

  .top-status-row {
    gap: 5px;
  }

  .top-status-row .status-pill {
    font-size: 11px;
    padding: 6px 8px;
  }

  .top-status-row .signal-wrap {
    height: 26px;
    padding: 4px 6px;
  }

  .top-status-row .signal-text {
    display: none;
  }

  .top-status-meta {
    font-size: 10px;
  }
}


/* v6.7 full-width sticky topbar cleanup */
#app {
  max-width: none;
  padding: 0;
}

main {
  max-width: 1180px;
  margin: 0 auto;
  padding: 18px;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  padding: 0;
  background:
    radial-gradient(circle at top left, rgba(46,229,157,0.16), transparent 34%),
    radial-gradient(circle at top right, rgba(56,189,248,0.15), transparent 34%),
    linear-gradient(90deg, rgba(7,17,31,0.96), rgba(11,27,46,0.96));
  border-bottom: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 18px 42px rgba(0,0,0,0.32);
  backdrop-filter: blur(18px);
}

.topbar-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 14px 18px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.topbar-left {
  min-width: 0;
}

.topbar h1 {
  margin: 0;
  font-size: 34px;
  letter-spacing: 1.5px;
  font-weight: 900;
  background: linear-gradient(90deg, var(--green), var(--blue));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.topbar-meta {
  margin-top: 5px;
  display: flex;
  align-items: center;
  gap: 14px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.2;
  flex-wrap: wrap;
}

.topbar-meta span:not(:first-child)::before {
  content: "•";
  color: rgba(143,165,189,0.7);
  margin-right: 12px;
}

.top-device-status {
  margin-left: auto;
  min-width: auto;
  max-width: none;
  padding: 0;
  border: none;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  white-space: nowrap;
}

.top-device-status.hidden {
  display: none !important;
}

.top-device-status .status-pill {
  margin: 0;
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  padding: 0 14px;
  border-radius: 14px;
  font-size: 13px;
}

.top-device-status .signal-wrap {
  margin: 0;
  height: 38px;
  padding: 6px 10px;
  border-radius: 14px;
  background: rgba(255,255,255,0.07);
}

.top-device-status .signal-text {
  font-size: 13px;
}

.top-status-row,
.top-status-meta {
  display: contents;
}

.screen {
  padding-top: 0;
}

@media (max-width: 620px) {
  main {
    padding: 14px;
  }

  .topbar-inner {
    padding: 12px 14px 10px;
    gap: 10px;
    align-items: center;
  }

  .topbar h1 {
    font-size: 25px;
  }

  .topbar-meta {
    margin-top: 4px;
    gap: 8px;
    font-size: 10px;
  }

  .topbar-meta span:not(:first-child)::before {
    margin-right: 7px;
  }

  .top-device-status {
    gap: 6px;
  }

  .top-device-status .status-pill {
    min-height: 32px;
    padding: 0 10px;
    font-size: 11px;
    border-radius: 12px;
  }

  .top-device-status .signal-wrap {
    height: 32px;
    padding: 5px 7px;
    border-radius: 12px;
  }

  .top-device-status .signal-text {
    display: none;
  }
}


/* v6.8 dashboard overview shortcuts */
.shortcut-card {
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.shortcut-card:hover {
  transform: translateY(-2px);
  border-color: rgba(46,229,157,0.45);
  background: radial-gradient(circle at top right, rgba(46,229,157,0.18), transparent 42%),
              linear-gradient(145deg, rgba(255,255,255,0.16), rgba(255,255,255,0.065));
}

.shortcut-card:active {
  transform: translateY(0) scale(.99);
}

.chart-focus-pulse {
  animation: chartPulse .9s ease;
}

@keyframes chartPulse {
  0% { box-shadow: 0 0 0 rgba(46,229,157,0.0), var(--shadow); border-color: rgba(255,255,255,0.12); }
  35% { box-shadow: 0 0 0 4px rgba(46,229,157,0.18), 0 20px 60px rgba(0,0,0,0.35); border-color: rgba(46,229,157,0.62); }
  100% { box-shadow: 0 0 0 rgba(46,229,157,0.0), var(--shadow); border-color: rgba(255,255,255,0.12); }
}


/* v6.9 chart shortcut centering */
.chart-box {
  scroll-margin-top: 120px;
}

#tempChartBox,
#humidityChartBox,
#rainChartBox,
#soilChartBox {
  scroll-margin-top: 120px;
}


/* v6.10 reliable overview card scroll */
html {
  scroll-behavior: smooth;
}

body {
  overflow-x: hidden;
}

[data-chart-target] {
  cursor: pointer;
  -webkit-tap-highlight-color: rgba(46,229,157,0.18);
  touch-action: manipulation;
}


/* v6.11 rebuilt overview shortcuts */
button.card.metric-card {
  width: 100%;
  text-align: left;
  font: inherit;
  display: flex;
}

#tempChartBox,
#humidityChartBox,
#rainChartBox,
#soilChartBox {
  scroll-margin-top: 130px;
}

.shortcut-card {
  cursor: pointer;
  -webkit-tap-highlight-color: rgba(46,229,157,0.18);
  touch-action: manipulation;
}


/* v6.12 weather button placement + history smooth soil */
.weather-above-tabs {
  width: 100%;
  margin: 10px 0 12px;
  min-height: 58px;
  border-radius: 22px;
  justify-content: center;
}

#historySoilCanvasBox {
  margin-top: 10px;
}


/* v7.0 PWA install/update support */
.pwa-update-toast {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 18px;
  z-index: 1000;
  padding: 14px;
  border-radius: 18px;
  background: rgba(7,17,31,0.96);
  border: 1px solid rgba(46,229,157,0.35);
  box-shadow: 0 20px 60px rgba(0,0,0,0.45);
  color: #e8fbff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  backdrop-filter: blur(18px);
}

.pwa-update-toast button {
  border: none;
  border-radius: 12px;
  padding: 10px 14px;
  background: linear-gradient(135deg, var(--green), var(--blue));
  color: #07111f;
  font-weight: 900;
}

@media (display-mode: standalone) {
  body {
    overscroll-behavior-y: contain;
  }
}


/* v7.1 branding */
.pula-header-logo{
  height:52px;
  width:auto;
  object-fit:contain;
  display:block;
  filter: drop-shadow(0 0 18px rgba(56,189,248,.35));
}

@media (max-width: 700px){
  .pula-header-logo{
    height:42px;
  }
}


/* v7.2 final PULA branding */
.pula-header-logo {
  height: 58px;
  width: auto;
  max-width: 360px;
  object-fit: contain;
  display: block;
  filter: drop-shadow(0 0 18px rgba(56,189,248,.38));
}

.topbar-left h1,
#mainTitle {
  display: none !important;
}

.pula-splash {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at center, rgba(46,229,157,.16), transparent 36%),
    linear-gradient(180deg, #07111f, #06101c);
  transition: opacity .55s ease, transform .55s ease;
}

.pula-splash img {
  width: min(78vw, 430px);
  height: auto;
  object-fit: contain;
  filter:
    drop-shadow(0 0 18px rgba(46,229,157,.52))
    drop-shadow(0 0 40px rgba(46,229,157,.22));
  animation: pulaSplashPulse 1.8s ease-in-out infinite;
}

.pula-splash-hide {
  opacity: 0;
  transform: scale(1.025);
  pointer-events: none;
}

@keyframes pulaSplashPulse {
  0%,100% { transform: scale(1); filter: drop-shadow(0 0 16px rgba(46,229,157,.45)); }
  50% { transform: scale(1.018); filter: drop-shadow(0 0 32px rgba(46,229,157,.7)); }
}

@media (max-width: 700px) {
  .pula-header-logo {
    height: 46px;
    max-width: 240px;
  }

  .pula-splash img {
    width: min(82vw, 330px);
  }
}


/* v7.3 final branding polish */
.topbar {
  background:
    radial-gradient(circle at 16% 18%, rgba(56,189,248,0.16), transparent 28%),
    linear-gradient(180deg, #071522 0%, #07111f 48%, #06101c 100%) !important;
  border-bottom: 1px solid rgba(56,189,248,0.16) !important;
  box-shadow: 0 14px 36px rgba(0,0,0,0.36), inset 0 -1px 0 rgba(46,229,157,0.06) !important;
}

.topbar-inner {
  min-height: 96px;
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}

.topbar-left {
  display: flex;
  align-items: center;
  min-width: 0;
}

.topbar-meta,
#topbarMeta,
#subTitle {
  display: none !important;
}

.pula-header-logo {
  height: 84px !important;
  max-width: 430px !important;
  width: auto;
  object-fit: contain;
  display: block;
  filter:
    drop-shadow(0 0 18px rgba(56,189,248,.34))
    drop-shadow(0 0 34px rgba(14,165,233,.12));
}

.top-device-status {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
}

.top-device-status .status-pill {
  min-height: 46px !important;
  padding: 0 18px !important;
  border-radius: 18px !important;
  font-size: 15px !important;
  font-weight: 950 !important;
  letter-spacing: .2px;
  box-shadow: 0 0 22px rgba(46,229,157,.18);
}

.top-device-status .status-online {
  background: rgba(46,229,157,0.20) !important;
  border-color: rgba(46,229,157,0.70) !important;
  color: #43ffc0 !important;
}

.top-device-status .status-offline {
  background: rgba(255,92,122,0.18) !important;
  border-color: rgba(255,92,122,0.65) !important;
  color: #ff8ea4 !important;
}

.top-device-status .signal-wrap {
  height: 46px !important;
  padding: 8px 13px !important;
  border-radius: 18px !important;
  background: rgba(255,255,255,0.075) !important;
  border: 1px solid rgba(56,189,248,0.20);
}

.top-device-status .signal-text {
  font-size: 14px !important;
  font-weight: 900;
}

.pula-splash {
  background:
    radial-gradient(circle at center, rgba(56,189,248,.15), transparent 34%),
    linear-gradient(180deg, #071522 0%, #07111f 45%, #06101c 100%) !important;
}

.pula-splash img {
  width: min(94vw, 720px) !important;
  max-height: 45vh;
  object-fit: contain;
  filter:
    drop-shadow(0 0 22px rgba(56,189,248,.42))
    drop-shadow(0 0 55px rgba(14,165,233,.18)) !important;
}

@keyframes pulaSplashPulse {
  0%,100% {
    transform: scale(1);
    filter:
      drop-shadow(0 0 20px rgba(56,189,248,.36))
      drop-shadow(0 0 50px rgba(14,165,233,.16));
  }
  50% {
    transform: scale(1.012);
    filter:
      drop-shadow(0 0 34px rgba(56,189,248,.62))
      drop-shadow(0 0 70px rgba(14,165,233,.25));
  }
}

@media (max-width: 700px) {
  .topbar-inner {
    min-height: 86px;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  .pula-header-logo {
    height: 72px !important;
    max-width: 245px !important;
  }

  .top-device-status {
    gap: 7px;
  }

  .top-device-status .status-pill {
    min-height: 40px !important;
    padding: 0 13px !important;
    font-size: 13px !important;
    border-radius: 15px !important;
  }

  .top-device-status .signal-wrap {
    height: 40px !important;
    padding: 7px 9px !important;
    border-radius: 15px !important;
  }

  .pula-splash img {
    width: 96vw !important;
    max-height: 42vh;
  }
}

@media (max-width: 390px) {
  .pula-header-logo {
    height: 64px !important;
    max-width: 215px !important;
  }

  .top-device-status .status-pill {
    font-size: 12px !important;
    padding: 0 10px !important;
  }
}


/* v7.4 stickybar/logo background match */
.topbar {
  background: #07111f !important;
  border-bottom: 1px solid rgba(255,255,255,0.08) !important;
  box-shadow: 0 10px 26px rgba(0,0,0,0.28) !important;
}

.topbar-inner {
  background: transparent !important;
}

.pula-header-logo {
  filter: none !important;
  box-shadow: none !important;
}

.pula-splash {
  background: #07111f !important;
}

.pula-splash img {
  filter: none !important;
}

@keyframes pulaSplashPulse {
  0%,100% { transform: scale(1); filter: none; }
  50% { transform: scale(1.006); filter: none; }
}


/* v7.5 exact logo background + clear icon */
.topbar,
.topbar-inner {
  background: #121e2a !important;
}

.topbar {
  border-bottom: 1px solid rgba(255,255,255,0.07) !important;
  box-shadow: 0 8px 22px rgba(0,0,0,0.22) !important;
}

.pula-header-logo {
  filter: none !important;
  box-shadow: none !important;
}

.top-device-status {
  margin-left: auto !important;
  justify-content: flex-end !important;
}

.pula-splash {
  background: #121e2a !important;
}

.pula-splash img {
  filter: none !important;
}

/* v7.6 reports + hidden maintenance */
.report-page{display:grid;gap:18px}.report-hero{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:22px;border-radius:28px;background:linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,.045));border:1px solid rgba(255,255,255,.10)}.report-hero h2{margin:0 0 6px;font-size:30px}.report-hero p,.report-card p,.report-note{color:var(--muted)}.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.report-card{padding:20px;border-radius:26px;background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.10);box-shadow:var(--shadow)}.report-card h3{margin-top:0}.report-card label{display:block;margin-top:12px;margin-bottom:6px;color:#a8c5e6;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.report-card input,.report-card select{width:100%}.report-card button,.report-btn{margin-top:14px}.report-schedule-row{display:grid;gap:8px;margin:10px 0}.check-row{display:flex!important;align-items:center;gap:9px;margin:0!important;text-transform:none!important;letter-spacing:0!important;font-size:14px!important}.check-row input{width:auto}.report-paper-preview{background:#fff;color:#152033;border-radius:16px;padding:16px;min-height:260px;box-shadow:0 16px 38px rgba(0,0,0,.28)}.paper-logo{color:#00a7e8;font-weight:1000;font-size:26px;letter-spacing:.08em}.paper-title{color:#27364a;font-size:13px;margin-bottom:14px}.paper-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px}.paper-metrics span{background:#eef4f8;border-radius:8px;padding:8px 4px;text-align:center;font-weight:800;font-size:11px}.paper-chart{height:74px;border-radius:10px;background:linear-gradient(135deg,#eaf3f8,#dfeef5);border:1px solid #ccdce8;margin-bottom:10px}.paper-chart.small{height:52px}.report-note{font-size:13px;padding:14px 18px;border-radius:18px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08)}.maintenance-hold-active{outline:3px solid rgba(46,229,157,.55);transform:scale(.985)}.simple-toast{position:fixed;left:18px;right:18px;bottom:22px;z-index:2000;padding:14px 16px;border-radius:18px;text-align:center;background:rgba(7,17,31,.96);color:#e8fbff;border:1px solid rgba(46,229,157,.35);box-shadow:0 18px 60px rgba(0,0,0,.38);opacity:0;transform:translateY(14px);pointer-events:none;transition:.22s ease}.simple-toast.show{opacity:1;transform:translateY(0)}@media(max-width:820px){.report-grid{grid-template-columns:1fr}.report-hero{align-items:stretch;flex-direction:column}}

/* v8.0 reports cleanup + soil target deviation dashboard */
.report-grid-clean{grid-template-columns:minmax(0,720px);justify-content:start;}
.report-card-wide{max-width:720px;}
.soil-deviation-box canvas{height:320px!important;}
.soil-deviation-head h3{margin-bottom:4px!important;}
.soil-deviation-head .muted{margin:0;color:#8fa5bd;font-size:13px;}
.soil-target-grid{display:grid;gap:10px;margin-top:14px;}
.soil-target-row{display:grid;grid-template-columns:72px 1fr 1fr;gap:10px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.045);}
.soil-target-row strong{color:#eaf6ff;padding-bottom:12px;}
.soil-target-row label{margin:0;}
.soil-target-row input{margin-top:6px;}
@media (max-width:760px){
  .soil-deviation-box canvas{height:360px!important;}
  .soil-deviation-head{align-items:flex-start;flex-direction:column;}
  .soil-deviation-head button{width:100%;}
  .soil-target-row{grid-template-columns:1fr;}
  .soil-target-row strong{padding-bottom:0;}
}


/* v8.8 depth legend spacing fix */
.soil-dev-wrap .chartjs-legend,
.soil-deviation-legend,
.depth-legend,
.target-depth-legend {
  gap: 14px !important;
  row-gap: 14px !important;
}
.soil-dev-wrap canvas,
#soilDeviationChart {
  margin-right: 18px;
}

/* v8.6 soil chart + moisture deviation mobile polish */
#soilDeviationChart {
  margin-right: 0 !important;
}

.soil-deviation-box canvas {
  height: 350px !important;
}

.soil-depth-block-legend {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.soil-depth-block {
  min-height: 44px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 15px;
  padding: 8px 10px;
  color: #ffffff;
  font-weight: 950;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  box-shadow: 0 10px 24px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.18);
  text-shadow: 0 1px 3px rgba(0,0,0,.45);
  -webkit-tap-highlight-color: rgba(255,255,255,.18);
}

.soil-depth-block:hover {
  transform: translateY(-1px);
  border-color: rgba(255,255,255,.32);
}

.soil-depth-block-label {
  font-size: 14px;
  line-height: 1;
}

.soil-depth-block-state {
  padding: 4px 6px;
  border-radius: 999px;
  background: rgba(7,17,31,.34);
  font-size: 10px;
  letter-spacing: .08em;
}

.soil-depth-block.off {
  opacity: .78;
  color: #dbeafe;
  text-shadow: none;
  border-color: rgba(148,163,184,.28);
  box-shadow: inset 0 0 0 2px var(--depth-colour), 0 8px 22px rgba(0,0,0,.18);
}

.soil-depth-block.off .soil-depth-block-label {
  text-decoration: line-through;
  opacity: .72;
}

.soil-depth-block.off .soil-depth-block-state {
  background: var(--depth-colour);
  color: #061321;
  text-shadow: none;
}

.soil-smooth-canvas {
  max-width: none !important;
}

@media (max-width: 760px) {
  .soil-deviation-box canvas {
    height: 405px !important;
  }

  .soil-depth-block-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
  }

  .soil-depth-block {
    min-height: 48px;
    border-radius: 16px;
    padding: 10px 12px;
  }

  .soil-depth-block-label {
    font-size: 15px;
  }

  .soil-visual-wrap {
    padding-left: 8px !important;
    padding-right: 8px !important;
  }

  #soilChartBox.chart-box {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
}



/* v8.6.1 moisture deviation compact bottom legend */
.soil-deviation-box canvas {
  height: 305px !important;
}

.soil-depth-block-legend {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 7px !important;
  margin-top: 10px !important;
}

.soil-depth-block {
  min-height: 34px !important;
  padding: 6px 8px !important;
  border-radius: 11px !important;
  justify-content: center !important;
  font-size: 13px !important;
  box-shadow: 0 7px 16px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.15) !important;
}

.soil-depth-block-label {
  font-size: 13px !important;
  line-height: 1 !important;
  text-decoration: none !important;
}

.soil-depth-block-state {
  display: none !important;
}

.soil-depth-block.off {
  opacity: 1 !important;
  color: rgba(226,232,240,.72) !important;
  background: linear-gradient(135deg, rgba(15,23,42,.96), rgba(2,8,23,.96)) !important;
  border-color: rgba(148,163,184,.22) !important;
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.30), 0 6px 14px rgba(0,0,0,.22) !important;
  filter: saturate(.45) brightness(.70) !important;
}

.soil-depth-block.off .soil-depth-block-label {
  opacity: .68 !important;
  text-decoration: none !important;
}

@media (max-width: 760px) {
  .soil-deviation-box canvas {
    height: 315px !important;
  }

  .soil-depth-block-legend {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 6px !important;
  }

  .soil-depth-block {
    min-height: 32px !important;
    padding: 5px 4px !important;
    border-radius: 10px !important;
  }

  .soil-depth-block-label {
    font-size: 12px !important;
  }
}


/* v8.6.2 PULA-themed moisture deviation colours */
.soil-depth-block {
  border-color: rgba(255,255,255,.10) !important;
  color: #061321 !important;
  text-shadow: 0 1px 0 rgba(255,255,255,.20) !important;
  font-weight: 950 !important;
  box-shadow:
    0 8px 18px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.25) !important;
}

.soil-depth-block:hover {
  border-color: rgba(255,255,255,.28) !important;
  filter: brightness(1.06) saturate(1.05) !important;
}

.soil-depth-block.off {
  color: rgba(169,189,210,.62) !important;
  background: linear-gradient(135deg, rgba(10,24,39,.96), rgba(3,10,20,.98)) !important;
  border-color: rgba(148,163,184,.18) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.05),
    0 5px 12px rgba(0,0,0,.20) !important;
  filter: saturate(.35) brightness(.72) !important;
}

.soil-depth-block.off .soil-depth-block-label {
  opacity: .62 !important;
}

/* v8.6.3 keep chart controls top-right on mobile */
@media (max-width: 760px) {
  .chart-head,
  .soil-deviation-head {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    flex-wrap: nowrap !important;
  }

  .chart-head h3,
  .soil-deviation-head h3 {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    font-size: 14px !important;
    line-height: 1.15 !important;
  }

  .soil-deviation-head > div {
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }

  .soil-deviation-head .muted {
    font-size: 11px !important;
    line-height: 1.2 !important;
    margin-top: 3px !important;
  }

  .chart-range,
  .soil-target-btn,
  .soil-deviation-head button {
    width: auto !important;
    min-width: 88px !important;
    max-width: 122px !important;
    flex: 0 0 auto !important;
    padding: 9px 10px !important;
    white-space: nowrap !important;
    font-size: 12px !important;
  }
}


/* v8.7 FINAL: keep chart controls top-right and keep deviation legend compact */
@media (max-width: 760px) {
  .chart-box .chart-head,
  .chart-box .soil-deviation-head {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    flex-wrap: nowrap !important;
    margin-bottom: 12px !important;
  }

  .chart-box .chart-head h3,
  .chart-box .soil-deviation-head h3,
  .chart-box .soil-deviation-head > div {
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }

  .chart-box .chart-head h3,
  .chart-box .soil-deviation-head h3 {
    font-size: 14px !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }

  .chart-box .soil-deviation-head .muted {
    font-size: 10.5px !important;
    line-height: 1.15 !important;
    margin: 3px 0 0 !important;
  }

  .chart-box .chart-head select.chart-range,
  .chart-box .chart-range,
  .chart-box .soil-deviation-head button,
  .chart-box .soil-target-btn {
    width: auto !important;
    min-width: 86px !important;
    max-width: 116px !important;
    flex: 0 0 auto !important;
    padding: 8px 9px !important;
    font-size: 12px !important;
    white-space: nowrap !important;
  }

  .soil-deviation-box canvas {
    height: 305px !important;
  }

  .soil-depth-block-legend {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 6px !important;
    margin-top: 9px !important;
  }

  .soil-depth-block {
    min-height: 31px !important;
    padding: 5px 4px !important;
    border-radius: 10px !important;
    font-size: 12px !important;
  }
}

.soil-depth-block {
  color: #061321 !important;
  text-shadow: 0 1px 0 rgba(255,255,255,.22) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
}

.soil-depth-block.off {
  color: rgba(169,189,210,.58) !important;
  background: linear-gradient(135deg, rgba(10,24,39,.98), rgba(2,8,23,.99)) !important;
  border-color: rgba(148,163,184,.16) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04), 0 5px 12px rgba(0,0,0,.20) !important;
  filter: saturate(.25) brightness(.62) !important;
}

.soil-depth-block.off .soil-depth-block-label {
  opacity: .58 !important;
  text-decoration: none !important;
}


/* v8.8 fixed rain background + floating glass panels */
.topbar{
  background:linear-gradient(180deg,rgba(5,12,20,.94),rgba(5,12,20,.70)) !important;
  backdrop-filter:blur(18px) saturate(1.15);
}
.chart-box,.panel,.list-card,.card,.modal-card,.weather-coming-card{
  backdrop-filter:blur(12px) saturate(1.12);
}
.chart-box,.panel{
  background:linear-gradient(180deg,rgba(16,31,49,.90),rgba(9,22,36,.88)) !important;
}
.card{
  background:linear-gradient(180deg,rgba(18,34,53,.88),rgba(8,20,34,.86)) !important;
}
.list-card{
  background:linear-gradient(180deg,rgba(22,39,59,.88),rgba(10,23,38,.86)) !important;
}
@media (max-width:760px){
  body{
    background:
      linear-gradient(180deg,rgba(4,10,16,.74),rgba(4,10,16,.90)),
      url("pula-rain-bg.png") center center / cover fixed no-repeat,
      #07111f;
  }
}


/* v8.9 visual polish: brighter rain background + cleaner floating glass UI
   Visual-only changes: no app logic changed. */
:root{
  --shadow:0 18px 48px rgba(0,0,0,.26);
  --panel-glass:rgba(9,22,34,.70);
  --panel-glass-strong:rgba(9,22,34,.82);
  --glass-border:rgba(220,245,255,.16);
}

html{
  background:#07111f;
}

body{
  background:
    linear-gradient(180deg,rgba(4,10,16,.42) 0%,rgba(4,10,16,.52) 38%,rgba(4,10,16,.68) 100%),
    url("pula-rain-bg.png") center center / cover fixed no-repeat,
    #07111f !important;
  background-attachment:fixed !important;
}

#app{
  max-width:1480px;
  padding-top:12px !important;
}

/* Header must float instead of becoming a heavy black strip. */
.topbar{
  top:8px !important;
  margin:0 auto 20px !important;
  padding:10px 14px !important;
  border:1px solid rgba(180,230,255,.12) !important;
  border-radius:0 0 22px 22px !important;
  background:rgba(6,16,27,.76) !important;
  box-shadow:0 14px 34px rgba(0,0,0,.28) !important;
  backdrop-filter:blur(18px) saturate(1.18) !important;
}

.topbar-inner{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  padding:0 !important;
}

.pula-header-logo{
  filter:drop-shadow(0 0 18px rgba(56,189,248,.22));
}

/* Let the background image breathe between sections. */
.screen.active{
  background:transparent !important;
}

/* Floating glass components. */
.chart-box,
.panel,
.list-card,
.modal-card,
.weather-coming-card,
.connection-fields,
.rule-card{
  background:linear-gradient(180deg,rgba(11,26,40,.76),rgba(8,19,31,.68)) !important;
  border:1px solid var(--glass-border) !important;
  box-shadow:0 16px 42px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.05) !important;
  backdrop-filter:blur(14px) saturate(1.16) !important;
}

.card{
  background:linear-gradient(180deg,rgba(10,25,40,.84),rgba(7,18,30,.80)) !important;
  border:1px solid rgba(103,232,249,.14) !important;
  box-shadow:0 14px 34px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.045) !important;
  border-radius:22px !important;
}

.card:before{
  background:radial-gradient(circle at 14% 12%,rgba(56,189,248,.11),transparent 38%) !important;
}

.card strong{
  text-shadow:0 2px 14px rgba(0,0,0,.32);
}

.chart-box,
.panel{
  border-radius:24px !important;
}

/* Tabs should feel like glass over the rain, not a separate black block. */
.top-tabs{
  background:rgba(8,20,32,.56) !important;
  border:1px solid rgba(220,245,255,.16) !important;
  box-shadow:0 12px 30px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.06) !important;
  backdrop-filter:blur(14px) saturate(1.2) !important;
}

.tab{
  background:transparent !important;
  color:rgba(226,240,255,.78) !important;
}

.tab.active{
  color:#ffffff !important;
  background:linear-gradient(180deg,rgba(46,229,157,.13),rgba(46,229,157,.035)) !important;
  border-bottom:3px solid var(--green) !important;
  text-shadow:0 0 18px rgba(46,229,157,.20);
}

/* Weather button and controls should be premium glass but still readable. */
.weather-launch,
button,
.icon-btn,
.back-btn,
.chart-range,
input,
select{
  background:rgba(9,22,34,.66) !important;
  border-color:rgba(220,245,255,.16) !important;
  box-shadow:0 10px 26px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.055) !important;
  backdrop-filter:blur(10px) saturate(1.14);
}

.primary,
.primary-mini{
  background:linear-gradient(90deg,var(--green),var(--cyan)) !important;
  color:#04111d !important;
  border:none !important;
  box-shadow:0 12px 28px rgba(56,189,248,.18) !important;
}

button:hover,
.weather-launch:hover{
  border-color:rgba(46,229,157,.48) !important;
  background:rgba(46,229,157,.10) !important;
}

.primary:hover,
.primary-mini:hover{
  background:linear-gradient(90deg,#35f3a9,#45cfff) !important;
}

.status-pill,
.signal-wrap{
  backdrop-filter:blur(10px) saturate(1.15);
}

.status-online{
  background:rgba(46,229,157,.15) !important;
  border-color:rgba(46,229,157,.42) !important;
}

/* Make text a bit brighter against the image. */
.muted,
.card small,
.list-card p{
  color:rgba(207,226,242,.78) !important;
}

.dashboard-section-title,
label{
  color:rgba(226,240,255,.86) !important;
  text-shadow:0 1px 10px rgba(0,0,0,.28);
}

/* Reports and forms looked too black; this keeps them readable but lighter. */
#reportsTab .panel,
#alertsTab .panel,
#maintenanceTab .panel{
  background:linear-gradient(180deg,rgba(12,28,43,.72),rgba(8,20,32,.64)) !important;
}

/* Mobile tuning: image visible, cards readable, less heavy darkness. */
@media (max-width:760px){
  body{
    background:
      linear-gradient(180deg,rgba(4,10,16,.36) 0%,rgba(4,10,16,.50) 36%,rgba(4,10,16,.66) 100%),
      url("pula-rain-bg.png") center center / cover fixed no-repeat,
      #07111f !important;
  }

  #app{
    padding:8px 12px 28px !important;
  }

  .topbar{
    top:0 !important;
    margin:0 -2px 16px !important;
    padding:8px 10px !important;
    border-radius:0 0 18px 18px !important;
    background:rgba(6,16,27,.78) !important;
  }

  .chart-box,
  .panel,
  .list-card,
  .modal-card,
  .weather-coming-card{
    background:linear-gradient(180deg,rgba(10,24,38,.72),rgba(6,17,28,.64)) !important;
    border-color:rgba(220,245,255,.15) !important;
  }

  .card{
    background:linear-gradient(180deg,rgba(8,22,36,.82),rgba(5,15,26,.78)) !important;
    border-color:rgba(103,232,249,.13) !important;
  }

  .top-tabs{
    background:rgba(8,20,32,.54) !important;
  }

  .weather-launch{
    background:rgba(8,20,32,.56) !important;
  }
}


/* v9 final visual polish: faster scrolling, fixed rain stage, transparent header, compact status */
html,
body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden !important;
  background: #07111f !important;
}

body {
  background: #07111f !important;
  background-attachment: scroll !important;
  position: relative;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background:
    linear-gradient(180deg, rgba(4,10,16,.22) 0%, rgba(4,10,16,.34) 42%, rgba(4,10,16,.52) 100%),
    url("pula-rain-bg.png") center center / cover no-repeat,
    #07111f;
  transform: translateZ(0);
  pointer-events: none;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  background: radial-gradient(circle at 50% 0%, rgba(46,229,157,.08), transparent 42%);
  pointer-events: none;
}

#app,
.screen,
.tab-content,
.chart-box,
.panel,
.card,
.list-card,
.top-tabs,
.device-toolbar,
.weather-launch {
  max-width: 100% !important;
}

#app {
  overflow-x: hidden !important;
  padding-top: 6px !important;
}

/* Remove most blur from scroll-heavy panels. This is what makes Samsung scrolling feel sticky. */
.chart-box,
.panel,
.card,
.list-card,
.weather-coming-card,
.connection-fields,
.rule-card,
.top-tabs,
.weather-launch,
button,
.icon-btn,
.back-btn,
.chart-range,
input,
select {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.chart-box,
.panel,
.list-card,
.modal-card,
.weather-coming-card,
.connection-fields,
.rule-card {
  background: linear-gradient(180deg, rgba(12,28,43,.76), rgba(7,18,30,.66)) !important;
  border-color: rgba(220,245,255,.15) !important;
}

.card {
  background: linear-gradient(180deg, rgba(10,25,40,.82), rgba(5,16,27,.74)) !important;
  border-color: rgba(103,232,249,.14) !important;
}

/* Header: lighter glass, no image strip above it, transparent logo, status stacked right. */
.topbar {
  top: 0 !important;
  margin: 0 -4px 10px !important;
  padding: 6px 10px !important;
  border-radius: 0 0 16px 16px !important;
  background: rgba(6,16,27,.58) !important;
  border: 1px solid rgba(220,245,255,.10) !important;
  border-top: 0 !important;
  box-shadow: 0 10px 26px rgba(0,0,0,.18) !important;
  backdrop-filter: blur(7px) saturate(1.08) !important;
  -webkit-backdrop-filter: blur(7px) saturate(1.08) !important;
  overflow: hidden !important;
}

.topbar-inner {
  min-height: 54px !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
}

.topbar-left {
  min-width: 0 !important;
  flex: 1 1 auto !important;
}

.pula-header-logo {
  height: 50px !important;
  max-width: min(240px, 58vw) !important;
  width: auto !important;
  object-fit: contain !important;
  filter: drop-shadow(0 5px 14px rgba(0,0,0,.22)) !important;
  background: transparent !important;
}

.top-device-status {
  margin-left: auto !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-end !important;
  justify-content: center !important;
  gap: 4px !important;
  flex: 0 0 auto !important;
}

.top-device-status .status-pill {
  min-height: 24px !important;
  height: 24px !important;
  padding: 0 10px !important;
  border-radius: 999px !important;
  font-size: 11px !important;
  line-height: 24px !important;
  box-shadow: none !important;
}

.top-device-status .signal-wrap {
  min-height: 24px !important;
  height: 24px !important;
  padding: 3px 8px !important;
  border-radius: 999px !important;
  background: rgba(6,16,27,.36) !important;
  box-shadow: none !important;
}

.top-device-status .signal-bar {
  width: 5px !important;
}

.top-device-status .signal-text {
  font-size: 11px !important;
  margin-left: 5px !important;
}

/* Device header spacing cleanup */
.device-toolbar {
  margin: 2px 0 6px !important;
  gap: 8px !important;
}

.device-back-btn,
.back-btn {
  min-height: 42px !important;
  padding: 0 14px !important;
  border-radius: 14px !important;
}

#deviceTitle {
  margin-top: 4px !important;
  margin-bottom: 6px !important;
  font-size: 24px !important;
}

#deviceStatus {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}

.weather-above-tabs {
  margin: 6px 0 10px !important;
  min-height: 48px !important;
  border-radius: 18px !important;
}

.top-tabs {
  margin: 10px 0 16px !important;
  background: rgba(8,20,32,.46) !important;
}

/* Keep chart controls top-right but prevent overflow. */
.chart-head,
.soil-deviation-head {
  min-width: 0 !important;
}

.chart-range,
.soil-target-btn,
.soil-deviation-head button {
  max-width: 42vw !important;
}

/* Restore depth button colours; global button styles were overriding the JS inline background. */
.soil-depth-block:not(.off) {
  background: var(--depth-colour) !important;
  color: #061321 !important;
}

.soil-depth-block.off {
  background: linear-gradient(135deg, rgba(8,18,30,.98), rgba(2,8,18,.99)) !important;
  color: rgba(169,189,210,.55) !important;
  filter: saturate(.25) brightness(.58) !important;
}

/* Premium full-screen loading screen */
.pula-splash {
  background:
    linear-gradient(180deg, rgba(4,10,16,.28), rgba(4,10,16,.58)),
    url("pula-rain-bg.png") center center / cover no-repeat,
    #07111f !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-direction: column !important;
  gap: 26px !important;
}

.pula-splash img {
  width: min(78vw, 390px) !important;
  max-height: 24vh !important;
  object-fit: contain !important;
  filter: drop-shadow(0 14px 28px rgba(0,0,0,.28)) !important;
  background: transparent !important;
}

.pula-splash::after {
  content: "";
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 3px solid rgba(255,255,255,.24);
  border-top-color: var(--green);
  box-shadow: 0 0 22px rgba(46,229,157,.22);
  animation: pulaSpin .85s linear infinite;
}

@keyframes pulaSpin {
  to { transform: rotate(360deg); }
}

@media (max-width: 760px) {
  #app {
    padding: 5px 10px 26px !important;
  }

  .topbar {
    margin: 0 -2px 8px !important;
    padding: 5px 8px !important;
    background: rgba(6,16,27,.54) !important;
  }

  .topbar-inner {
    min-height: 50px !important;
  }

  .pula-header-logo {
    height: 44px !important;
    max-width: 52vw !important;
  }

  .top-device-status .status-pill,
  .top-device-status .signal-wrap {
    height: 22px !important;
    min-height: 22px !important;
  }

  .top-device-status .status-pill {
    font-size: 10.5px !important;
    line-height: 22px !important;
    padding: 0 9px !important;
  }

  .top-device-status .signal-text {
    font-size: 10.5px !important;
  }

  .device-toolbar {
    margin-bottom: 3px !important;
  }

  #deviceTitle {
    font-size: 22px !important;
  }

  .chart-box,
  .panel {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}

/* v9 final hotfix: visible rain background + contained signal bars */
html,
body{
  min-height:100%;
  background:
    linear-gradient(180deg, rgba(4,10,16,.22) 0%, rgba(4,10,16,.36) 45%, rgba(4,10,16,.56) 100%),
    url("pula-rain-bg.png") center center / cover no-repeat fixed,
    #07111f !important;
}

body::before{
  z-index:0 !important;
  background:
    linear-gradient(180deg, rgba(4,10,16,.18) 0%, rgba(4,10,16,.30) 48%, rgba(4,10,16,.50) 100%),
    url("pula-rain-bg.png") center center / cover no-repeat !important;
}

body::after{
  z-index:0 !important;
}

#app,
.pula-splash,
.modal{
  position:relative;
  z-index:1;
}

.top-device-status .signal-wrap{
  box-sizing:border-box !important;
  overflow:hidden !important;
  align-items:center !important;
  gap:3px !important;
  padding:2px 7px !important;
}

.top-device-status .signal-bar{
  width:4px !important;
  flex:0 0 4px !important;
  border-radius:999px !important;
}

.top-device-status .signal-bar:nth-child(1){height:5px !important;}
.top-device-status .signal-bar:nth-child(2){height:8px !important;}
.top-device-status .signal-bar:nth-child(3){height:11px !important;}
.top-device-status .signal-bar:nth-child(4){height:14px !important;}

.top-device-status .signal-text{
  line-height:1 !important;
  white-space:nowrap !important;
}

@media (max-width:760px){
  html,
  body{
    background:
      linear-gradient(180deg, rgba(4,10,16,.20) 0%, rgba(4,10,16,.34) 45%, rgba(4,10,16,.54) 100%),
      url("pula-rain-bg.png") center center / cover no-repeat fixed,
      #07111f !important;
  }

  .top-device-status .signal-wrap{
    height:22px !important;
    min-height:22px !important;
    padding:2px 6px !important;
    gap:3px !important;
  }

  .top-device-status .signal-bar:nth-child(1){height:4px !important;}
  .top-device-status .signal-bar:nth-child(2){height:7px !important;}
  .top-device-status .signal-bar:nth-child(3){height:10px !important;}
  .top-device-status .signal-bar:nth-child(4){height:13px !important;}
}

/* v9_1 verified hotfix: fixed visible rain image + contained signal strength */
html{
  min-height:100%;
  background:#07111f !important;
  overflow-x:hidden !important;
}
body{
  min-height:100%;
  background:transparent !important;
  position:relative !important;
  overflow-x:hidden !important;
}
body::before{
  content:"" !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:
    linear-gradient(180deg, rgba(4,10,16,.16) 0%, rgba(4,10,16,.26) 42%, rgba(4,10,16,.50) 100%),
    url("./pula-rain-bg.png") center center / cover no-repeat !important;
  transform:translateZ(0);
}
body::after{
  content:"" !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:radial-gradient(circle at 50% 0%, rgba(46,229,157,.10), transparent 38%) !important;
}
#app,
.pula-splash,
.modal{
  position:relative !important;
  z-index:1 !important;
}
.topbar{
  position:sticky !important;
  top:0 !important;
  z-index:20 !important;
}
.top-device-status{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-end !important;
  justify-content:center !important;
  gap:3px !important;
  max-width:116px !important;
  overflow:visible !important;
}
.top-device-status .signal-wrap{
  height:24px !important;
  min-height:24px !important;
  max-height:24px !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
  display:inline-flex !important;
  align-items:flex-end !important;
  justify-content:center !important;
  gap:3px !important;
  padding:5px 6px 4px !important;
  border-radius:10px !important;
  line-height:1 !important;
}
.top-device-status .signal-bar{
  display:inline-block !important;
  width:4px !important;
  min-width:4px !important;
  max-width:4px !important;
  flex:0 0 4px !important;
  margin:0 !important;
  border-radius:999px !important;
  align-self:flex-end !important;
}
.top-device-status .signal-bar:nth-child(1){height:5px !important;}
.top-device-status .signal-bar:nth-child(2){height:8px !important;}
.top-device-status .signal-bar:nth-child(3){height:11px !important;}
.top-device-status .signal-bar:nth-child(4){height:14px !important;}
.top-device-status .signal-text{
  margin-left:3px !important;
  line-height:1 !important;
  font-size:10px !important;
  white-space:nowrap !important;
}
@media (max-width:760px){
  body::before{
    background:
      linear-gradient(180deg, rgba(4,10,16,.14) 0%, rgba(4,10,16,.24) 42%, rgba(4,10,16,.48) 100%),
      url("./pula-rain-bg.png") center center / cover no-repeat !important;
  }
  .top-device-status{
    max-width:104px !important;
    gap:2px !important;
  }
  .top-device-status .signal-wrap{
    height:22px !important;
    min-height:22px !important;
    max-height:22px !important;
    padding:4px 5px 4px !important;
    gap:2.5px !important;
  }
  .top-device-status .signal-bar{width:3.5px !important;min-width:3.5px !important;max-width:3.5px !important;flex-basis:3.5px !important;}
  .top-device-status .signal-bar:nth-child(1){height:4px !important;}
  .top-device-status .signal-bar:nth-child(2){height:7px !important;}
  .top-device-status .signal-bar:nth-child(3){height:10px !important;}
  .top-device-status .signal-bar:nth-child(4){height:13px !important;}
  .top-device-status .signal-text{font-size:9.5px !important;margin-left:2px !important;}
}

/* v9_3 hotfix: normal one-finger vertical scrolling + proper targets modal */
html, body, #app, .screen, .tab-content, main {
  touch-action: pan-y !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-x: none !important;
}

/* Let the page scroll normally even when the finger starts on a chart canvas. */
canvas,
.chart-box canvas,
#soilDeviationChart,
#soilChart {
  touch-action: pan-y !important;
}

/* The earlier background layering accidentally overrode modal fixed positioning.
   Keep all modals as real centered/full-screen overlays. */
.modal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 9999 !important;
  display: grid !important;
  place-items: center !important;
  padding: max(14px, env(safe-area-inset-top)) 14px max(14px, env(safe-area-inset-bottom)) !important;
  background: rgba(3, 8, 14, .72) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  overflow: hidden !important;
  touch-action: none !important;
}

.modal.hidden {
  display: none !important;
}

.modal-card {
  width: min(620px, calc(100vw - 28px)) !important;
  max-width: calc(100vw - 28px) !important;
  max-height: calc(100dvh - 28px) !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  margin: 0 auto !important;
  border-radius: 24px !important;
}

@media (max-width: 760px) {
  .modal-card {
    width: calc(100vw - 22px) !important;
    max-width: calc(100vw - 22px) !important;
    max-height: calc(100dvh - 22px) !important;
    padding: 18px !important;
  }

  .soil-target-grid {
    gap: 8px !important;
  }

  .soil-target-row {
    grid-template-columns: 58px 1fr 1fr !important;
    gap: 8px !important;
    padding: 8px !important;
  }

  .soil-target-row strong {
    padding-bottom: 10px !important;
    font-size: 13px !important;
  }

  .soil-target-row input {
    padding: 10px !important;
    font-size: 15px !important;
  }
}


/* v9_4 Chrome PWA scroll + loading transition polish */
html,
body {
  width: 100% !important;
  max-width: 100% !important;
  min-height: 100% !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-x: none !important;
}

body {
  position: relative !important;
  touch-action: auto !important;
}

#app,
main,
.screen,
.tab-content,
.chart-box,
.panel,
.card,
.list-card {
  touch-action: pan-y !important;
}

canvas,
.chart-box canvas,
#soilChart,
#soilDeviationChart,
#tempChart,
#humidityChart,
#rainChart,
#overlayChart {
  touch-action: pan-y !important;
  pointer-events: auto !important;
}

@media (display-mode: standalone) {
  body {
    overscroll-behavior-y: auto !important;
  }
}

.pula-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    linear-gradient(180deg, rgba(3,8,14,.52), rgba(3,8,14,.74)),
    url("./pula-rain-bg.png") center center / cover no-repeat;
}

.pula-loading-overlay.hidden {
  display: none !important;
}

.pula-loading-card {
  width: min(360px, 90vw);
  display: grid;
  justify-items: center;
  gap: 18px;
  padding: 26px 22px;
  border-radius: 28px;
  background: rgba(6, 15, 24, .58);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 22px 70px rgba(0,0,0,.42);
}

.pula-loading-card img {
  width: min(250px, 74vw);
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 0 18px rgba(56,189,248,.36));
}

.pula-loading-spinner {
  width: 42px;
  height: 42px;
  border-radius: 999px;
  border: 4px solid rgba(255,255,255,.18);
  border-top-color: var(--green);
  border-right-color: var(--cyan);
  animation: pulaSpin .85s linear infinite;
}

.pula-loading-card p {
  margin: 0;
  color: #dbeafe;
  font-weight: 900;
  letter-spacing: .06em;
}

@keyframes pulaSpin {
  to { transform: rotate(360deg); }
}


/* v9.9 unified WiFi/SIM signal indicator */
.signal-wrap{
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:3px!important;
  min-width:74px!important;
  height:auto!important;
  min-height:38px!important;
  padding:5px 8px!important;
  overflow:hidden!important;
}
.signal-label{
  display:block!important;
  color:var(--muted2)!important;
  font-size:10px!important;
  line-height:1!important;
  font-weight:950!important;
  letter-spacing:.02em!important;
  white-space:nowrap!important;
}
.signal-bars{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  gap:4px!important;
  height:20px!important;
  max-height:20px!important;
}
.signal-bar{
  display:block!important;
  width:6px!important;
  border-radius:999px!important;
}
.signal-bar:nth-child(1){height:7px!important;}
.signal-bar:nth-child(2){height:11px!important;}
.signal-bar:nth-child(3){height:15px!important;}
.signal-bar:nth-child(4){height:19px!important;}
.signal-text{display:none!important;}
.top-device-status .signal-wrap{
  min-width:78px!important;
}
.status-row .signal-wrap{
  min-width:84px!important;
}
@media (max-width:620px){
  .signal-wrap{min-width:66px!important;padding:5px 6px!important;}
  .signal-label{font-size:9px!important;}
  .signal-bars{gap:3px!important;}
  .signal-bar{width:5px!important;}
}


/* v9.10 clean header signal layout: Online pill stays, WiFi/SIM is unboxed */
.top-device-status{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  padding:0!important;
  min-width:0!important;
  max-width:none!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-end!important;
  justify-content:flex-start!important;
  gap:2px!important;
  margin-left:auto!important;
}
.top-device-status .status-pill{
  margin:0!important;
  transform:translateY(-2px)!important;
}
.top-device-status .signal-wrap,
.status-row .signal-wrap,
.device-live-state .signal-wrap{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  padding:0!important;
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  width:auto!important;
  overflow:visible!important;
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:3px!important;
}
.top-device-status .signal-label,
.status-row .signal-label,
.device-live-state .signal-label{
  color:#ffffff!important;
  font-size:10px!important;
  line-height:1!important;
  font-weight:950!important;
  letter-spacing:.04em!important;
  text-transform:uppercase!important;
  text-shadow:0 1px 4px rgba(0,0,0,.55)!important;
}
.top-device-status .signal-bars,
.status-row .signal-bars,
.device-live-state .signal-bars{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  gap:3px!important;
  height:16px!important;
}
.top-device-status .signal-bar,
.status-row .signal-bar,
.device-live-state .signal-bar{
  width:5px!important;
  min-width:5px!important;
  border-radius:999px!important;
  background:rgba(143,165,189,.38)!important;
}
.top-device-status .signal-bar.on,
.status-row .signal-bar.on,
.device-live-state .signal-bar.on{
  background:var(--green)!important;
  box-shadow:0 0 9px rgba(46,229,157,.42)!important;
}
.top-device-status .signal-bar:nth-child(1),
.status-row .signal-bar:nth-child(1),
.device-live-state .signal-bar:nth-child(1){height:5px!important;}
.top-device-status .signal-bar:nth-child(2),
.status-row .signal-bar:nth-child(2),
.device-live-state .signal-bar:nth-child(2){height:8px!important;}
.top-device-status .signal-bar:nth-child(3),
.status-row .signal-bar:nth-child(3),
.device-live-state .signal-bar:nth-child(3){height:11px!important;}
.top-device-status .signal-bar:nth-child(4),
.status-row .signal-bar:nth-child(4),
.device-live-state .signal-bar:nth-child(4){height:14px!important;}
@media (max-width:620px){
  .top-device-status{gap:1px!important;}
  .top-device-status .status-pill{transform:translateY(-3px)!important;}
  .top-device-status .signal-label{font-size:9.5px!important;}
  .top-device-status .signal-bars{height:14px!important;gap:2.5px!important;}
  .top-device-status .signal-bar{width:4.5px!important;min-width:4.5px!important;}
}


/* v9.11 final: fixed sticky full-width header + centered clean signal + maintenance hold kept */
.topbar{
  position:fixed!important;
  top:0!important;
  left:0!important;
  right:0!important;
  width:100vw!important;
  margin-left:0!important;
  z-index:9999!important;
}

.topbar-inner{
  width:100%!important;
  max-width:1180px!important;
  margin:0 auto!important;
}

main{
  padding-top:94px!important;
}

.top-device-status{
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:center!important;
  gap:4px!important;
}

.top-device-status .status-pill{
  align-self:center!important;
  margin:0 auto!important;
  transform:none!important;
}

.top-device-status .signal-wrap{
  align-self:center!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
}

.top-device-status .signal-label{
  text-align:center!important;
  margin:0!important;
}

.top-device-status .signal-bars{
  align-self:center!important;
  justify-content:center!important;
}

@media (max-width:620px){
  main{
    padding-top:88px!important;
  }

  .top-device-status{
    gap:3px!important;
  }
}


/* v10.27 report schedule controls */
.report-schedule-block{
  margin-top:14px;
  padding:12px;
  border:1px solid rgba(148,163,184,.18);
  border-radius:18px;
  background:rgba(255,255,255,.045);
}
.report-schedule-fields{
  margin-top:8px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px 12px;
  align-items:end;
}
.report-schedule-fields label{margin-top:4px;margin-bottom:4px;}
.report-schedule-fields input,.report-schedule-fields select{min-height:46px;}
@media (max-width:620px){
  .report-schedule-fields{grid-template-columns:1fr;}
}

/* v10.29 account + per-rainmeter phone notifications */
.account-screen{min-height:calc(100vh - 120px);display:none;place-items:center}.account-screen.active{display:grid}.account-card{width:min(520px,100%);padding:26px;border-radius:28px;background:linear-gradient(180deg,rgba(22,39,59,.94),rgba(10,24,39,.94));border:1px solid var(--line);box-shadow:var(--shadow)}.account-logo{width:210px;max-width:80%;display:block;margin:0 auto 14px}.account-login-btn{width:100%;margin-top:18px}.rainmeter-gear{position:absolute;right:14px;bottom:14px;width:44px;height:44px;border-radius:999px;padding:0;font-size:18px;display:grid;place-items:center;background:rgba(255,255,255,.08);z-index:2}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 0;padding:14px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.045)}.settings-toggle-row strong{display:block;margin-bottom:4px}.settings-toggle-row p{margin:3px 0}.switch{margin:0;display:inline-block;position:relative;width:62px;min-width:62px;height:34px}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;cursor:pointer;inset:0;border-radius:999px;background:rgba(148,163,184,.32);border:1px solid var(--line);transition:.18s}.switch span:before{content:"";position:absolute;width:26px;height:26px;left:4px;top:3px;border-radius:50%;background:#e8fbff;transition:.18s;box-shadow:0 4px 12px rgba(0,0,0,.25)}.switch input:checked+span{background:linear-gradient(90deg,var(--green),var(--cyan));border-color:transparent}.switch input:checked+span:before{transform:translateX(27px);background:#04111d}@media(max-width:620px){.settings-toggle-row{align-items:flex-start}.rainmeter-gear{right:12px;bottom:12px}}


/* v10.39 alert list alignment + saving feedback */
.rule-card{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px !important;
}
.rule-card-text{
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.rule-delete-btn{
  margin-left:auto !important;
  flex:0 0 auto !important;
}
button:disabled{
  opacity:.65;
  cursor:wait;
}


/* PULA_APP_v11 device health indicator */
.status-tools{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.health-icon{width:38px;height:38px;padding:0;border-radius:13px;display:inline-grid;place-items:center;box-shadow:none;vertical-align:middle;background:rgba(255,255,255,.055);border:1px solid var(--line)}
.health-icon:hover{transform:translateY(-1px)}
.health-cross{position:relative;width:24px;height:24px;display:block;border-radius:6px;background:currentColor;filter:drop-shadow(0 0 10px rgba(255,255,255,.12))}
.health-cross:before{content:"";position:absolute;left:8px;right:8px;top:-5px;bottom:-5px;border-radius:5px;background:currentColor}
.health-cross:after{content:"";position:absolute;left:-5px;right:-5px;top:8px;bottom:8px;border-radius:5px;background:currentColor}
.health-cross i{position:absolute;z-index:2;bottom:5px;width:3px;border-radius:999px;background:#061321;opacity:.82}
.health-cross i:nth-child(1){left:6px;height:6px}.health-cross i:nth-child(2){left:11px;height:10px}.health-cross i:nth-child(3){left:16px;height:14px}
.health-green{color:var(--green);border-color:rgba(46,229,157,.35);background:rgba(46,229,157,.09)}
.health-orange{color:var(--orange);border-color:rgba(255,149,26,.42);background:rgba(255,149,26,.11)}
.health-red{color:#ff5a1a;border-color:rgba(255,90,26,.48);background:rgba(255,90,26,.12)}
.health-summary{display:flex;align-items:center;gap:14px;margin:10px 0 16px;padding:14px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.055)}
.health-summary .health-icon{pointer-events:none}.health-summary strong{font-size:20px}.health-summary p{margin:4px 0 0}.health-list{display:grid;gap:10px;margin-top:12px}.health-row{display:grid;grid-template-columns:14px 1fr;gap:10px;align-items:start;padding:12px;border-radius:16px;border:1px solid var(--line);background:rgba(255,255,255,.045)}
.health-row strong{display:block;font-size:14px}.health-row small{display:block;margin-top:3px;color:var(--muted);line-height:1.35}.health-dot{width:11px;height:11px;border-radius:999px;margin-top:3px;background:var(--green);box-shadow:0 0 12px rgba(46,229,157,.35)}
.health-row-orange .health-dot{background:var(--orange);box-shadow:0 0 12px rgba(255,149,26,.34)}.health-row-red .health-dot{background:#ff5a1a;box-shadow:0 0 12px rgba(255,90,26,.34)}
.settings-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 8px}.settings-action-grid button{min-height:54px}
.top-device-status{display:flex;align-items:center;justify-content:flex-end;gap:8px}.top-device-status.hidden{display:none!important}
@media (max-width:620px){.status-row{align-items:flex-start}.status-tools{gap:6px}.health-icon{width:34px;height:34px;border-radius:12px}.health-cross{transform:scale(.86)}.settings-action-grid{grid-template-columns:1fr}.top-device-status{gap:6px}}

/* PULA_APP_v11_1 health heart + sticky status cleanup */
.health-icon{
  border-radius:999px;
  background:rgba(255,255,255,.055);
}
.health-heart{
  font-size:27px;
  line-height:1;
  display:block;
  transform:translateY(-1px);
  filter:drop-shadow(0 0 11px currentColor);
}
.health-cross,
.health-cross:before,
.health-cross:after,
.health-cross i{display:none!important;}
.health-green{color:#2ee59d;border-color:rgba(46,229,157,.38);background:rgba(46,229,157,.09)}
.health-orange{color:#ffd12e;border-color:rgba(255,209,46,.45);background:rgba(255,209,46,.12)}
.health-red{color:#ff4d5e;border-color:rgba(255,77,94,.48);background:rgba(255,77,94,.12)}
.top-device-status{
  display:inline-flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:nowrap;
}
.top-device-status .status-pill,
.top-device-status .signal-wrap,
.top-device-status .health-icon,
.top-device-status .top-settings-btn{
  flex:0 0 auto;
}
.top-settings-btn{
  width:38px;
  height:38px;
  padding:0;
  border-radius:13px;
  display:inline-grid;
  place-items:center;
  font-size:17px;
  box-shadow:none;
  background:rgba(255,255,255,.055);
  border:1px solid var(--line);
}
.top-settings-btn:hover{border-color:rgba(56,189,248,.45);background:rgba(56,189,248,.10)}
#deviceLiveState{display:none!important;}
.settings-action-grid-single{grid-template-columns:1fr!important;}
@media (max-width:620px){
  .health-heart{font-size:24px;}
  .top-settings-btn{width:34px;height:34px;border-radius:12px;font-size:15px;}
  .top-device-status{gap:5px;}
}

/* PULA_APP_v11_2 final health shield + one-line sticky status override */
.topbar-inner{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  flex-wrap:nowrap!important;
}
.topbar-left{
  flex:1 1 auto!important;
  min-width:0!important;
}
.top-device-status{
  flex:0 0 auto!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:7px!important;
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
  margin-left:auto!important;
  padding:0!important;
  min-width:0!important;
  max-width:none!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  text-align:right!important;
}
.top-device-status.hidden{display:none!important;}
.top-device-status .status-pill,
.top-device-status .signal-wrap,
.top-device-status .health-icon,
.top-device-status .top-settings-btn{
  flex:0 0 auto!important;
  margin:0!important;
  transform:none!important;
}
.top-device-status .status-pill{
  height:34px!important;
  min-height:34px!important;
  padding:0 10px!important;
  border-radius:999px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:11px!important;
  line-height:1!important;
  box-shadow:none!important;
}
.top-device-status .signal-wrap,
.status-row .signal-wrap{
  height:34px!important;
  min-height:34px!important;
  padding:4px 8px!important;
  border-radius:999px!important;
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:2px!important;
  background:rgba(6,16,27,.22)!important;
  border:1px solid rgba(148,163,184,.14)!important;
  box-shadow:none!important;
  width:auto!important;
  min-width:0!important;
  overflow:visible!important;
}
.top-device-status .signal-label,
.status-row .signal-label{
  color:#fff!important;
  font-size:9px!important;
  line-height:1!important;
  font-weight:950!important;
  letter-spacing:.04em!important;
  text-transform:uppercase!important;
  margin:0!important;
}
.top-device-status .signal-bars,
.status-row .signal-bars{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  gap:2.5px!important;
  height:14px!important;
}
.top-device-status .signal-bar,
.status-row .signal-bar{
  width:4.5px!important;
  min-width:4.5px!important;
  border-radius:999px!important;
}
.top-device-status .signal-bar:nth-child(1),
.status-row .signal-bar:nth-child(1){height:4px!important;}
.top-device-status .signal-bar:nth-child(2),
.status-row .signal-bar:nth-child(2){height:7px!important;}
.top-device-status .signal-bar:nth-child(3),
.status-row .signal-bar:nth-child(3){height:10px!important;}
.top-device-status .signal-bar:nth-child(4),
.status-row .signal-bar:nth-child(4){height:13px!important;}
.health-icon{
  width:36px!important;
  height:36px!important;
  padding:0!important;
  border-radius:14px!important;
  display:inline-grid!important;
  place-items:center!important;
  box-shadow:none!important;
  vertical-align:middle!important;
}
.health-heart{display:none!important;}
.health-shield{
  width:25px!important;
  height:25px!important;
  display:block!important;
  line-height:0!important;
  filter:drop-shadow(0 0 9px currentColor)!important;
}
.health-shield svg{
  width:100%!important;
  height:100%!important;
  display:block!important;
  overflow:visible!important;
}
.health-shield .shield-shape{
  fill:rgba(255,255,255,.04)!important;
  stroke:currentColor!important;
  stroke-width:2.2!important;
  stroke-linejoin:round!important;
}
.health-shield .shield-pulse{
  fill:none!important;
  stroke:currentColor!important;
  stroke-width:2.3!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
}
.health-green{color:#2ee59d!important;border-color:rgba(46,229,157,.42)!important;background:rgba(46,229,157,.09)!important;}
.health-orange{color:#ffd12e!important;border-color:rgba(255,209,46,.50)!important;background:rgba(255,209,46,.12)!important;}
.health-red{color:#ff4d5e!important;border-color:rgba(255,77,94,.52)!important;background:rgba(255,77,94,.12)!important;}
.health-loading{color:#38bdf8!important;border-color:rgba(56,189,248,.44)!important;background:rgba(56,189,248,.10)!important;}
.health-loading .health-shield{animation:pulaHealthPulse 1s ease-in-out infinite;}
@keyframes pulaHealthPulse{0%,100%{opacity:.55;transform:scale(.96)}50%{opacity:1;transform:scale(1.03)}}
.health-skeleton{
  height:128px;
  border-radius:18px;
  border:1px solid rgba(148,163,184,.15);
  background:linear-gradient(90deg,rgba(255,255,255,.04),rgba(255,255,255,.10),rgba(255,255,255,.04));
  background-size:220% 100%;
  animation:pulaSkeleton 1.1s linear infinite;
}
@keyframes pulaSkeleton{to{background-position:-220% 0}}
.top-settings-btn{
  width:36px!important;
  height:36px!important;
  padding:0!important;
  border-radius:14px!important;
  display:inline-grid!important;
  place-items:center!important;
  font-size:16px!important;
  box-shadow:none!important;
  flex:0 0 auto!important;
}
#deviceLiveState{display:none!important;}
@media (max-width:620px){
  main{padding-top:82px!important;}
  .topbar-inner{gap:6px!important;padding:9px 10px!important;}
  .pula-header-logo{height:42px!important;max-width:min(170px,46vw)!important;}
  .top-device-status{gap:4px!important;}
  .top-device-status .status-pill{height:30px!important;min-height:30px!important;padding:0 8px!important;font-size:10px!important;}
  .top-device-status .signal-wrap{height:30px!important;min-height:30px!important;padding:3px 6px!important;}
  .top-device-status .signal-label{font-size:8px!important;}
  .health-icon,.top-settings-btn{width:30px!important;height:30px!important;border-radius:11px!important;}
  .health-shield{width:21px!important;height:21px!important;}
  .top-settings-btn{font-size:14px!important;}
}


/* PULA_APP_v11_3 sticky controls + public view prep */
.top-device-status{
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  padding:7px 9px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:10px!important;
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
}
.top-device-status .status-pill,
.top-device-status .signal-wrap,
.top-device-status .health-icon,
.top-device-status .top-settings-btn,
.top-device-status .top-public-btn{
  width:46px!important;
  height:46px!important;
  min-width:46px!important;
  min-height:46px!important;
  padding:0!important;
  border-radius:16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 46px!important;
  box-shadow:none!important;
}
.top-device-status .status-pill{
  width:auto!important;
  min-width:82px!important;
  flex-basis:auto!important;
  padding:0 14px!important;
  font-size:13px!important;
}
.top-device-status .signal-wrap{
  gap:5px!important;
  flex-direction:column!important;
}
.top-device-status .signal-label{
  font-size:9px!important;
  line-height:1!important;
  margin:0!important;
  display:block!important;
}
.top-device-status .signal-bars{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  gap:3px!important;
  height:16px!important;
}
.top-device-status .signal-bar{width:5px!important;display:block!important;}
.top-device-status .signal-bar:nth-child(1){height:5px!important;}
.top-device-status .signal-bar:nth-child(2){height:8px!important;}
.top-device-status .signal-bar:nth-child(3){height:11px!important;}
.top-device-status .signal-bar:nth-child(4){height:15px!important;}
.top-public-btn{
  border:1px solid rgba(56,189,248,.38)!important;
  background:rgba(56,189,248,.08)!important;
  color:#38bdf8!important;
  font-size:23px!important;
  line-height:1!important;
}
.top-settings-btn{font-size:19px!important;}
.health-icon{width:46px!important;height:46px!important;}
.health-shield{width:30px!important;height:30px!important;}
/* Hide main screen back buttons. Phone/browser back remains active. */
#rainmetersScreen > .back-btn,
#deviceScreen .device-back-btn,
#weatherScreen .back-btn{
  display:none!important;
}
.device-toolbar{min-height:0!important;margin:0!important;}
@media (max-width:620px){
  main{padding-top:88px!important;}
  .topbar-inner{gap:8px!important;padding:9px 9px!important;}
  .pula-header-logo{height:38px!important;max-width:min(142px,38vw)!important;}
  .top-device-status{gap:7px!important;padding:6px 7px!important;}
  .top-device-status .status-pill,
  .top-device-status .signal-wrap,
  .top-device-status .health-icon,
  .top-device-status .top-settings-btn,
  .top-device-status .top-public-btn{
    width:40px!important;
    height:40px!important;
    min-width:40px!important;
    min-height:40px!important;
    border-radius:14px!important;
    flex-basis:40px!important;
  }
  .top-device-status .status-pill{
    width:auto!important;
    min-width:66px!important;
    padding:0 10px!important;
    font-size:11px!important;
  }
  .top-device-status .signal-label{font-size:8px!important;}
  .top-device-status .signal-bars{height:14px!important;gap:2px!important;}
  .top-device-status .signal-bar{width:4px!important;}
  .health-shield{width:26px!important;height:26px!important;}
  .top-public-btn{font-size:21px!important;}
  .top-settings-btn{font-size:18px!important;}
}


/* PULA_APP_v11_4 final sticky-menu cache-fixed override */
.topbar-inner{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  flex-wrap:nowrap!important;
}
.topbar-left{flex:1 1 auto!important;min-width:0!important;}
.top-device-status{
  flex:0 0 auto!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:12px!important;
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
  margin-left:auto!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.top-device-status.hidden{display:none!important;}
.top-device-status .status-pill,
.top-device-status .signal-wrap,
.top-device-status .health-icon,
.top-device-status .top-public-btn,
.top-device-status .top-settings-btn{
  height:50px!important;
  min-height:50px!important;
  border-radius:17px!important;
  padding:0!important;
  margin:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto!important;
  box-shadow:0 8px 22px rgba(0,0,0,.18)!important;
}
.top-device-status .status-pill,
.top-device-status .signal-wrap{
  width:86px!important;
  min-width:86px!important;
  font-size:13px!important;
  font-weight:900!important;
}
.top-device-status .signal-wrap{
  flex-direction:column!important;
  gap:4px!important;
  border:1px solid rgba(255,255,255,.13)!important;
  background:rgba(255,255,255,.065)!important;
}
.top-device-status .signal-label{
  display:block!important;
  font-size:10px!important;
  line-height:1!important;
  margin:0!important;
  color:#e8fbff!important;
  font-weight:900!important;
  text-transform:uppercase!important;
}
.top-device-status .signal-bars{
  display:flex!important;
  align-items:flex-end!important;
  justify-content:center!important;
  gap:4px!important;
  height:18px!important;
}
.top-device-status .signal-bar{width:5px!important;display:block!important;}
.top-device-status .signal-bar:nth-child(1){height:6px!important;}
.top-device-status .signal-bar:nth-child(2){height:10px!important;}
.top-device-status .signal-bar:nth-child(3){height:14px!important;}
.top-device-status .signal-bar:nth-child(4){height:18px!important;}
.top-device-status .health-icon,
.top-device-status .top-public-btn,
.top-device-status .top-settings-btn{
  width:50px!important;
  min-width:50px!important;
  flex-basis:50px!important;
}
.top-device-status .health-shield{width:32px!important;height:32px!important;}
.top-device-status .top-public-btn{
  border:1px solid rgba(56,189,248,.44)!important;
  background:rgba(56,189,248,.10)!important;
  color:#38bdf8!important;
  font-size:24px!important;
  line-height:1!important;
}
.top-device-status .top-settings-btn{font-size:21px!important;}
#rainmetersScreen > .back-btn,
#deviceScreen .device-back-btn,
#weatherScreen .back-btn{
  display:none!important;
}
.device-toolbar{min-height:0!important;margin:0!important;padding:0!important;}
@media (max-width:620px){
  main{padding-top:84px!important;}
  .topbar-inner{gap:6px!important;padding:8px 8px!important;}
  .pula-header-logo{height:36px!important;max-width:84px!important;object-fit:contain!important;object-position:left center!important;}
  .top-device-status{gap:6px!important;}
  .top-device-status .status-pill,
  .top-device-status .signal-wrap{
    width:58px!important;
    min-width:58px!important;
    height:44px!important;
    min-height:44px!important;
    border-radius:14px!important;
    font-size:10px!important;
  }
  .top-device-status .health-icon,
  .top-device-status .top-public-btn,
  .top-device-status .top-settings-btn{
    width:44px!important;
    min-width:44px!important;
    height:44px!important;
    min-height:44px!important;
    border-radius:14px!important;
    flex-basis:44px!important;
  }
  .top-device-status .signal-label{font-size:8px!important;}
  .top-device-status .signal-bars{height:14px!important;gap:2px!important;}
  .top-device-status .signal-bar{width:4px!important;}
  .top-device-status .signal-bar:nth-child(1){height:5px!important;}
  .top-device-status .signal-bar:nth-child(2){height:8px!important;}
  .top-device-status .signal-bar:nth-child(3){height:11px!important;}
  .top-device-status .signal-bar:nth-child(4){height:14px!important;}
  .top-device-status .health-shield{width:28px!important;height:28px!important;}
  .top-device-status .top-public-btn{font-size:21px!important;}
  .top-device-status .top-settings-btn{font-size:18px!important;}
}


/* v11.5 premium sticky header polish */
.pula-header-logo{
  width: 240px;
  max-width: 52vw;
  filter: drop-shadow(0 0 18px rgba(56,189,248,.18));
}

.top-device-status{
  background: rgba(255,255,255,0.045)!important;
  border: 1px solid rgba(255,255,255,.08)!important;
  border-radius: 24px!important;
  padding: 10px 16px!important;
  min-width: auto!important;
  max-width: none!important;
}

.top-status-row{
  gap: 18px!important;
}

.top-status-row .status-pill{
  min-height: 42px;
  padding: 0 18px!important;
  border-radius: 18px!important;
  font-size: 13px!important;
  box-shadow: 0 0 18px rgba(46,229,157,.12);
}

.top-status-row .signal-wrap{
  border: none!important;
  background: transparent!important;
  box-shadow:none!important;
  padding:0!important;
  height:40px!important;
  gap:4px!important;
  align-items:flex-end!important;
}

.top-status-row .signal-text{
  margin-left:6px!important;
  font-size:12px!important;
  font-weight:900!important;
  letter-spacing:.06em;
}

.top-status-row .signal-bar{
  width:7px!important;
  border-radius:999px!important;
}

.top-status-row .signal-bar:nth-child(1){height:10px!important;}
.top-status-row .signal-bar:nth-child(2){height:16px!important;}
.top-status-row .signal-bar:nth-child(3){height:22px!important;}
.top-status-row .signal-bar:nth-child(4){height:28px!important;}

.top-status-action{
  width:44px;
  height:44px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.045);
  display:flex;
  align-items:center;
  justify-content:center;
  backdrop-filter:blur(12px);
  transition:.18s ease;
}

.top-status-action:hover{
  transform:translateY(-1px);
  border-color:rgba(56,189,248,.28);
}

.top-status-action svg{
  width:22px;
  height:22px;
  stroke:#8fe9ff;
}

@media (max-width:620px){
  .pula-header-logo{
    width: 180px;
  }

  .top-status-row{
    gap:12px!important;
  }

  .top-status-action{
    width:40px;
    height:40px;
  }

  .top-status-row .status-pill{
    min-height:38px;
    padding:0 14px!important;
    font-size:11px!important;
  }
}


/* v11.6 sticky clean UI reset: dashboard-box colour, bigger logo, smaller controls */
.topbar{
  background: linear-gradient(180deg, rgba(18,34,53,.96), rgba(10,24,39,.96)) !important;
  border-bottom: 1px solid rgba(148,163,184,.14) !important;
  box-shadow: 0 18px 45px rgba(0,0,0,.24) !important;
}

.topbar-inner{
  padding: 12px 16px 11px !important;
  gap: 12px !important;
}

.pula-header-logo{
  width: 275px !important;
  max-width: 42vw !important;
  filter: drop-shadow(0 0 16px rgba(56,189,248,.16)) !important;
}

.top-device-status{
  margin-left: auto !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  border-radius: 0 !important;
  min-width: 0 !important;
  max-width: none !important;
}

.top-status-row{
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 9px !important;
  white-space: nowrap !important;
  flex-wrap: nowrap !important;
}

.top-status-row .status-pill{
  min-height: 34px !important;
  height: 34px !important;
  padding: 0 13px !important;
  border-radius: 14px !important;
  font-size: 11px !important;
  line-height: 1 !important;
  box-shadow: none !important;
}

.top-status-action,
.top-health-btn,
.top-settings-btn,
.top-public-btn,
.device-health-btn,
.public-view-btn{
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  border-radius: 13px !important;
  background: rgba(255,255,255,.055) !important;
  border: 1px solid rgba(255,255,255,.075) !important;
  box-shadow: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.top-status-action svg,
.top-health-btn svg,
.top-settings-btn svg,
.top-public-btn svg,
.device-health-btn svg,
.public-view-btn svg{
  width: 19px !important;
  height: 19px !important;
  stroke-width: 2 !important;
}

/* Signal is not a button: no box, no fill, just SIM/WiFi + bars */
.top-status-row .signal-wrap,
.signal-wrap.top-signal,
.top-signal-wrap{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  padding: 0 !important;
  min-height: 34px !important;
  height: 34px !important;
  width: auto !important;
  min-width: 52px !important;
  border-radius: 0 !important;
  gap: 4px !important;
  display: inline-flex !important;
  align-items: flex-end !important;
  justify-content: center !important;
}

.top-status-row .signal-label,
.signal-wrap .signal-label{
  font-size: 10px !important;
  font-weight: 900 !important;
  color: #eaf6ff !important;
  letter-spacing: .04em !important;
  margin-right: 3px !important;
  align-self: center !important;
}

.top-status-row .signal-bars,
.signal-wrap .signal-bars{
  display: inline-flex !important;
  align-items: flex-end !important;
  gap: 3px !important;
  height: 28px !important;
}

.top-status-row .signal-bar,
.signal-wrap .signal-bar{
  width: 6px !important;
  border-radius: 999px !important;
  background: rgba(143,165,189,.28) !important;
}

.top-status-row .signal-bar:nth-child(1),
.signal-wrap .signal-bar:nth-child(1){height: 8px !important;}
.top-status-row .signal-bar:nth-child(2),
.signal-wrap .signal-bar:nth-child(2){height: 13px !important;}
.top-status-row .signal-bar:nth-child(3),
.signal-wrap .signal-bar:nth-child(3){height: 18px !important;}
.top-status-row .signal-bar:nth-child(4),
.signal-wrap .signal-bar:nth-child(4){height: 23px !important;}

.top-status-row .signal-bar.on,
.signal-wrap .signal-bar.on{
  background: var(--green) !important;
  box-shadow: 0 0 9px rgba(46,229,157,.26) !important;
}

.top-status-meta{
  display: none !important;
}

/* Prevent old mobile rules from making the status tall again */
@media (max-width: 620px){
  .topbar-inner{
    padding: 10px 12px !important;
    gap: 8px !important;
  }

  .pula-header-logo{
    width: 165px !important;
    max-width: 35vw !important;
  }

  .top-status-row{
    gap: 6px !important;
  }

  .top-status-row .status-pill{
    min-height: 32px !important;
    height: 32px !important;
    padding: 0 10px !important;
    font-size: 10px !important;
    border-radius: 12px !important;
  }

  .top-status-action,
  .top-health-btn,
  .top-settings-btn,
  .top-public-btn,
  .device-health-btn,
  .public-view-btn{
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    border-radius: 11px !important;
  }

  .top-status-action svg,
  .top-health-btn svg,
  .top-settings-btn svg,
  .top-public-btn svg,
  .device-health-btn svg,
  .public-view-btn svg{
    width: 17px !important;
    height: 17px !important;
  }

  .top-status-row .signal-wrap,
  .signal-wrap.top-signal,
  .top-signal-wrap{
    min-width: 42px !important;
    height: 32px !important;
    min-height: 32px !important;
  }

  .top-status-row .signal-label,
  .signal-wrap .signal-label{
    font-size: 9px !important;
    margin-right: 2px !important;
  }

  .top-status-row .signal-bars,
  .signal-wrap .signal-bars{
    gap: 2px !important;
    height: 24px !important;
  }

  .top-status-row .signal-bar,
  .signal-wrap .signal-bar{
    width: 5px !important;
  }
}


/* v11.7: move PULA branding out of sticky status bar and into device title */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{
  display:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  justify-content:flex-end !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  width:100% !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
  justify-content:space-between !important;
  width:100% !important;
  gap:12px !important;
}

.device-title-heading{
  margin-top:22px !important;
  margin-bottom:6px !important;
}

.device-title-brand{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:nowrap;
  min-width:0;
}

.device-title-logo{
  width:230px;
  max-width:48vw;
  height:auto;
  filter:drop-shadow(0 0 18px rgba(56,189,248,.18));
}

.device-title-separator{
  color:#eaf6ff;
  font-weight:900;
  opacity:.9;
}

.device-title-name{
  color:#f5f9ff;
  font-weight:900;
  font-size:34px;
  line-height:1;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.weather-above-tabs{
  display:none !important;
}

.top-signal-btn{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  padding:0 !important;
  margin:0 !important;
  width:auto !important;
  min-width:58px !important;
  height:36px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

.top-signal-btn:hover{
  background:transparent !important;
  border:0 !important;
  transform:none !important;
}

.top-signal-btn .signal-wrap{
  pointer-events:none;
}

.top-weather-btn svg{
  stroke:#38bdf8 !important;
}

.top-settings-btn svg{
  stroke:#eaf6ff !important;
}

@media (max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    padding:9px 10px !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
    gap:7px !important;
  }

  .device-title-heading{
    margin-top:18px !important;
  }

  .device-title-logo{
    width:150px;
    max-width:42vw;
  }

  .device-title-separator{
    font-size:26px;
  }

  .device-title-name{
    font-size:31px;
    max-width:46vw;
  }

  .top-signal-btn{
    min-width:43px !important;
    height:32px !important;
  }
}


/* v11.8 glassy sticky rebalance */
.topbar{
  background:
    radial-gradient(circle at top left, rgba(46,229,157,0.16), transparent 34%),
    radial-gradient(circle at top right, rgba(56,189,248,0.15), transparent 34%),
    linear-gradient(90deg, rgba(7,17,31,0.96), rgba(11,27,46,0.96)) !important;
  border-bottom: 1px solid rgba(255,255,255,0.12) !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.32) !important;
  backdrop-filter: blur(18px) !important;
}

/* Farms and rainmeter-list pages keep the original glassy logo bar */
.topbar-left{
  display:block !important;
}

/* Only when a device is open: remove logo from sticky bar and let controls fill the full width */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{
  display:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  justify-content:center !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  width:100% !important;
  max-width:680px !important;
  margin:0 auto !important;
  padding:8px 12px !important;
  border-radius:24px !important;
  background:rgba(255,255,255,.06) !important;
  border:1px solid rgba(255,255,255,.10) !important;
  box-shadow:0 14px 34px rgba(0,0,0,.24) !important;
  backdrop-filter:blur(18px) !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  width:100% !important;
  white-space:nowrap !important;
  flex-wrap:nowrap !important;
}

.top-status-row .status-pill{
  min-height:38px !important;
  height:38px !important;
  padding:0 16px !important;
  border-radius:15px !important;
  font-size:11px !important;
}

.top-signal-btn{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  padding:0 !important;
  min-width:58px !important;
  height:38px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

.top-signal-btn:hover{
  background:transparent !important;
  border:0 !important;
}

.top-signal-btn .signal-wrap{
  pointer-events:none;
}

.top-status-row .signal-wrap,
.signal-wrap.top-signal,
.top-signal-wrap{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  padding:0 !important;
  min-height:34px !important;
  height:34px !important;
}

.top-status-action,
.top-health-btn,
.top-settings-btn,
.top-public-btn,
.device-health-btn,
.public-view-btn,
.health-icon{
  width:38px !important;
  height:38px !important;
  min-width:38px !important;
  min-height:38px !important;
  padding:0 !important;
  border-radius:14px !important;
  background:rgba(255,255,255,.055) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  box-shadow:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

.top-weather-btn .weather-cloud{
  font-size:20px !important;
  line-height:1 !important;
  color:var(--cyan) !important;
  filter:drop-shadow(0 0 10px rgba(56,189,248,.35)) !important;
}

.top-settings-btn svg,
.rainmeter-gear svg{
  width:19px !important;
  height:19px !important;
  stroke:#eaf6ff !important;
  stroke-width:2 !important;
}

.rainmeter-gear{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

.status-tools{
  display:inline-flex !important;
  align-items:center !important;
  gap:10px !important;
}

/* Rainmeter list should not look crowded */
#rainmeterList .health-icon{
  display:none !important;
}

@media (max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    padding:8px 10px !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
    max-width:none !important;
    padding:7px 8px !important;
    border-radius:20px !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
    gap:6px !important;
  }

  .top-status-row .status-pill{
    min-height:34px !important;
    height:34px !important;
    padding:0 12px !important;
    font-size:10px !important;
    border-radius:13px !important;
  }

  .top-signal-btn{
    min-width:48px !important;
    height:34px !important;
  }

  .top-status-action,
  .top-health-btn,
  .top-settings-btn,
  .top-public-btn,
  .device-health-btn,
  .public-view-btn,
  .health-icon{
    width:34px !important;
    height:34px !important;
    min-width:34px !important;
    min-height:34px !important;
    border-radius:12px !important;
  }

  .top-weather-btn .weather-cloud{
    font-size:18px !important;
  }
}


/* v11.9 final sticky cleanup */

.topbar{
  background:
    linear-gradient(135deg, rgba(10,22,38,.82), rgba(13,29,48,.78)) !important;
  backdrop-filter: blur(24px) saturate(1.15) !important;
  -webkit-backdrop-filter: blur(24px) saturate(1.15) !important;
  border-bottom: 1px solid rgba(255,255,255,.10) !important;
  box-shadow:
    0 12px 40px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.05) !important;
}

/* REMOVE extra inner box around icons completely */
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  padding: 2px 0 !important;
  max-width: 760px !important;
}

/* true glass floating controls */
.top-status-row .status-pill,
.top-status-action,
.health-icon{
  background: rgba(255,255,255,.055) !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.06),
    0 8px 22px rgba(0,0,0,.18) !important;
}

/* Weather icon same sizing as others */
.top-weather-btn{
  width: 38px !important;
  height: 38px !important;
  min-width: 38px !important;
  min-height: 38px !important;
}

.top-weather-btn .weather-cloud{
  font-size: 18px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  height:100% !important;
  line-height:1 !important;
}

/* Better spacing */
.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
  gap: 14px !important;
}

/* signal stays unboxed */
.top-signal-btn,
.top-signal-btn .signal-wrap{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}

@media (max-width:620px){

  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
    gap: 8px !important;
  }

  .top-weather-btn{
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
  }

  .top-weather-btn .weather-cloud{
    font-size: 16px !important;
  }
}


/* v11.10 final sticky tune: more transparent, centred spacing, matching weather size */
.topbar{
  background:
    linear-gradient(135deg, rgba(10,22,38,.48), rgba(13,29,48,.42)) !important;
  backdrop-filter: blur(26px) saturate(1.2) !important;
  -webkit-backdrop-filter: blur(26px) saturate(1.2) !important;
  border-bottom: 1px solid rgba(255,255,255,.075) !important;
  box-shadow:
    0 10px 34px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.035) !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  padding-left: 22px !important;
  padding-right: 22px !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  width:100% !important;
  max-width:none !important;
  margin:0 !important;
  padding:0 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
  width:100% !important;
  display:grid !important;
  grid-template-columns: 1.15fr 1.15fr 1fr 1fr 1fr 1fr !important;
  align-items:center !important;
  justify-items:center !important;
  gap:8px !important;
}

.top-status-row .status-pill{
  min-width:100px !important;
}

.top-signal-btn{
  min-width:90px !important;
}

/* make the weather visual the same presence as the other icons */
.top-weather-btn,
.top-status-action,
.health-icon{
  width:40px !important;
  height:40px !important;
  min-width:40px !important;
  min-height:40px !important;
}

.top-weather-btn .weather-cloud{
  font-size:24px !important;
  line-height:1 !important;
  transform: translateY(-1px) !important;
  filter: drop-shadow(0 0 11px rgba(56,189,248,.45)) !important;
}

.top-status-action svg,
.health-icon svg{
  width:22px !important;
  height:22px !important;
}

/* slightly softer glass controls */
.top-status-row .status-pill,
.top-status-action,
.health-icon{
  background:rgba(255,255,255,.045) !important;
  border:1px solid rgba(255,255,255,.085) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.045),
    0 7px 18px rgba(0,0,0,.14) !important;
}

/* signal remains free/no button box */
.top-signal-btn,
.top-signal-btn:hover,
.top-signal-btn:focus{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  outline:none !important;
}

@media (max-width:620px){
  .topbar{
    background:
      linear-gradient(135deg, rgba(10,22,38,.50), rgba(13,29,48,.44)) !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    padding-left:10px !important;
    padding-right:10px !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-row{
    grid-template-columns: 1.25fr 1.05fr .9fr .9fr .9fr .9fr !important;
    gap:5px !important;
  }

  .top-status-row .status-pill{
    min-width:82px !important;
  }

  .top-signal-btn{
    min-width:62px !important;
  }

  .top-weather-btn,
  .top-status-action,
  .health-icon{
    width:35px !important;
    height:35px !important;
    min-width:35px !important;
    min-height:35px !important;
  }

  .top-weather-btn .weather-cloud{
    font-size:22px !important;
  }

  .top-status-action svg,
  .health-icon svg{
    width:20px !important;
    height:20px !important;
  }
}


/* v12.0 authentication/login polish */
.account-screen{min-height:calc(100vh - 120px);display:none;place-items:center;padding:18px 0}.account-screen.active{display:grid}.account-card{width:min(520px,100%);padding:26px;border-radius:28px;background:linear-gradient(180deg,rgba(22,39,59,.94),rgba(10,24,39,.94));border:1px solid var(--line);box-shadow:var(--shadow)}.account-logo{width:210px;max-width:80%;display:block;margin:0 auto 14px}.account-login-btn{width:100%;margin-top:18px}.auth-switch-row{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:12px}.auth-link-btn{border:0;box-shadow:none;background:transparent;color:var(--cyan);padding:8px 10px;font-weight:900}.auth-link-btn:hover{background:rgba(56,189,248,.08);border:0}.auth-message{margin:12px 0;padding:12px 14px;border-radius:16px;background:rgba(46,229,157,.10);border:1px solid rgba(46,229,157,.24);color:#dffdf4;font-weight:800}.auth-small{margin:14px 0 0;color:var(--muted);font-size:12px;line-height:1.4;text-align:center}.auth-status-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:13px 14px;border-radius:18px;background:rgba(46,229,157,.08);border:1px solid rgba(46,229,157,.20)}.auth-status-notice.warning{background:rgba(255,209,46,.08);border-color:rgba(255,209,46,.24)}.auth-status-notice strong{display:block}.auth-status-notice span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.auth-status-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.auth-status-actions .small-btn{box-shadow:none;padding:8px 10px;font-size:12px}@media(max-width:620px){.auth-status-notice{align-items:stretch;flex-direction:column}.auth-status-actions{justify-content:stretch}.auth-status-actions button{flex:1}.account-card{padding:22px}}


/* v12.2 auth login visibility safety */
.account-screen.active{
  display:grid !important;
  place-items:center;
  min-height:calc(100vh - 120px);
}
.account-card{
  width:min(460px,100%);
}


/* v12.3 account dropdown + invite users + password eyes */
.account-menu{position:relative;display:flex;align-items:center;justify-content:flex-end}.account-chip{width:42px;height:42px;border-radius:16px;padding:0;display:grid;place-items:center;background:rgba(255,255,255,.07);border:1px solid rgba(56,189,248,.24);box-shadow:0 10px 28px rgba(0,0,0,.22)}.account-avatar{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;font-weight:950;color:#04111d;background:linear-gradient(135deg,var(--green),var(--cyan));box-shadow:0 0 18px rgba(56,189,248,.28)}.account-avatar.large{width:46px;height:46px;font-size:20px}.account-dropdown{position:absolute;right:0;top:52px;width:min(330px,calc(100vw - 28px));z-index:80;padding:12px;border-radius:22px;background:rgba(7,17,31,.96);border:1px solid rgba(255,255,255,.13);box-shadow:0 22px 70px rgba(0,0,0,.45);backdrop-filter:blur(20px)}.account-dd-head{display:flex;gap:12px;align-items:center;padding:8px 8px 12px;border-bottom:1px solid var(--line)}.account-dd-head strong{display:block;color:#fff}.account-dd-head span,.account-dd-head em{display:block;color:var(--muted);font-size:12px;font-style:normal;margin-top:2px}.account-dropdown button{width:100%;margin-top:8px;text-align:left;box-shadow:none;border-radius:15px;padding:11px 12px;background:rgba(255,255,255,.055)}.password-wrap{position:relative}.password-wrap input{padding-right:52px}.password-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:38px;height:38px;padding:0;border-radius:12px;display:grid;place-items:center;box-shadow:none;background:rgba(255,255,255,.06);opacity:.86}.password-eye.active{background:rgba(56,189,248,.16);border-color:rgba(56,189,248,.36)}.user-list{display:grid;gap:10px;margin-top:12px}.user-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-radius:16px;background:rgba(255,255,255,.055);border:1px solid var(--line)}.user-row strong{display:block}.user-row span{display:block;margin-top:3px;color:var(--muted);font-size:12px}.topbar-inner{position:relative}@media(max-width:620px){.account-chip{width:38px;height:38px;border-radius:14px}.account-avatar{width:28px;height:28px}.account-dropdown{top:48px}.user-row{align-items:stretch;flex-direction:column}.user-row button{width:100%}}


/* v12.4 account dropdown unclip fix
   The account menu lives inside the sticky glass header. Some earlier mobile/topbar
   rules use overflow:hidden, which clips absolute dropdowns. Make the header allow
   overflow and render the menu as a viewport-level floating panel. */
.topbar,
.topbar-inner,
.topbar-left,
.top-device-status,
.top-status-row,
.account-menu{
  overflow: visible !important;
}

.account-menu{
  z-index: 1000 !important;
}

.account-dropdown{
  position: fixed !important;
  top: 72px !important;
  right: 14px !important;
  z-index: 9999 !important;
  max-height: min(76vh, 520px) !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
}

@media (max-width:620px){
  .account-dropdown{
    top: 62px !important;
    right: 10px !important;
    left: 10px !important;
    width: auto !important;
    max-height: calc(100vh - 82px) !important;
  }
}

/* v12.6 sticky icon restore + final alignment
   Reverts the bad v12.5 visual direction and standardises only size/spacing.
   Keeps the original blue weather cloud and colour-coded health shield. */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  min-height:58px !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{
  display:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  flex:0 1 auto !important;
  width:auto !important;
  margin:0 !important;
  padding:6px 8px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  background:rgba(4,12,23,.10) !important;
  border:0 !important;
  box-shadow:none !important;
  overflow:visible !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  flex:0 0 auto !important;
  margin:0 !important;
}

.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.account-chip{
  width:42px !important;
  height:42px !important;
  min-width:42px !important;
  min-height:42px !important;
  padding:0 !important;
  border-radius:15px !important;
  display:inline-grid !important;
  place-items:center !important;
  line-height:1 !important;
  background:rgba(255,255,255,.055) !important;
  border:1px solid rgba(255,255,255,.105) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 24px rgba(0,0,0,.16) !important;
}

.top-status-action:hover,
.top-weather-btn:hover,
.top-device-status .health-icon:hover,
.top-public-btn:hover,
.top-settings-btn:hover,
.account-chip:hover{
  transform:translateY(-1px);
  border-color:rgba(56,189,248,.34) !important;
  background:rgba(56,189,248,.09) !important;
}

.top-status-action svg,
.top-device-status .health-icon svg,
.top-public-btn svg,
.top-settings-btn svg{
  width:25px !important;
  height:25px !important;
  display:block !important;
}

/* Online/offline: no tick. Calm radar dot. */
.top-online-btn.is-online{color:var(--green) !important;border-color:rgba(46,229,157,.24) !important;}
.top-online-btn.is-offline{color:#fb7185 !important;border-color:rgba(251,113,133,.28) !important;}
.online-radar-icon .online-dot{fill:currentColor;filter:drop-shadow(0 0 6px currentColor);}
.online-radar-icon .online-arc{stroke:currentColor;stroke-width:1.8;stroke-linecap:round;opacity:.76;}
.online-radar-icon .arc-2{opacity:.38;}

/* WiFi/SIM stays readable, but is aligned with the row. */
.top-signal-btn{
  height:42px !important;
  min-height:42px !important;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.top-device-status .signal-wrap{
  height:42px !important;
  min-height:42px !important;
  min-width:68px !important;
  padding:6px 8px !important;
  border-radius:15px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:6px !important;
  background:rgba(255,255,255,.050) !important;
  border:1px solid rgba(255,255,255,.105) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 24px rgba(0,0,0,.14) !important;
}
.top-device-status .signal-label{
  font-size:10px !important;
  font-weight:950 !important;
  letter-spacing:.035em !important;
  color:#dceeff !important;
}
.top-device-status .signal-bars{height:22px !important;display:flex !important;align-items:flex-end !important;gap:3px !important;}
.top-device-status .signal-bar{width:4px !important;min-width:4px !important;border-radius:999px !important;background:rgba(143,165,189,.33) !important;}
.top-device-status .signal-bar.on{background:var(--green) !important;box-shadow:0 0 8px rgba(46,229,157,.32) !important;}
.top-device-status .signal-bar:nth-child(1){height:7px !important;}
.top-device-status .signal-bar:nth-child(2){height:11px !important;}
.top-device-status .signal-bar:nth-child(3){height:15px !important;}
.top-device-status .signal-bar:nth-child(4){height:20px !important;}

/* Weather: restore the nice blue cloud, just sized to match the row. */
.top-weather-btn .weather-cloud{
  font-size:32px !important;
  line-height:1 !important;
  color:var(--cyan) !important;
  transform:translateY(-1px) !important;
  filter:drop-shadow(0 0 10px rgba(56,189,248,.48)) !important;
}

/* Health: colour-coded shield exactly as intended. */
.top-device-status .health-icon{background:rgba(255,255,255,.050) !important;}
.top-device-status .health-shield{width:30px !important;height:30px !important;display:grid !important;place-items:center !important;}
.top-device-status .health-icon svg{width:30px !important;height:30px !important;}
.health-icon .shield-shape{stroke:currentColor !important;stroke-width:1.7 !important;fill:currentColor !important;fill-opacity:.10 !important;}
.health-icon .shield-pulse{stroke:currentColor !important;stroke-width:1.9 !important;fill:none !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.health-icon.health-green{color:var(--green) !important;border-color:rgba(46,229,157,.26) !important;}
.health-icon.health-orange{color:var(--yellow) !important;border-color:rgba(255,209,46,.28) !important;}
.health-icon.health-red{color:#fb7185 !important;border-color:rgba(251,113,133,.30) !important;}
.health-icon.health-loading{color:var(--muted2) !important;}

/* Public map: use a clean globe + pin instead of fake SA outline. */
.top-public-btn{color:#38bdf8 !important;border-color:rgba(56,189,248,.22) !important;}
.public-globe-icon .globe-ring,
.public-globe-icon .globe-line{stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;opacity:.92;}
.public-globe-icon .globe-pin{fill:rgba(46,229,157,.18);stroke:var(--green);stroke-width:1.45;stroke-linejoin:round;}
.public-globe-icon .globe-pin-dot{fill:var(--green);}

/* Settings and account: same visual weight as the rest. */
.top-settings-btn{color:#bcd7ff !important;border-color:rgba(188,215,255,.18) !important;}
.top-settings-btn svg path,
.top-settings-btn svg circle{stroke:currentColor !important;stroke-width:1.9 !important;}
.account-chip{margin:0 !important;border-color:rgba(46,229,157,.22) !important;}
.account-avatar{width:30px !important;height:30px !important;font-size:12px !important;background:linear-gradient(135deg,var(--green),var(--cyan)) !important;color:#04111d !important;box-shadow:0 0 15px rgba(46,229,157,.24) !important;}

@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{gap:6px !important;min-height:52px !important;padding-left:8px !important;padding-right:8px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{gap:5px !important;padding:5px 0 !important;}
  .top-status-action,
  .top-weather-btn,
  .top-device-status .health-icon,
  .top-public-btn,
  .top-settings-btn,
  .account-chip{width:36px !important;height:36px !important;min-width:36px !important;min-height:36px !important;border-radius:13px !important;}
  .top-status-action svg,.top-device-status .health-icon svg,.top-public-btn svg,.top-settings-btn svg{width:22px !important;height:22px !important;}
  .top-weather-btn .weather-cloud{font-size:28px !important;}
  .top-device-status .health-shield,.top-device-status .health-icon svg{width:26px !important;height:26px !important;}
  .top-device-status .signal-wrap{height:36px !important;min-height:36px !important;min-width:58px !important;padding:5px 6px !important;gap:5px !important;}
  .top-device-status .signal-label{font-size:8.8px !important;}
  .top-device-status .signal-bars{height:18px !important;gap:2px !important;}
  .top-device-status .signal-bar{width:3.5px !important;min-width:3.5px !important;}
  .top-device-status .signal-bar:nth-child(1){height:6px !important;}
  .top-device-status .signal-bar:nth-child(2){height:9px !important;}
  .top-device-status .signal-bar:nth-child(3){height:13px !important;}
  .top-device-status .signal-bar:nth-child(4){height:17px !important;}
  .account-avatar{width:26px !important;height:26px !important;font-size:11px !important;}
}


/* v12.7 unified sticky SVG system
   Final direction: no AI image backgrounds, no mixed emoji sizing. Transparent inline SVG/HTML
   inside one sticky glass bar with equal touch targets and optical alignment. */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  min-height:60px !important;
  padding:8px 10px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{display:none !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  flex:0 1 auto !important;
  width:auto !important;
  margin:0 !important;
  padding:5px 6px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
  background:rgba(4,12,23,.08) !important;
  border:0 !important;
  box-shadow:none !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{flex:0 0 auto !important;margin:0 !important;}

.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.account-chip{
  width:44px !important;
  height:44px !important;
  min-width:44px !important;
  min-height:44px !important;
  padding:0 !important;
  border-radius:16px !important;
  display:inline-grid !important;
  place-items:center !important;
  line-height:1 !important;
  background:rgba(255,255,255,.045) !important;
  border:1px solid rgba(255,255,255,.095) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 8px 22px rgba(0,0,0,.14) !important;
  overflow:visible !important;
}
.top-status-action:hover,
.top-weather-btn:hover,
.top-device-status .health-icon:hover,
.top-public-btn:hover,
.top-settings-btn:hover,
.account-chip:hover{
  transform:translateY(-1px) !important;
  border-color:rgba(56,189,248,.34) !important;
  background:rgba(56,189,248,.085) !important;
}

/* Online/offline badge: glossy orb with text, no tick/radar icon. */
.pula-status-badge,
.pula-sticky-signal{
  width:100%;
  height:100%;
  display:grid;
  grid-template-rows:1fr 10px;
  align-items:center;
  justify-items:center;
  gap:0;
}
.pula-status-orb{
  width:21px;
  height:21px;
  border-radius:999px;
  display:block;
  position:relative;
  box-shadow:0 0 11px currentColor, inset 0 -4px 7px rgba(0,0,0,.22);
  background:currentColor;
}
.pula-status-orb:before{
  content:"";
  position:absolute;
  left:4px;
  top:3px;
  width:13px;
  height:7px;
  border-radius:999px;
  background:rgba(255,255,255,.38);
  transform:rotate(-8deg);
}
.top-online-btn.is-online,
.pula-status-badge.status-online{color:var(--green) !important;border-color:rgba(46,229,157,.24) !important;}
.top-online-btn.is-offline,
.pula-status-badge.status-offline{color:#ff4b55 !important;border-color:rgba(255,75,85,.28) !important;}
.pula-sticky-label{
  font-size:6.7px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.055em !important;
  color:#e8fbff !important;
  text-transform:uppercase !important;
  text-shadow:0 1px 2px rgba(0,0,0,.45) !important;
  white-space:nowrap !important;
}

/* WiFi/SIM: same symbol for both; only label changes. Transparent, not a separate tile. */
.top-signal-btn,
.top-signal-btn:hover,
.top-signal-btn:focus{
  width:44px !important;
  height:44px !important;
  min-width:44px !important;
  min-height:44px !important;
  padding:0 !important;
  border-radius:16px !important;
  display:inline-grid !important;
  place-items:center !important;
  background:rgba(255,255,255,.045) !important;
  border:1px solid rgba(46,229,157,.18) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 8px 22px rgba(0,0,0,.14) !important;
  outline:none !important;
}
.top-device-status .signal-wrap{all:unset !important;}
.pula-signal-svg{width:30px !important;height:27px !important;display:block !important;overflow:visible !important;transform:translateY(1px);}
.pula-signal-svg .sig-arc{
  fill:none;
  stroke-linecap:round;
  stroke-width:3.2;
  filter:drop-shadow(0 0 4px rgba(46,229,157,.35));
}
.pula-signal-svg .sig-arc.on{stroke:var(--green);opacity:1;}
.pula-signal-svg .sig-arc.off{stroke:rgba(143,165,189,.26);opacity:.9;filter:none;}
.pula-signal-svg .sig-dot{fill:#020711;stroke:rgba(255,255,255,.14);stroke-width:.45;}

/* Other sticky icons: same button size, icon-only, transparent background. */
.top-status-action svg,
.top-device-status .health-icon svg,
.top-public-btn svg,
.top-settings-btn svg{
  width:27px !important;
  height:27px !important;
  display:block !important;
}
.top-weather-btn .weather-cloud{
  font-size:34px !important;
  line-height:1 !important;
  color:var(--cyan) !important;
  transform:translateY(-1px) !important;
  filter:drop-shadow(0 0 11px rgba(56,189,248,.50)) !important;
}
.top-device-status .health-shield{width:31px !important;height:31px !important;display:grid !important;place-items:center !important;}
.top-device-status .health-icon svg{width:31px !important;height:31px !important;}
.health-icon.health-green{color:var(--green) !important;border-color:rgba(46,229,157,.26) !important;}
.health-icon.health-orange{color:var(--yellow) !important;border-color:rgba(255,209,46,.30) !important;}
.health-icon.health-red{color:#fb7185 !important;border-color:rgba(251,113,133,.32) !important;}
.top-public-btn{color:#38bdf8 !important;border-color:rgba(56,189,248,.22) !important;}
.top-settings-btn{color:#bcd7ff !important;border-color:rgba(188,215,255,.18) !important;}
.top-settings-btn svg path,.top-settings-btn svg circle{stroke:currentColor !important;stroke-width:1.9 !important;}
.account-chip{margin:0 !important;border-color:rgba(46,229,157,.22) !important;}
.account-avatar{width:30px !important;height:30px !important;font-size:12px !important;background:linear-gradient(135deg,var(--green),var(--cyan)) !important;color:#04111d !important;box-shadow:0 0 15px rgba(46,229,157,.24) !important;}

@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{gap:5px !important;min-height:54px !important;padding-left:7px !important;padding-right:7px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{gap:4px !important;padding:4px 0 !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.account-chip,.top-signal-btn{
    width:38px !important;height:38px !important;min-width:38px !important;min-height:38px !important;border-radius:14px !important;
  }
  .pula-status-orb{width:18px;height:18px;}
  .pula-status-orb:before{left:3px;top:2.5px;width:11px;height:6px;}
  .pula-sticky-label{font-size:5.7px !important;letter-spacing:.04em !important;}
  .pula-signal-svg{width:27px !important;height:24px !important;}
  .pula-signal-svg .sig-arc{stroke-width:3.0;}
  .top-status-action svg,.top-public-btn svg,.top-settings-btn svg{width:23px !important;height:23px !important;}
  .top-weather-btn .weather-cloud{font-size:30px !important;}
  .top-device-status .health-shield,.top-device-status .health-icon svg{width:27px !important;height:27px !important;}
  .account-avatar{width:26px !important;height:26px !important;font-size:11px !important;}
}

/* ============================================================
   v12.8 APPROVED STICKY BAR ICON SYSTEM
   One unified transparent SVG/CSS system; no generated icon images.
   ============================================================ */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{
  flex:0 0 auto !important;
  min-width:0 !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  flex:1 1 auto !important;
  max-width:none !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:10px !important;
  margin:0 !important;
  padding:6px 8px !important;
  overflow:visible !important;
  background:rgba(5,16,29,.12) !important;
  border:1px solid rgba(255,255,255,.06) !important;
  border-radius:24px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06) !important;
  backdrop-filter:blur(16px) !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  flex:0 0 auto !important;
  margin:0 !important;
}
.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.account-chip,
.top-signal-btn{
  width:48px !important;
  height:48px !important;
  min-width:48px !important;
  min-height:48px !important;
  padding:0 !important;
  border-radius:17px !important;
  display:inline-grid !important;
  place-items:center !important;
  line-height:1 !important;
  background:rgba(255,255,255,.035) !important;
  border:1px solid rgba(255,255,255,.075) !important;
  box-shadow:none !important;
  overflow:visible !important;
  transform:none !important;
}
.top-status-action:hover,
.top-weather-btn:hover,
.top-device-status .health-icon:hover,
.top-public-btn:hover,
.top-settings-btn:hover,
.account-chip:hover,
.top-signal-btn:hover{
  background:rgba(56,189,248,.07) !important;
  border-color:rgba(56,189,248,.25) !important;
  transform:translateY(-1px) !important;
}
.pula-status-badge,
.pula-sticky-signal,
.top-weather-btn{
  width:100% !important;
  height:100% !important;
  display:grid !important;
  grid-template-rows:30px 10px !important;
  align-items:center !important;
  justify-items:center !important;
  gap:1px !important;
}
.pula-status-orb{
  width:24px !important;
  height:24px !important;
  border-radius:999px !important;
  box-shadow:0 0 12px currentColor, inset 0 -5px 8px rgba(0,0,0,.28) !important;
}
.pula-status-orb:before{
  left:4px !important;
  top:3px !important;
  width:15px !important;
  height:8px !important;
  background:rgba(255,255,255,.42) !important;
}
.top-online-btn.is-online,
.pula-status-badge.status-online{color:var(--green) !important;}
.top-online-btn.is-offline,
.pula-status-badge.status-offline{color:#ff4650 !important;}
.pula-sticky-label{
  font-size:6.6px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.055em !important;
  color:currentColor !important;
  text-transform:uppercase !important;
  text-shadow:0 1px 2px rgba(0,0,0,.55) !important;
  white-space:nowrap !important;
}
/* WiFi and SIM use the exact same symbol. Only the label changes. */
.top-signal-btn{color:var(--green) !important;border-color:rgba(46,229,157,.13) !important;}
.top-device-status .signal-wrap{all:unset !important;}
.pula-signal-svg{
  width:31px !important;
  height:28px !important;
  display:block !important;
  overflow:visible !important;
  transform:translateY(1px) !important;
}
.pula-signal-svg .sig-arc{
  fill:none !important;
  stroke-linecap:round !important;
  stroke-width:3.15 !important;
  filter:drop-shadow(0 0 5px rgba(46,229,157,.40)) !important;
}
.pula-signal-svg .sig-arc.on{stroke:var(--green) !important;opacity:1 !important;}
.pula-signal-svg .sig-arc.off{stroke:rgba(143,165,189,.22) !important;opacity:.92 !important;filter:none !important;}
.pula-signal-svg .sig-dot{fill:#020711 !important;stroke:rgba(255,255,255,.18) !important;stroke-width:.48 !important;}
/* Approved blue PULA cloud, now SVG so it scales reliably. */
.weather-cloud{display:none !important;}
.weather-cloud-svg{
  width:32px !important;
  height:28px !important;
  display:block !important;
  overflow:visible !important;
  transform:translateY(1px) !important;
  filter:drop-shadow(0 0 10px rgba(56,189,248,.55)) !important;
}
.weather-cloud-svg .cloud-fill{fill:url(#unused) !important;}
.weather-cloud-svg .cloud-fill{fill:#0a7df2 !important;}
.weather-cloud-svg .cloud-stroke{stroke:#6bd7ff !important;stroke-width:1.9 !important;stroke-linejoin:round !important;stroke-linecap:round !important;fill:none !important;}
.top-weather-btn{color:#64d8ff !important;border-color:rgba(56,189,248,.16) !important;}
.top-weather-btn .weather-label{color:#64d8ff !important;}
/* Health keeps the earlier state colors. */
.top-device-status .health-icon{border-color:rgba(255,255,255,.08) !important;}
.top-device-status .health-shield{width:32px !important;height:32px !important;display:grid !important;place-items:center !important;}
.top-device-status .health-icon svg{width:32px !important;height:32px !important;display:block !important;}
.health-icon.health-green{color:var(--green) !important;border-color:rgba(46,229,157,.18) !important;}
.health-icon.health-orange{color:var(--yellow) !important;border-color:rgba(255,209,46,.24) !important;}
.health-icon.health-red{color:#fb7185 !important;border-color:rgba(251,113,133,.26) !important;}
.health-icon.health-green svg{filter:drop-shadow(0 0 8px rgba(46,229,157,.42)) !important;}
.health-icon.health-orange svg{filter:drop-shadow(0 0 8px rgba(255,209,46,.38)) !important;}
.health-icon.health-red svg{filter:drop-shadow(0 0 8px rgba(251,113,133,.38)) !important;}
/* Public, settings, user all match the same optical weight. */
.top-public-btn{color:#f2db4d !important;border-color:rgba(242,219,77,.16) !important;}
.public-globe-icon{width:31px !important;height:31px !important;filter:drop-shadow(0 0 8px rgba(242,219,77,.34)) !important;}
.public-globe-icon .globe-ring,
.public-globe-icon .globe-line{stroke:currentColor !important;stroke-width:1.95 !important;stroke-linecap:round !important;stroke-linejoin:round !important;opacity:.96 !important;}
.public-globe-icon .globe-pin{fill:rgba(46,229,157,.14) !important;stroke:var(--green) !important;stroke-width:1.45 !important;}
.public-globe-icon .globe-pin-dot{fill:var(--green) !important;}
.top-settings-btn{color:#d7e4f4 !important;border-color:rgba(215,228,244,.13) !important;}
.top-settings-btn svg{width:30px !important;height:30px !important;filter:drop-shadow(0 0 6px rgba(215,228,244,.20)) !important;}
.top-settings-btn svg path,.top-settings-btn svg circle{stroke:currentColor !important;stroke-width:1.95 !important;}
.account-chip{border-color:rgba(215,228,244,.15) !important;color:#d7e4f4 !important;background:rgba(255,255,255,.035) !important;}
.account-avatar{width:31px !important;height:31px !important;font-size:12px !important;background:transparent !important;color:#d7e4f4 !important;border:2px solid currentColor !important;box-shadow:0 0 8px rgba(215,228,244,.22) !important;}
@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{gap:6px !important;min-height:55px !important;padding-left:7px !important;padding-right:7px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{gap:4px !important;padding:4px 4px !important;border-radius:19px !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.account-chip,.top-signal-btn{
    width:39px !important;height:39px !important;min-width:39px !important;min-height:39px !important;border-radius:14px !important;
  }
  .pula-status-badge,.pula-sticky-signal,.top-weather-btn{grid-template-rows:25px 8px !important;gap:0 !important;}
  .pula-status-orb{width:19px !important;height:19px !important;}
  .pula-status-orb:before{left:3px !important;top:2.5px !important;width:12px !important;height:6px !important;}
  .pula-sticky-label{font-size:5.2px !important;letter-spacing:.035em !important;}
  .pula-signal-svg{width:26px !important;height:24px !important;}
  .pula-signal-svg .sig-arc{stroke-width:3.0 !important;}
  .weather-cloud-svg{width:27px !important;height:24px !important;}
  .top-device-status .health-shield,.top-device-status .health-icon svg{width:27px !important;height:27px !important;}
  .public-globe-icon,.top-settings-btn svg{width:25px !important;height:25px !important;}
  .account-avatar{width:26px !important;height:26px !important;font-size:10px !important;}
}


/* v12.9 precise sticky bar system - match approved mockup proportions */
.topbar:has(#topDeviceStatus:not(.hidden)){
  background:linear-gradient(180deg,rgba(3,14,20,.34),rgba(3,14,20,.20)) !important;
  border-bottom:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  max-width:none !important;
  width:100% !important;
  min-height:76px !important;
  padding:9px 14px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{display:none !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  min-width:0 !important;
  max-width:none !important;
  flex:0 0 auto !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  content:"";
  position:absolute;
  left:8px;right:8px;top:8px;bottom:8px;
  border-radius:28px;
  background:linear-gradient(180deg,rgba(6,20,31,.74),rgba(3,14,24,.50));
  border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 12px 36px rgba(0,0,0,.20);
  backdrop-filter:blur(18px);
  pointer-events:none;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{position:relative;z-index:2;}
.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.top-signal-btn,
.account-chip{
  width:48px !important;
  height:54px !important;
  min-width:48px !important;
  min-height:54px !important;
  padding:0 !important;
  border-radius:17px !important;
  display:grid !important;
  grid-template-rows:34px 12px !important;
  place-items:center !important;
  gap:1px !important;
  background:rgba(255,255,255,.035) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06) !important;
  overflow:visible !important;
  color:#d9e8f6 !important;
}
.top-status-action:hover,.top-weather-btn:hover,.top-device-status .health-icon:hover,.top-public-btn:hover,.top-settings-btn:hover,.top-signal-btn:hover,.account-chip:hover{
  background:rgba(255,255,255,.065) !important;
  border-color:rgba(56,189,248,.22) !important;
  transform:translateY(-1px) !important;
}
.pula-status-badge,.pula-sticky-signal{display:contents !important;}
.pula-sticky-label{
  font-size:6.1px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.045em !important;
  text-transform:uppercase !important;
  color:currentColor !important;
  text-shadow:0 1px 2px rgba(0,0,0,.62) !important;
  white-space:nowrap !important;
  max-width:48px !important;
  overflow:hidden !important;
  text-overflow:clip !important;
}
.top-online-btn.is-online{color:var(--green) !important;border-color:rgba(46,229,157,.17) !important;}
.top-online-btn.is-offline{color:#ff4650 !important;border-color:rgba(255,70,80,.20) !important;}
.pula-status-orb{
  width:27px !important;height:27px !important;border-radius:999px !important;display:block !important;position:relative !important;
  background:currentColor !important;box-shadow:0 0 12px currentColor,inset 0 -7px 10px rgba(0,0,0,.33),inset 0 1px 0 rgba(255,255,255,.34) !important;
}
.pula-status-orb::before{content:"" !important;position:absolute !important;left:5px !important;top:3px !important;width:16px !important;height:9px !important;border-radius:999px 999px 70% 70% !important;background:rgba(255,255,255,.48) !important;}
.pula-signal-svg{width:31px !important;height:30px !important;transform:translateY(1px) !important;overflow:visible !important;}
.pula-signal-svg .sig-arc{stroke-width:3.25 !important;stroke-linecap:round !important;filter:drop-shadow(0 0 5px rgba(46,229,157,.45)) !important;}
.pula-signal-svg .sig-arc.on{stroke:var(--green) !important;opacity:1 !important;}
.pula-signal-svg .sig-arc.off{stroke:rgba(143,165,189,.20) !important;filter:none !important;}
.pula-signal-svg .sig-dot{fill:#020711 !important;stroke:rgba(255,255,255,.16) !important;stroke-width:.5 !important;}
.top-signal-btn{color:var(--green) !important;border-color:rgba(46,229,157,.14) !important;}
.weather-cloud-svg{width:32px !important;height:28px !important;transform:translateY(2px) !important;filter:drop-shadow(0 0 9px rgba(56,189,248,.62)) !important;}
.weather-cloud-svg .cloud-fill{fill:#0787ff !important;}
.weather-cloud-svg .cloud-stroke{stroke:#6bd7ff !important;stroke-width:1.9 !important;fill:none !important;stroke-linejoin:round !important;stroke-linecap:round !important;}
.top-weather-btn{color:#64d8ff !important;border-color:rgba(56,189,248,.18) !important;}
.top-device-status .health-icon{color:var(--green) !important;}
.top-device-status .health-icon svg,.top-device-status .health-shield{width:31px !important;height:31px !important;display:block !important;}
.health-icon.health-green{color:var(--green) !important;border-color:rgba(46,229,157,.18) !important;}
.health-icon.health-orange{color:var(--yellow) !important;border-color:rgba(255,209,46,.24) !important;}
.health-icon.health-red{color:#fb7185 !important;border-color:rgba(251,113,133,.28) !important;}
.health-icon.health-green svg{filter:drop-shadow(0 0 8px rgba(46,229,157,.42)) !important;}
.health-icon.health-orange svg{filter:drop-shadow(0 0 8px rgba(255,209,46,.38)) !important;}
.health-icon.health-red svg{filter:drop-shadow(0 0 8px rgba(251,113,133,.38)) !important;}
.top-public-btn{color:#f2db4d !important;border-color:rgba(242,219,77,.18) !important;}
.public-globe-icon{width:31px !important;height:31px !important;filter:drop-shadow(0 0 8px rgba(242,219,77,.36)) !important;}
.public-globe-icon .globe-ring,.public-globe-icon .globe-line{stroke:currentColor !important;stroke-width:1.95 !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.public-globe-icon .globe-pin{fill:rgba(46,229,157,.12) !important;stroke:var(--green) !important;stroke-width:1.45 !important;}
.public-globe-icon .globe-pin-dot{fill:var(--green) !important;}
.top-settings-btn{color:#d7e4f4 !important;border-color:rgba(215,228,244,.15) !important;}
.top-settings-btn svg{width:31px !important;height:31px !important;filter:drop-shadow(0 0 6px rgba(215,228,244,.20)) !important;}
.top-settings-btn svg path,.top-settings-btn svg circle{stroke:currentColor !important;stroke-width:1.95 !important;}
.account-chip{color:#d7e4f4 !important;border-color:rgba(215,228,244,.15) !important;}
.account-avatar{width:29px !important;height:29px !important;font-size:12px !important;border:2px solid currentColor !important;background:transparent !important;color:currentColor !important;box-shadow:0 0 8px rgba(215,228,244,.24) !important;}
.account-dropdown{z-index:1000 !important;}
@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{min-height:68px !important;padding:7px 8px !important;gap:5px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{left:5px;right:5px;top:6px;bottom:6px;border-radius:24px;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status,.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{gap:5px !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{width:42px !important;height:50px !important;min-width:42px !important;min-height:50px !important;border-radius:15px !important;grid-template-rows:31px 10px !important;}
  .pula-sticky-label{font-size:5.25px !important;letter-spacing:.03em !important;max-width:42px !important;}
  .pula-status-orb{width:24px !important;height:24px !important;}
  .pula-status-orb::before{left:4px !important;top:3px !important;width:15px !important;height:8px !important;}
  .pula-signal-svg{width:29px !important;height:27px !important;}
  .weather-cloud-svg{width:30px !important;height:25px !important;}
  .top-device-status .health-icon svg,.top-device-status .health-shield,.public-globe-icon,.top-settings-btn svg{width:28px !important;height:28px !important;}
  .account-avatar{width:27px !important;height:27px !important;font-size:11px !important;}
}
@media(max-width:370px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status,.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{gap:3px !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{width:39px !important;min-width:39px !important;}
  .pula-sticky-label{font-size:4.9px !important;max-width:39px !important;}
}

/* v12.10 sticky bar final spacing cleanup
   Remove the dark mini-boxes around each icon and let the icons float evenly
   on the glass sticky bar. Force every control to use the same vertical layout. */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  min-height:74px !important;
  padding:7px 12px !important;
  justify-content:stretch !important;
  gap:0 !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  left:8px !important;
  right:8px !important;
  top:6px !important;
  bottom:6px !important;
  border-radius:28px !important;
  background:linear-gradient(180deg,rgba(8,26,38,.58),rgba(4,17,28,.36)) !important;
  border:1px solid rgba(255,255,255,.10) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 12px 30px rgba(0,0,0,.18) !important;
  backdrop-filter:blur(18px) !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  flex:1 1 auto !important;
  min-width:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-evenly !important;
  gap:0 !important;
  padding:0 4px 0 10px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  flex:0 0 52px !important;
  width:52px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 10px 0 2px !important;
}
.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.top-signal-btn,
.account-chip{
  width:48px !important;
  height:58px !important;
  min-width:48px !important;
  min-height:58px !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:2px !important;
  overflow:visible !important;
  color:#d9e8f6 !important;
}
.top-status-action:hover,
.top-weather-btn:hover,
.top-device-status .health-icon:hover,
.top-public-btn:hover,
.top-settings-btn:hover,
.top-signal-btn:hover,
.account-chip:hover{
  background:rgba(255,255,255,.045) !important;
  border-radius:16px !important;
  transform:translateY(-1px) !important;
}
.pula-status-badge,
.pula-sticky-signal{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:2px !important;
  width:100% !important;
  height:100% !important;
}
.pula-sticky-label{
  display:block !important;
  width:100% !important;
  max-width:52px !important;
  text-align:center !important;
  font-size:6px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.04em !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:clip !important;
  margin:0 !important;
  padding:0 !important;
}
.pula-status-orb{width:28px !important;height:28px !important;}
.pula-signal-svg{width:32px !important;height:29px !important;transform:none !important;}
.weather-cloud-svg{width:34px !important;height:27px !important;transform:none !important;}
.top-device-status .health-icon svg,
.top-device-status .health-shield,
.public-globe-icon,
.top-settings-btn svg{width:31px !important;height:31px !important;}
.account-avatar{width:31px !important;height:31px !important;font-size:12px !important;}
.top-online-btn.is-online{color:var(--green) !important;}
.top-online-btn.is-offline{color:#ff4650 !important;}
.top-signal-btn{color:var(--green) !important;}
.top-weather-btn{color:#64d8ff !important;}
.top-public-btn{color:#f2db4d !important;}
.top-settings-btn,.account-chip{color:#d7e4f4 !important;}
@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{min-height:70px !important;padding:6px 7px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{left:5px !important;right:5px !important;top:6px !important;bottom:6px !important;border-radius:24px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{padding:0 2px 0 8px !important;justify-content:space-between !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{flex-basis:46px !important;width:46px !important;padding:0 7px 0 1px !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{width:43px !important;height:57px !important;min-width:43px !important;min-height:57px !important;gap:2px !important;}
  .pula-sticky-label{font-size:5.25px !important;letter-spacing:.028em !important;max-width:45px !important;}
  .pula-status-orb{width:27px !important;height:27px !important;}
  .pula-signal-svg{width:31px !important;height:28px !important;}
  .weather-cloud-svg{width:33px !important;height:26px !important;}
  .top-device-status .health-icon svg,.top-device-status .health-shield,.public-globe-icon,.top-settings-btn svg{width:30px !important;height:30px !important;}
  .account-avatar{width:30px !important;height:30px !important;}
}
@media(max-width:370px){
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{width:39px !important;min-width:39px !important;}
  .pula-sticky-label{font-size:4.8px !important;max-width:40px !important;}
}


/* ============================================================
   PULA APP v12.13 - FINAL LIVE STICKY BAR SYSTEM
   Built from the last deployed files. This block intentionally
   overrides older sticky-bar experiments above.
   ============================================================ */
.topbar:has(#topDeviceStatus:not(.hidden)){
  background:transparent !important;
  border-bottom:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  position:relative !important;
  min-height:76px !important;
  padding:7px 10px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:0 !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{display:none !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  content:"" !important;
  position:absolute !important;
  left:6px !important;
  right:6px !important;
  top:7px !important;
  bottom:7px !important;
  border-radius:30px !important;
  background:linear-gradient(180deg,rgba(8,26,38,.52),rgba(4,17,28,.34)) !important;
  border:1px solid rgba(255,255,255,.105) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),0 13px 32px rgba(0,0,0,.18) !important;
  backdrop-filter:blur(18px) !important;
  -webkit-backdrop-filter:blur(18px) !important;
  pointer-events:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  position:relative !important;
  z-index:2 !important;
  flex:1 1 auto !important;
  min-width:0 !important;
  max-width:none !important;
  margin:0 !important;
  padding:0 4px 0 10px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:0 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  overflow:visible !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  position:relative !important;
  z-index:3 !important;
  flex:0 0 50px !important;
  width:50px !important;
  margin:0 !important;
  padding:0 7px 0 1px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  overflow:visible !important;
}
.top-status-action,
.top-weather-btn,
.top-device-status .health-icon,
.top-public-btn,
.top-settings-btn,
.top-signal-btn,
.account-chip{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:46px !important;
  height:60px !important;
  min-width:46px !important;
  min-height:60px !important;
  max-width:46px !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  outline:none !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:3px !important;
  overflow:visible !important;
  text-align:center !important;
  color:#d7e4f4 !important;
  -webkit-tap-highlight-color:rgba(46,229,157,.12) !important;
}
.top-status-action:hover,
.top-weather-btn:hover,
.top-device-status .health-icon:hover,
.top-public-btn:hover,
.top-settings-btn:hover,
.top-signal-btn:hover,
.account-chip:hover,
.top-status-action:focus,
.top-weather-btn:focus,
.top-device-status .health-icon:focus,
.top-public-btn:focus,
.top-settings-btn:focus,
.top-signal-btn:focus,
.account-chip:focus,
.top-status-action:active,
.top-weather-btn:active,
.top-device-status .health-icon:active,
.top-public-btn:active,
.top-settings-btn:active,
.top-signal-btn:active,
.account-chip:active{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  outline:none !important;
}
.pula-status-badge,
.pula-sticky-signal{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:3px !important;
  width:100% !important;
  height:100% !important;
}
.pula-sticky-label,
.account-label,
.health-label,
.weather-label,
.public-label,
.settings-label{
  display:block !important;
  width:100% !important;
  max-width:50px !important;
  min-height:8px !important;
  margin:0 !important;
  padding:0 !important;
  text-align:center !important;
  font-size:5.9px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.035em !important;
  text-transform:uppercase !important;
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:clip !important;
  color:currentColor !important;
  text-shadow:0 1px 2px rgba(0,0,0,.60) !important;
}
/* ONLINE/OFFLINE glossy status orb */
.top-online-btn.is-online{color:var(--green) !important;}
.top-online-btn.is-offline{color:#ff4650 !important;}
.pula-status-orb{
  width:31px !important;
  height:31px !important;
  border-radius:999px !important;
  display:block !important;
  position:relative !important;
  background:currentColor !important;
  box-shadow:0 0 12px color-mix(in srgb,currentColor 58%,transparent),inset 0 -8px 11px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.36) !important;
  filter:drop-shadow(0 0 6px currentColor) !important;
}
.pula-status-orb::before{
  content:"" !important;
  position:absolute !important;
  left:5px !important;
  top:3px !important;
  width:19px !important;
  height:10px !important;
  border-radius:999px 999px 70% 70% !important;
  background:rgba(255,255,255,.46) !important;
}
/* WiFi/SIM signal */
.top-signal-btn{color:var(--green) !important;}
.pula-signal-svg{
  width:34px !important;
  height:31px !important;
  transform:translateY(1px) !important;
  overflow:visible !important;
  filter:drop-shadow(0 0 6px rgba(46,229,157,.35)) !important;
}
.pula-signal-svg .sig-arc{
  stroke-width:3.15 !important;
  stroke-linecap:round !important;
}
.pula-signal-svg .sig-arc.on{stroke:var(--green) !important;opacity:1 !important;}
.pula-signal-svg .sig-arc.off{stroke:rgba(46,229,157,.22) !important;opacity:.34 !important;filter:none !important;}
.pula-signal-svg .sig-dot{
  fill:var(--green) !important;
  stroke:rgba(255,255,255,.22) !important;
  stroke-width:.55 !important;
  filter:drop-shadow(0 0 5px rgba(46,229,157,.55)) !important;
}
/* Weather cloud */
.top-weather-btn{color:#38bdf8 !important;}
.weather-cloud-svg{
  width:36px !important;
  height:29px !important;
  transform:translateY(1px) !important;
  filter:drop-shadow(0 0 8px rgba(56,189,248,.62)) !important;
}
.weather-cloud-svg .cloud-fill{fill:#0787ff !important;}
.weather-cloud-svg .cloud-stroke{stroke:#6bd7ff !important;stroke-width:1.85 !important;fill:none !important;stroke-linejoin:round !important;stroke-linecap:round !important;}
/* Health state colors restored */
.top-device-status .health-icon{color:var(--green) !important;}
.top-device-status .health-icon.health-green{color:var(--green) !important;}
.top-device-status .health-icon.health-orange{color:var(--yellow) !important;}
.top-device-status .health-icon.health-red{color:#fb7185 !important;}
.top-device-status .health-icon svg,
.top-device-status .health-shield{
  width:33px !important;
  height:33px !important;
  display:block !important;
}
.top-device-status .health-icon .shield-shape{stroke:currentColor !important;stroke-width:1.75 !important;fill:currentColor !important;fill-opacity:.10 !important;}
.top-device-status .health-icon .shield-pulse{stroke:currentColor !important;stroke-width:1.95 !important;fill:none !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.top-device-status .health-icon.health-green svg{filter:drop-shadow(0 0 8px rgba(46,229,157,.42)) !important;}
.top-device-status .health-icon.health-orange svg{filter:drop-shadow(0 0 8px rgba(255,209,46,.42)) !important;}
.top-device-status .health-icon.health-red svg{filter:drop-shadow(0 0 8px rgba(251,113,133,.42)) !important;}
/* Public, settings and user */
.top-public-btn{color:#f2db4d !important;}
.public-globe-icon{
  width:33px !important;
  height:33px !important;
  filter:drop-shadow(0 0 7px rgba(242,219,77,.32)) !important;
}
.public-globe-icon .globe-ring,
.public-globe-icon .globe-line{stroke:currentColor !important;stroke-width:1.75 !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.public-globe-icon .globe-pin{fill:rgba(46,229,157,.12) !important;stroke:var(--green) !important;stroke-width:1.35 !important;}
.public-globe-icon .globe-pin-dot{fill:var(--green) !important;}
.top-settings-btn{color:#d7e4f4 !important;}
.top-settings-btn svg{
  width:33px !important;
  height:33px !important;
  filter:drop-shadow(0 0 5px rgba(215,228,244,.20)) !important;
}
.top-settings-btn svg path,
.top-settings-btn svg circle{stroke:currentColor !important;stroke-width:1.7 !important;}
.account-chip{color:#d7e4f4 !important;}
.account-avatar{
  width:32px !important;
  height:32px !important;
  min-width:32px !important;
  min-height:32px !important;
  font-size:12px !important;
  border:2px solid currentColor !important;
  border-radius:50% !important;
  background:transparent !important;
  color:currentColor !important;
  box-shadow:0 0 8px rgba(215,228,244,.22) !important;
}
.account-dropdown{z-index:1000 !important;}
@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{min-height:72px !important;padding:6px 7px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{left:5px !important;right:5px !important;top:6px !important;bottom:6px !important;border-radius:25px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{padding:0 2px 0 7px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{flex-basis:47px !important;width:47px !important;padding:0 7px 0 1px !important;}
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{
    width:43px !important;min-width:43px !important;max-width:43px !important;height:58px !important;min-height:58px !important;gap:2px !important;
  }
  .pula-sticky-label,.account-label,.health-label,.weather-label,.public-label,.settings-label{font-size:5.35px !important;letter-spacing:.026em !important;max-width:45px !important;}
  .pula-status-orb{width:29px !important;height:29px !important;}
  .pula-status-orb::before{left:5px !important;top:3px !important;width:17px !important;height:9px !important;}
  .pula-signal-svg{width:32px !important;height:29px !important;}
  .weather-cloud-svg{width:34px !important;height:27px !important;}
  .top-device-status .health-icon svg,.top-device-status .health-shield,.public-globe-icon,.top-settings-btn svg{width:31px !important;height:31px !important;}
  .account-avatar{width:30px !important;height:30px !important;}
}
@media(max-width:370px){
  .top-status-action,.top-weather-btn,.top-device-status .health-icon,.top-public-btn,.top-settings-btn,.top-signal-btn,.account-chip{width:40px !important;min-width:40px !important;max-width:40px !important;}
  .pula-sticky-label,.account-label,.health-label,.weather-label,.public-label,.settings-label{font-size:4.95px !important;max-width:41px !important;}
  .weather-cloud-svg{width:32px !important;}
}


/* ============================================================
   PULA_APP_v12.15_SAFE_STICKY_FIX
   Based on v12.13 live files. This deliberately rolls back the
   broad v12.14 spacing changes and only corrects the sticky icon
   bar: no icon boxes, equal touch targets, no top overlap changes.
   ============================================================ */

/* Keep normal pages using the proven v12.13 layout. */
main{
  position:relative;
}

/* Device sticky bar: stable glass rail with 6 device controls + user. */
.topbar:has(#topDeviceStatus:not(.hidden)){
  background:linear-gradient(180deg,rgba(3,12,22,.50),rgba(3,12,22,.18)) !important;
  border-bottom:0 !important;
  box-shadow:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  min-height:76px !important;
  padding:7px 9px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:0 !important;
  overflow:visible !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  content:"" !important;
  position:absolute !important;
  left:8px !important;
  right:8px !important;
  top:7px !important;
  bottom:7px !important;
  border-radius:30px !important;
  background:linear-gradient(180deg,rgba(18,45,60,.44),rgba(5,18,31,.30)) !important;
  border:1px solid rgba(255,255,255,.11) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),0 13px 34px rgba(0,0,0,.18) !important;
  backdrop-filter:blur(18px) !important;
  -webkit-backdrop-filter:blur(18px) !important;
  pointer-events:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-left{
  display:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  position:relative !important;
  z-index:2 !important;
  flex:1 1 auto !important;
  min-width:0 !important;
  max-width:none !important;
  width:auto !important;
  margin:0 !important;
  padding:0 0 0 10px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-around !important;
  gap:0 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  position:relative !important;
  z-index:3 !important;
  flex:0 0 48px !important;
  width:48px !important;
  min-width:48px !important;
  max-width:48px !important;
  margin:0 !important;
  padding:0 8px 0 1px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* Remove the square/pill boxes that were still appearing around icons. */
.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:45px !important;
  min-width:45px !important;
  max-width:45px !important;
  height:59px !important;
  min-height:59px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  outline:none !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:3px !important;
  overflow:visible !important;
  text-align:center !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip::before{
  content:none !important;
  display:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip:hover,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip:focus,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn:active,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip:active{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  outline:none !important;
}

/* The ONLINE badge previously inherited normal status-pill styling. Kill it only inside sticky bar. */
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-badge,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-badge.status-online,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-badge.status-offline{
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:3px !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* Equal optical icon sizing. */
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{
  width:30px !important;
  height:30px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{
  width:33px !important;
  height:30px !important;
  transform:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{
  width:34px !important;
  height:29px !important;
  transform:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{
  width:32px !important;
  height:32px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{
  width:31px !important;
  height:31px !important;
  min-width:31px !important;
  min-height:31px !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{
  width:100% !important;
  max-width:45px !important;
  min-height:7px !important;
  margin:0 !important;
  padding:0 !important;
  font-size:5.25px !important;
  line-height:1 !important;
  letter-spacing:.02em !important;
  text-align:center !important;
  white-space:nowrap !important;
  overflow:visible !important;
}

@media(max-width:620px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    min-height:73px !important;
    padding:6px 6px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
    left:5px !important;
    right:5px !important;
    top:6px !important;
    bottom:6px !important;
    border-radius:25px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
    padding-left:7px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
    flex-basis:45px !important;
    width:45px !important;
    min-width:45px !important;
    max-width:45px !important;
    padding-right:6px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
    width:42px !important;
    min-width:42px !important;
    max-width:42px !important;
    height:57px !important;
    min-height:57px !important;
    gap:2px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{width:28px !important;height:28px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{width:31px !important;height:28px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{width:32px !important;height:27px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{width:30px !important;height:30px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{width:29px !important;height:29px !important;min-width:29px !important;min-height:29px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{font-size:4.9px !important;max-width:42px !important;}
}

@media(max-width:370px){
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
    width:39px !important;
    min-width:39px !important;
    max-width:39px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{font-size:4.55px !important;max-width:39px !important;}
}


/* ============================================================
   PULA_APP_v12.16_STICKY_SLIM_AUTOUPDATE
   Small controlled polish from v12.15:
   - reduce icon glow/back-light
   - slim farm/device sticky bars
   - add breathing room below sticky bar before page titles
   - keep page layout and app logic intact
   ============================================================ */

/* Page 1 + page 2 normal header: shorter glass bar, less glow. */
.topbar:not(:has(#topDeviceStatus:not(.hidden))){
  background:linear-gradient(180deg,rgba(8,23,30,.58),rgba(6,18,28,.34)) !important;
  border-bottom:1px solid rgba(255,255,255,.075) !important;
  box-shadow:0 10px 26px rgba(0,0,0,.16) !important;
  backdrop-filter:blur(15px) !important;
  -webkit-backdrop-filter:blur(15px) !important;
}
.topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
  min-height:60px !important;
  padding:8px 18px 7px !important;
  align-items:center !important;
}
.topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
  width:178px !important;
  max-width:48vw !important;
  filter:none !important;
}
.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
  width:40px !important;
  height:40px !important;
  min-width:40px !important;
  min-height:40px !important;
  background:rgba(255,255,255,.025) !important;
  border:1px solid rgba(215,228,244,.18) !important;
  box-shadow:none !important;
}
.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
  width:30px !important;
  height:30px !important;
  min-width:30px !important;
  min-height:30px !important;
  box-shadow:none !important;
}

/* Add space between sticky bar and page title/action areas on farm pages. */
#locationsScreen .section-head,
#rainmetersScreen .section-head{
  margin-top:14px !important;
}

/* Device sticky bar: slimmer and calmer. */
.topbar:has(#topDeviceStatus:not(.hidden)){
  background:linear-gradient(180deg,rgba(3,12,22,.42),rgba(3,12,22,.12)) !important;
  box-shadow:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  min-height:64px !important;
  padding:5px 7px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  left:8px !important;
  right:8px !important;
  top:5px !important;
  bottom:5px !important;
  border-radius:25px !important;
  background:linear-gradient(180deg,rgba(18,45,60,.32),rgba(5,18,31,.22)) !important;
  border:1px solid rgba(255,255,255,.085) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 22px rgba(0,0,0,.12) !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
  padding-left:7px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  flex-basis:44px !important;
  width:44px !important;
  min-width:44px !important;
  max-width:44px !important;
  padding-right:5px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
  width:41px !important;
  min-width:41px !important;
  max-width:41px !important;
  height:50px !important;
  min-height:50px !important;
  gap:2px !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  filter:none !important;
}

/* Remove icon back-glow and heavy drop shadows. */
.topbar:has(#topDeviceStatus:not(.hidden)) svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .health-shield,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{
  filter:none !important;
  box-shadow:none !important;
  text-shadow:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb::after{
  opacity:.18 !important;
  filter:none !important;
  box-shadow:none !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{
  width:27px !important;
  height:27px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{
  width:29px !important;
  height:26px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{
  width:30px !important;
  height:25px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{
  width:28px !important;
  height:28px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{
  width:28px !important;
  height:28px !important;
  min-width:28px !important;
  min-height:28px !important;
}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{
  font-size:4.8px !important;
  min-height:6px !important;
}

/* Space below device sticky bar before logo/title block. */
#deviceScreen{
  padding-top:12px !important;
}

@media(max-width:620px){
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
    min-height:58px !important;
    padding:7px 42px 6px 42px !important;
  }
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
    width:170px !important;
    max-width:46vw !important;
  }
  #locationsScreen .section-head,
  #rainmetersScreen .section-head{
    margin-top:18px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    min-height:63px !important;
    padding:5px 5px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
    left:5px !important;
    right:5px !important;
    top:5px !important;
    bottom:5px !important;
    border-radius:24px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status{
    padding-left:6px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
    flex-basis:42px !important;
    width:42px !important;
    min-width:42px !important;
    max-width:42px !important;
    padding-right:5px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
    width:39px !important;
    min-width:39px !important;
    max-width:39px !important;
    height:49px !important;
    min-height:49px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{width:26px !important;height:26px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{width:28px !important;height:25px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{width:29px !important;height:24px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{width:27px !important;height:27px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{width:27px !important;height:27px !important;min-width:27px !important;min-height:27px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{font-size:4.55px !important;}
}


/* ============================================================
   PULA_APP_v12.17_PAGE_HEADER_DEVICE_STICKY
   - Page 1 and page 2 no longer use the glass sticky bar.
   - They show only the PULA logo left and user badge right.
   - Device page keeps the glass sticky control bar, slightly larger
     again for easier pressing, with glow kept low.
   ============================================================ */

/* Farm/location pages: remove sticky glass bar look completely. */
.topbar:not(:has(#topDeviceStatus:not(.hidden))){
  position:relative !important;
  top:auto !important;
  z-index:20 !important;
  background:transparent !important;
  border-bottom:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  margin-bottom:0 !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
  min-height:82px !important;
  padding:20px 42px 10px !important;
  align-items:flex-start !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
  width:214px !important;
  max-width:58vw !important;
  height:auto !important;
  filter:none !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-meta,
.topbar:not(:has(#topDeviceStatus:not(.hidden))) #subTitle{
  display:none !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-menu{
  position:relative !important;
  z-index:3 !important;
  margin:0 !important;
  padding:0 !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
  width:47px !important;
  height:47px !important;
  min-width:47px !important;
  min-height:47px !important;
  padding:0 !important;
  border-radius:999px !important;
  background:rgba(3,12,22,.24) !important;
  border:2px solid rgba(215,228,244,.82) !important;
  box-shadow:none !important;
  backdrop-filter:blur(8px) !important;
  -webkit-backdrop-filter:blur(8px) !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
  width:35px !important;
  height:35px !important;
  min-width:35px !important;
  min-height:35px !important;
  box-shadow:none !important;
}

.topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-label{
  font-size:7px !important;
  margin-top:2px !important;
}

/* More breathing room between page logo/header area and the farm/location title. */
#locationsScreen .section-head,
#rainmetersScreen .section-head{
  margin-top:22px !important;
}

/* Device page: return the sticky control bar to a comfortable tap size. */
.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
  min-height:74px !important;
  padding:6px 7px !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
  left:7px !important;
  right:7px !important;
  top:6px !important;
  bottom:6px !important;
  border-radius:28px !important;
  background:linear-gradient(180deg,rgba(18,45,60,.30),rgba(5,18,31,.22)) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 7px 18px rgba(0,0,0,.10) !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
  flex-basis:47px !important;
  width:47px !important;
  min-width:47px !important;
  max-width:47px !important;
  padding-right:6px !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
  width:44px !important;
  min-width:44px !important;
  max-width:44px !important;
  height:57px !important;
  min-height:57px !important;
  gap:3px !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  filter:none !important;
}

/* Keep icon glow almost off, but preserve the icon shape/colour. */
.topbar:has(#topDeviceStatus:not(.hidden)) svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .health-shield,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{
  filter:none !important;
  box-shadow:none !important;
  text-shadow:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb::before,
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb::after{
  opacity:.08 !important;
  filter:none !important;
  box-shadow:none !important;
}

.topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{width:30px !important;height:30px !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{width:32px !important;height:29px !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{width:33px !important;height:28px !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
.topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{width:31px !important;height:31px !important;}
.topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{width:30px !important;height:30px !important;min-width:30px !important;min-height:30px !important;}

.topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
.topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{
  font-size:5.05px !important;
  min-height:7px !important;
}

#deviceScreen{
  padding-top:14px !important;
}

@media(max-width:620px){
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
    min-height:82px !important;
    padding:18px 42px 8px !important;
  }
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
    width:204px !important;
    max-width:60vw !important;
  }
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
    width:45px !important;
    height:45px !important;
    min-width:45px !important;
    min-height:45px !important;
  }
  .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
    width:34px !important;
    height:34px !important;
    min-width:34px !important;
    min-height:34px !important;
  }
  #locationsScreen .section-head,
  #rainmetersScreen .section-head{
    margin-top:24px !important;
  }

  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner{
    min-height:72px !important;
    padding:6px 5px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .topbar-inner::before{
    left:5px !important;
    right:5px !important;
    top:6px !important;
    bottom:6px !important;
    border-radius:27px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-menu{
    flex-basis:45px !important;
    width:45px !important;
    min-width:45px !important;
    max-width:45px !important;
    padding-right:5px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-status-action,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-weather-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-public-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-signal-btn,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-chip{
    width:42px !important;
    min-width:42px !important;
    max-width:42px !important;
    height:55px !important;
    min-height:55px !important;
  }
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-status-orb{width:29px !important;height:29px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-signal-svg{width:31px !important;height:28px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-cloud-svg{width:32px !important;height:27px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-icon svg,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-device-status .health-shield,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-globe-icon,
  .topbar:has(#topDeviceStatus:not(.hidden)) .top-settings-btn svg{width:30px !important;height:30px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-avatar{width:29px !important;height:29px !important;min-width:29px !important;min-height:29px !important;}
  .topbar:has(#topDeviceStatus:not(.hidden)) .pula-sticky-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .account-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .health-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .weather-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .public-label,
  .topbar:has(#topDeviceStatus:not(.hidden)) .settings-label{font-size:4.85px !important;}
}

/* ============================================================
   PULA_APP_v12.18_HOME_HEADER_TUNE
   - Keeps the device page sticky bar unchanged from v12.17.
   - Separates page 1/2 header styling from the device sticky bar.
   - Reduces the page 1/2 logo slightly and removes the excessive gap
     caused by older global sticky-header padding rules.
   - Gives page 1/2 its own user badge styling so it does not fight the
     device page user icon.
   ============================================================ */

/* Page 1 + 2 only: the device status bar is hidden on these pages. */
body:has(#topDeviceStatus.hidden) main{
  padding-top:0 !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))){
  position:relative !important;
  top:auto !important;
  z-index:20 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
  min-height:68px !important;
  padding:14px 42px 2px !important;
  align-items:flex-start !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
  width:184px !important;
  max-width:53vw !important;
  height:auto !important;
  filter:none !important;
}

/* Dedicated home/page-2 user badge: separate from the device sticky icon. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-menu{
  position:relative !important;
  z-index:4 !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
  width:42px !important;
  height:50px !important;
  min-width:42px !important;
  min-height:50px !important;
  padding:0 !important;
  display:grid !important;
  grid-template-rows:38px 10px !important;
  justify-items:center !important;
  align-items:center !important;
  gap:1px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip::before{
  content:"" !important;
  position:absolute !important;
  top:0 !important;
  left:2px !important;
  width:38px !important;
  height:38px !important;
  border-radius:999px !important;
  border:2px solid rgba(215,228,244,.88) !important;
  background:rgba(3,12,22,.18) !important;
  box-shadow:none !important;
  pointer-events:none !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
  width:30px !important;
  height:30px !important;
  min-width:30px !important;
  min-height:30px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  font-size:13px !important;
  z-index:1 !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-label{
  display:block !important;
  font-size:6px !important;
  line-height:1 !important;
  margin:0 !important;
  padding:0 !important;
  color:#e8f5ff !important;
  text-shadow:none !important;
  letter-spacing:.03em !important;
  z-index:1 !important;
}

/* Pull the page titles up closer to the logo on page 1 and page 2. */
body:has(#topDeviceStatus.hidden) #locationsScreen .section-head,
body:has(#topDeviceStatus.hidden) #rainmetersScreen .section-head{
  margin-top:6px !important;
  margin-bottom:14px !important;
}

@media(max-width:620px){
  body:has(#topDeviceStatus.hidden) main{
    padding-top:0 !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
    min-height:64px !important;
    padding:13px 42px 0 !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .pula-header-logo{
    width:178px !important;
    max-width:52vw !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
    width:41px !important;
    height:49px !important;
    min-width:41px !important;
    min-height:49px !important;
    grid-template-rows:37px 10px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip::before{
    left:2px !important;
    width:37px !important;
    height:37px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
    width:29px !important;
    height:29px !important;
    min-width:29px !important;
    min-height:29px !important;
  }

  body:has(#topDeviceStatus.hidden) #locationsScreen .section-head,
  body:has(#topDeviceStatus.hidden) #rainmetersScreen .section-head{
    margin-top:4px !important;
  }
}


/* ============================================================
   PULA_APP_v12.19_BADGE_ALIGNMENT_FROM_DEPLOYED
   ONLY page 1/2 logo position + page 1/2 user badge internal alignment.
   Device/Field sticky bar is intentionally untouched.
   ============================================================ */

/* Page 1 + 2: shift logo a little left without changing its size. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
  padding-left:30px !important;
  padding-right:42px !important;
}

/* Page 1 + 2 badge: fixed independent geometry. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-menu{
  position:relative !important;
  width:48px !important;
  height:58px !important;
  display:block !important;
  flex:0 0 48px !important;
  margin:0 !important;
  padding:0 !important;
}

body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
  position:relative !important;
  width:48px !important;
  height:58px !important;
  min-width:48px !important;
  min-height:58px !important;
  padding:0 !important;
  margin:0 !important;
  display:block !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  transform:none !important;
  overflow:visible !important;
}

/* Circle only. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip::before{
  content:"" !important;
  position:absolute !important;
  top:0 !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  width:42px !important;
  height:42px !important;
  border-radius:999px !important;
  border:2px solid rgba(220,233,248,.92) !important;
  background:rgba(3,12,22,.16) !important;
  box-shadow:none !important;
  pointer-events:none !important;
}

/* The G: exact middle of the circle, slightly larger. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
  position:absolute !important;
  top:21px !important;
  left:50% !important;
  transform:translate(-50%,-50%) !important;
  width:38px !important;
  height:38px !important;
  min-width:38px !important;
  min-height:38px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  border-radius:999px !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#f4fbff !important;
  font-size:16px !important;
  font-weight:900 !important;
  line-height:1 !important;
  letter-spacing:0 !important;
  text-align:center !important;
}

/* USER: centered below the circle, with clear space from the circle border. */
body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-label{
  position:absolute !important;
  top:47px !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  display:block !important;
  width:48px !important;
  margin:0 !important;
  padding:0 !important;
  color:#eaf6ff !important;
  font-size:6px !important;
  font-weight:900 !important;
  line-height:1 !important;
  letter-spacing:.04em !important;
  text-align:center !important;
  text-shadow:none !important;
  white-space:nowrap !important;
}

@media(max-width:620px){
  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .topbar-inner{
    padding-left:28px !important;
    padding-right:42px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-menu,
  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip{
    width:48px !important;
    height:58px !important;
    min-width:48px !important;
    min-height:58px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-chip::before{
    width:42px !important;
    height:42px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-avatar{
    top:21px !important;
    width:38px !important;
    height:38px !important;
    min-width:38px !important;
    min-height:38px !important;
    font-size:16px !important;
  }

  body:has(#topDeviceStatus.hidden) .topbar:not(:has(#topDeviceStatus:not(.hidden))) .account-label{
    top:47px !important;
    font-size:6px !important;
  }
}


/* v12.20 online / degraded / offline visual states */
.status-degraded {
  background: rgba(255,209,46,.14) !important;
  color: #ffe680 !important;
  border: 1px solid rgba(255,209,46,.42) !important;
}
.pula-status-action.is-degraded {
  color: #ffd12e !important;
}
.pula-status-badge.status-degraded .pula-status-orb {
  background: #ffd12e !important;
  box-shadow: 0 0 14px rgba(255,209,46,.34) !important;
}
.pula-status-badge.status-offline .pula-status-orb,
.pula-status-action.is-offline .pula-status-orb {
  background: #ff5a1a !important;
  box-shadow: 0 0 14px rgba(255,90,26,.32) !important;
}
.pula-status-badge.status-online .pula-status-orb,
.pula-status-action.is-online .pula-status-orb {
  background: #2ee59d !important;
  box-shadow: 0 0 14px rgba(46,229,157,.32) !important;
}

/* v12.22 public rainmeter map */
.public-screen {
  padding: 0 14px 18px;
}
.public-page {
  max-width: 1180px;
  margin: 0 auto;
}
.public-head-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 10px 0 14px;
  padding: 16px 18px;
  border-radius: 24px;
  background: linear-gradient(180deg, rgba(16,32,50,.88), rgba(8,22,38,.82));
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 18px 48px rgba(0,0,0,.26);
  backdrop-filter: blur(18px);
}
.public-head-card h2 { margin: 0 0 4px; }
.public-map {
  width: 100%;
  height: min(62vh, 620px);
  min-height: 430px;
  border-radius: 28px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 24px 70px rgba(0,0,0,.34);
  background: rgba(7,17,31,.8);
}
.public-map-status {
  margin: 12px 4px 14px;
  font-weight: 800;
}
.public-device-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}
.public-device-card,
.public-empty-card {
  border-radius: 22px;
  padding: 15px;
  background: linear-gradient(180deg, rgba(22,39,59,.88), rgba(12,27,43,.84));
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 14px 42px rgba(0,0,0,.22);
  cursor: pointer;
}
.public-device-card:hover {
  border-color: rgba(46,229,157,.42);
  transform: translateY(-1px);
}
.public-device-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.public-state {
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}
.public-online { color: var(--green); }
.public-degraded { color: var(--yellow); }
.public-offline { color: var(--red); }
.public-state.public-online { background: rgba(46,229,157,.12); border: 1px solid rgba(46,229,157,.35); }
.public-state.public-degraded { background: rgba(255,209,46,.12); border: 1px solid rgba(255,209,46,.35); }
.public-state.public-offline { background: rgba(255,90,26,.12); border: 1px solid rgba(255,90,26,.35); }
.public-metrics {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  margin: 12px 0 10px;
}
.public-metrics span {
  padding: 8px 10px;
  border-radius: 14px;
  background: rgba(255,255,255,.06);
  color: #eaf6ff;
  font-weight: 850;
  font-size: 13px;
}
.public-consent-box {
  margin: 14px 0;
  padding: 14px;
  border-radius: 18px;
  border: 1px solid rgba(56,189,248,.24);
  background: rgba(56,189,248,.07);
  color: #dff6ff;
}
.public-consent-box ul { margin: 8px 0 8px 18px; padding: 0; color: var(--muted2); }
.public-consent-box p { margin: 8px 0 0; color: var(--muted); }
.public-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}
.public-detail-grid div {
  padding: 12px;
  border-radius: 16px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.08);
}
.public-detail-grid span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 900;
}
.public-detail-grid strong {
  display: block;
  margin-top: 6px;
  font-size: 18px;
}
.public-popup {
  color: #0f172a;
  min-width: 150px;
}
.public-popup button {
  margin-top: 8px;
  padding: 7px 10px;
  border: none;
  border-radius: 10px;
  background: #0ea5e9;
  color: white;
  font-weight: 900;
  box-shadow: none;
}
.leaflet-container {
  font-family: Inter, Arial, sans-serif;
}
@media (max-width: 620px) {
  .public-screen { padding: 0 10px 14px; }
  .public-head-card { align-items: flex-start; flex-direction: column; padding: 14px; }
  .public-head-card button { width: 100%; }
  .public-map { min-height: 390px; height: 58vh; border-radius: 22px; }
  .public-detail-grid { grid-template-columns: 1fr; }
}

/* v12.23 public map polish + South Africa map bounds + watchlist */
#publicScreen.public-screen,
.public-screen.screen.active{
  padding: 0 14px 18px !important;
  margin: 0 !important;
}
.public-page{
  max-width: 1180px !important;
  margin: 0 auto !important;
  padding-top: 8px !important;
}
.public-head-card{
  margin: 8px 0 12px !important;
}
.public-map{
  height: min(64vh, 680px) !important;
  min-height: 455px !important;
}
.public-watchlist{
  margin: 0 0 14px !important;
}
.public-watchlist-card{
  border-radius: 22px;
  padding: 14px;
  background: linear-gradient(180deg, rgba(16,32,50,.84), rgba(8,22,38,.76));
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 14px 38px rgba(0,0,0,.20);
  backdrop-filter: blur(14px);
}
.public-watchlist-card.empty{
  opacity: .88;
}
.public-watchlist-card strong{
  display:block;
  font-size: 16px;
  margin-bottom: 3px;
}
.public-watchlist-card p{
  margin: 0;
}
.public-watchlist-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.public-watchlist-head span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;
  height:26px;
  border-radius:999px;
  background:rgba(46,229,157,.13);
  color:var(--green);
  border:1px solid rgba(46,229,157,.30);
  font-weight:900;
}
.public-watchlist-items{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 8px;
}
.public-watchlist-items button{
  min-height: 58px;
  padding: 9px 11px;
  border-radius: 16px;
  text-align: left;
  box-shadow:none;
  background: rgba(255,255,255,.055);
}
.public-watchlist-items b{
  display:block;
  font-size: 13px;
  color:#f5f9ff;
}
.public-watchlist-items small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-weight:800;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.public-card-actions{
  display:flex;
  gap:8px;
  margin: 8px 0 10px;
  flex-wrap: wrap;
}
.public-card-actions button,
.public-watch-btn{
  min-height: 36px;
  padding: 8px 10px !important;
  border-radius: 13px !important;
  font-size: 12px !important;
  box-shadow:none !important;
}
.public-watch-btn{
  border-color: rgba(46,229,157,.28) !important;
  color: var(--green) !important;
}
.public-watch-btn.watched{
  border-color: rgba(255,209,46,.35) !important;
  color: var(--yellow) !important;
  background: rgba(255,209,46,.08) !important;
}
.public-popup button + button{
  margin-left: 6px;
  background:#16a34a;
}
@media(max-width:620px){
  #publicScreen.public-screen,
  .public-screen.screen.active{
    padding: 0 10px 14px !important;
  }
  .public-page{
    padding-top: 4px !important;
  }
  .public-head-card{
    margin-top: 6px !important;
  }
  .public-map{
    min-height: 430px !important;
    height: 63vh !important;
    border-radius: 22px !important;
  }
  .public-watchlist-items{
    grid-template-columns: 1fr;
  }
}


/* v12.24 public map final fixes */
#publicScreen.public-screen,
#publicScreen.screen.active{
  padding-top: 0 !important;
  margin-top: -10px !important;
}
#publicScreen .public-page{
  padding-top: 0 !important;
  margin-top: 0 !important;
}
#publicScreen .public-head-card{
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.public-head-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}
.public-head-actions .small-btn{
  min-height:40px;
  padding:9px 12px;
  box-shadow:none;
}
.public-setting-row{
  margin-top:14px;
}
@media(max-width:620px){
  #publicScreen.public-screen,
  #publicScreen.screen.active{
    margin-top: -8px !important;
  }
  .public-head-actions{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .public-head-actions .small-btn{width:100%;}
}


/* v12.36 public map data screen repair */
#publicScreen.public-screen,
#publicScreen.screen.active {
  min-height: 0 !important;
  height: auto !important;
  padding-bottom: 14px !important;
}
#publicScreen .public-page {
  min-height: 0 !important;
  height: auto !important;
  padding-bottom: 0 !important;
}
#publicDeviceList.public-device-list,
.public-device-list {
  display: block !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}
.public-map-footer-note {
  margin: 8px 4px 0 !important;
  font-size: 12px !important;
  font-weight: 800 !important;
}
.public-watchlist {
  margin-bottom: 8px !important;
}
.public-device-screen {
  padding: 0 14px 18px !important;
}
.public-device-page {
  max-width: 860px !important;
}
.public-device-content {
  display: block !important;
  min-height: 0 !important;
  margin: 0 !important;
}
.public-live-card {
  border-radius: 26px;
  padding: 16px;
  background: linear-gradient(180deg, rgba(22,39,59,.92), rgba(8,22,38,.86));
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 18px 48px rgba(0,0,0,.28);
  backdrop-filter: blur(16px);
}
.public-live-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.public-live-head strong {
  display: block;
  font-size: 22px;
  color: #fff;
}
.public-live-head small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-weight: 800;
}
.public-detail-grid-fixed {
  margin: 10px 0 12px !important;
}
.public-last-update,
.public-refreshing {
  margin: 10px 2px !important;
}
@media(max-width:620px){
  .public-map {
    min-height: 360px !important;
    height: 52vh !important;
  }
  .public-device-screen {
    padding: 0 10px 14px !important;
  }
  .public-live-head {
    flex-direction: column;
  }
  .public-live-card {
    padding: 14px;
    border-radius: 22px;
  }
}


/* v12.37 pull-to-refresh + public map cleanup */
html, body {
  overscroll-behavior-y: contain;
}
.public-head-actions.hidden { display: none !important; }
.pula-pull-refresh-indicator {
  position: fixed;
  left: 50%;
  top: 12px;
  transform: translateX(-50%) translateY(-70px);
  z-index: 5000;
  min-width: 148px;
  padding: 10px 14px;
  border-radius: 999px;
  text-align: center;
  font-weight: 900;
  color: #e8fbff;
  background: rgba(7,17,31,.92);
  border: 1px solid rgba(56,189,248,.38);
  box-shadow: 0 14px 40px rgba(0,0,0,.35);
  backdrop-filter: blur(14px);
  opacity: 0;
  pointer-events: none;
  transition: transform .16s ease, opacity .16s ease;
}
.pula-pull-refresh-indicator.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.pula-pull-refresh-indicator.ready {
  border-color: rgba(46,229,157,.55);
}


/* v12.38 weather coming-soon copy + smaller sticky online dot only */
.weather-coming-message{
  margin:10px 0 6px;
  font-size:20px;
  font-weight:900;
  color:#e8fbff;
}
.weather-coming-sub{
  max-width:420px;
  margin:0 auto;
  line-height:1.45;
}
.top-device-status .pula-status-orb{
  width:16px !important;
  height:16px !important;
  box-shadow:0 0 8px currentColor, inset 0 -3px 5px rgba(0,0,0,.22) !important;
}
.top-device-status .pula-status-orb:before{
  left:3px !important;
  top:2px !important;
  width:10px !important;
  height:5px !important;
}


/* v12.39 weather screen persistence fix */
.weather-screen,
#weatherScreen {
  padding: 18px 14px 28px !important;
  min-height: calc(100vh - 90px) !important;
}
#weatherScreen.active {
  display: block !important;
}
#weatherScreen .weather-page {
  max-width: 860px !important;
  margin: 0 auto !important;
}
#weatherScreen .weather-coming-card {
  margin-top: 18px !important;
  text-align: center !important;
}
@media(max-width:620px){
  #weatherScreen {
    padding-top: 92px !important;
  }
  #weatherScreen .weather-coming-card {
    margin-top: 0 !important;
    padding: 46px 18px !important;
  }
}

/* v12.41 BLE onboarding scanner */
.setup-scan-card,
.nearby-device-card{
  margin-top:14px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.055);
}
.nearby-device-card h4{margin:0 0 8px;font-size:18px;color:#e8fbff;}
.nearby-device-card p{margin:6px 0;}


/* v12.42 app stability fixes */
.pula-inline-spinner{
  display:inline-block;
  width:14px;
  height:14px;
  margin-right:8px;
  vertical-align:-2px;
  border:2px solid rgba(255,255,255,.25);
  border-top-color:currentColor;
  border-radius:50%;
  animation:pulaSpin .8s linear infinite;
}
@keyframes pulaSpin{to{transform:rotate(360deg)}}
button:disabled{opacity:.62;cursor:wait;pointer-events:none}

/* v13.03 Setup WiFi onboarding */
.setup-wifi-name {
  padding: 14px 16px;
  border-radius: 16px;
  background: rgba(46,229,157,.10);
  border: 1px solid rgba(46,229,157,.32);
  color: var(--green);
  font-size: 18px;
  font-weight: 900;
  letter-spacing: .03em;
  text-align: center;
}
.panel-soft {
  margin: 14px 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255,255,255,.055);
}
.panel-soft h4 {
  margin: 0 0 8px;
}
.success-panel {
  border-color: rgba(46,229,157,.35);
  background: rgba(46,229,157,.08);
}
.setup-progress {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  margin: 12px 0 16px;
}
.setup-step {
  text-align: center;
  opacity: .42;
}
.setup-step.on {
  opacity: 1;
}
.setup-step span {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.06);
  font-size: 12px;
  font-weight: 900;
}
.setup-step.on span {
  background: linear-gradient(90deg,var(--green),var(--cyan));
  color: #04111d;
  border: none;
}
.setup-step small {
  display: block;
  margin-top: 5px;
  font-size: 9px;
  color: var(--muted);
  line-height: 1.15;
}
.setup-log-line {
  margin: 6px 0;
  padding: 8px 10px;
  border-radius: 12px;
  background: rgba(255,255,255,.045);
}
@media (max-width:620px) {
  .setup-progress { gap: 3px; }
  .setup-step span { width: 24px; height: 24px; }
  .setup-step small { font-size: 8px; }
}


/* v13.04 scale diagnostics */
.scale-diagnostics-info{margin:10px 2px 0;font-size:12px;line-height:1.35;}
.scale-diagnostics-info strong{color:#e8fbff;}

/* v13.12 rain maintenance settings */
#calibrationPanel .form-grid label{min-width:0}
#calibrationPanel input,#calibrationPanel select{margin-top:6px}


/* v14.14 invite install guidance */
.invite-install-card{
  margin-top:18px;
  padding:16px;
  border-radius:20px;
  background:rgba(56,189,248,.08);
  border:1px solid rgba(56,189,248,.22);
}
.invite-install-card.installed{
  background:rgba(46,229,157,.08);
  border-color:rgba(46,229,157,.22);
}
.invite-install-card h3{
  margin:0 0 8px;
  font-size:17px;
}
.invite-install-card p{
  margin:0 0 12px;
  color:var(--muted2);
  line-height:1.45;
}
.install-steps{
  margin:14px 0 0;
  padding-left:22px;
  color:var(--muted2);
  line-height:1.55;
}
.install-steps li{margin:7px 0;}
