:root{--navy:#082f49;--blue:#0369a1;--cyan:#06b6d4;--sky:#e0f2fe;--ink:#0f172a;--muted:#64748b;--line:#dbe5ec;--surface:#fff;--bg:#f3f8fb;--ok:#059669;--warn:#d97706;--danger:#dc2626;--offline:#64748b;--radius:20px;--shadow:0 18px 50px rgba(8,47,73,.09)}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-height:100vh}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100% - 1240px)/2));gap:42px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--navy)}.brand-mark{width:39px;height:39px;border-radius:12px;background:linear-gradient(145deg,var(--cyan),var(--blue));display:grid;place-items:center;color:white;font-weight:900}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.07em}.brand small{color:var(--muted);font-size:11px}.topbar nav{display:flex;gap:7px}.topbar nav a,.user-menu a{color:var(--muted);text-decoration:none;padding:10px 13px;border-radius:10px;font-weight:650}.topbar nav a.active,.topbar nav a:hover{background:var(--sky);color:var(--blue)}.user-menu{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:14px}.container{max-width:1240px;margin:auto;padding:40px 24px 64px}footer{text-align:center;color:var(--muted);font-size:13px;padding:24px}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:800;color:var(--blue)}h1,h2,p{margin-top:0}h1{font-size:clamp(32px,5vw,52px);line-height:1.03;margin-bottom:12px;letter-spacing:-.04em}h1 em{font-style:normal;color:var(--cyan)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.page-head.compact{margin-bottom:18px}.page-head p{color:var(--muted);margin-bottom:0}.connection-status{display:flex;flex-wrap:wrap;gap:8px}.live-pill{background:#e9fbf4;color:var(--ok);padding:9px 13px;border-radius:999px;font-size:13px;font-weight:700}.live-pill[data-state=connecting]{background:#eff6ff;color:var(--blue)}.live-pill[data-state=connecting] i{background:var(--blue)}.live-pill[data-state=offline]{background:#fef2f2;color:var(--danger)}.live-pill[data-state=offline] i{background:var(--danger)}.live-pill i{display:inline-block;width:8px;height:8px;background:var(--ok);border-radius:50%;margin-right:7px}
.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.summary article{background:white;border:1px solid var(--line);border-radius:15px;padding:18px 20px}.summary span{display:block;color:var(--muted);font-size:13px;margin-bottom:5px}.summary strong{font-size:25px;color:var(--navy)}.tank-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.tank-card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}.tank-card header{display:flex;justify-content:space-between;gap:12px}.tank-code{font-size:11px;font-weight:850;letter-spacing:.12em;color:var(--blue)}.tank-card h2{font-size:19px;margin:4px 0}.status-badge{height:max-content;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:800;background:#ecfdf5;color:var(--ok)}[data-status=low] .status-badge{background:#fff7ed;color:var(--warn)}[data-status=high] .status-badge{background:#fef2f2;color:var(--danger)}[data-status=offline] .status-badge{background:#f1f5f9;color:var(--offline)}.tank-visual{display:grid;place-items:center;padding:18px}.tank-body{position:relative;width:128px;height:146px;border:8px solid #d9e5eb;border-radius:22px 22px 31px 31px;overflow:hidden;background:#f8fbfd}.tank-body:before{content:"";position:absolute;left:8px;right:8px;top:9px;height:7px;border-radius:50%;background:rgba(255,255,255,.6);z-index:3}.water{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(#22d3ee,#0284c7);transition:height .6s}.level-value{position:absolute;inset:0;display:grid;place-items:center;font-size:24px;font-weight:900;color:var(--navy);z-index:4;text-shadow:0 1px white}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:0}.metrics div{background:var(--bg);border-radius:11px;padding:10px}.metrics dt{font-size:10px;color:var(--muted)}.metrics dd{font-size:13px;font-weight:750;margin:5px 0 0}.updated{text-align:center;color:var(--muted);font-size:11px;margin:16px 0 0}.alerts-panel{margin-top:34px;background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px}.section-title{display:flex;align-items:end;justify-content:space-between}.section-title h2{margin:3px 0 15px}.section-title a{color:var(--blue);text-decoration:none;font-weight:700;font-size:13px}.alert-row{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:12px;border-top:1px solid var(--line);padding:13px 0}.alert-row>span{width:9px;height:9px;border-radius:50%;background:var(--warn)}.alert-row.high>span{background:var(--danger)}.alert-row p{margin:3px 0 0;color:var(--muted);font-size:13px}.alert-row time{color:var(--muted);font-size:12px}.login-shell{min-height:calc(100vh - 205px);display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:8vw}.login-copy p{color:var(--muted);max-width:570px;font-size:18px}.network-line{display:flex;align-items:center;gap:10px;margin-top:34px;color:var(--blue);font-size:12px;font-weight:800}.network-line i{height:1px;width:35px;background:var(--cyan)}.login-card{background:white;border:1px solid var(--line);border-radius:24px;padding:34px;box-shadow:var(--shadow)}.login-card p,.login-card small{color:var(--muted)}label{font-size:13px;font-weight:750;display:block}input,select{display:block;width:100%;margin-top:7px;margin-bottom:18px;border:1px solid #cbd5e1;border-radius:11px;padding:13px 14px;background:white;font:inherit;color:var(--ink)}input:focus,select:focus{outline:3px solid #bae6fd;border-color:var(--blue)}.button{display:inline-flex;justify-content:center;border:0;border-radius:11px;padding:12px 18px;font-weight:800;cursor:pointer}.button.primary{width:100%;background:var(--blue);color:white;margin-bottom:14px}.button.secondary{background:var(--navy);color:white}.alert{padding:12px 14px;border-radius:11px;margin:14px 0;font-size:13px}.alert.danger{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.hidden{display:none}.loading,.empty,.muted{color:var(--muted);text-align:center;padding:28px}.filter{display:flex;align-items:end;gap:12px;background:white;border:1px solid var(--line);padding:16px;border-radius:15px;margin-bottom:16px}.filter label{min-width:280px}.filter select{margin-bottom:0}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:15px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:14px 15px;border-bottom:1px solid var(--line);white-space:nowrap}th{background:#eaf3f8;color:var(--navy);font-size:11px;text-transform:uppercase;letter-spacing:.06em}td small{color:var(--muted)}
@media(max-width:850px){.tank-grid{grid-template-columns:1fr 1fr}.login-shell{grid-template-columns:1fr}.login-copy{padding-top:20px}.topbar nav{display:none}.summary{grid-template-columns:1fr}.page-head{align-items:flex-start;gap:20px;flex-direction:column}}
@media(max-width:560px){.container{padding:28px 15px 50px}.topbar{padding:0 15px}.user-menu span{display:none}.tank-grid{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(3,1fr)}.alert-row{grid-template-columns:10px 1fr}.alert-row time{grid-column:2}.filter{align-items:stretch;flex-direction:column}.filter label{min-width:0}}

.request-measurement{width:100%;margin-top:14px}
.request-measurement:disabled{cursor:not-allowed;opacity:.65}
.request-measurement[data-state="success"]{background:var(--ok)}


/* Portada pública SATIOT */
.home-hero{
  min-height:calc(100vh - 180px);
  display:grid;
  grid-template-columns:1.08fr .92fr;
  align-items:center;
  gap:70px;
  padding:52px 0 70px
}

.home-hero-copy h1{
  max-width:760px;
  font-size:clamp(42px,6vw,72px);
  margin:12px 0 22px
}

.home-hero-copy h1 em{
  display:block
}

.home-lead{
  max-width:690px;
  color:var(--muted);
  font-size:18px;
  line-height:1.7
}

.home-actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:30px
}

.button.home-primary,
.button.home-secondary{
  text-decoration:none;
  padding:14px 22px
}

.button.home-primary{
  background:var(--blue);
  color:#fff;
  box-shadow:0 12px 24px rgba(3,105,161,.18)
}

.button.home-primary:hover{
  background:var(--navy)
}

.button.home-secondary{
  color:var(--blue);
  background:#fff;
  border:1px solid var(--line)
}

.button.home-secondary:hover{
  background:var(--sky)
}

.home-tags{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:11px;
  margin-top:38px;
  color:var(--blue);
  font-size:12px;
  font-weight:800
}

.home-tags i{
  width:26px;
  height:1px;
  background:var(--cyan)
}

.home-monitor{
  background:#fff;
  border:1px solid var(--line);
  border-radius:28px;
  padding:30px;
  box-shadow:var(--shadow)
}

.home-monitor-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px
}

.home-monitor-head h2{
  margin:5px 0 0
}

.home-status{
  white-space:nowrap;
  color:var(--ok);
  background:#ecfdf5;
  border-radius:999px;
  padding:8px 11px;
  font-size:11px;
  font-weight:800
}

.home-status i{
  display:inline-block;
  width:7px;
  height:7px;
  margin-right:6px;
  border-radius:50%;
  background:var(--ok)
}

.home-tank{
  display:grid;
  place-items:center;
  padding:30px 0
}

.home-tank-body{
  position:relative;
  width:160px;
  height:185px;
  overflow:hidden;
  display:grid;
  place-items:center;
  border:9px solid #d9e5eb;
  border-radius:28px 28px 38px 38px;
  background:#f8fbfd
}

.home-tank-body:before{
  content:"";
  position:absolute;
  top:11px;
  left:12px;
  right:12px;
  z-index:3;
  height:8px;
  border-radius:50%;
  background:rgba(255,255,255,.75)
}

.home-water{
  position:absolute;
  right:0;
  bottom:0;
  left:0;
  height:75%;
  background:linear-gradient(#22d3ee,#0284c7)
}

.home-tank-body strong{
  position:relative;
  z-index:4;
  color:var(--navy);
  font-size:32px;
  text-shadow:0 1px #fff
}

.home-monitor-metrics{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:9px
}

.home-monitor-metrics article{
  padding:13px;
  border-radius:13px;
  background:var(--bg)
}

.home-monitor-metrics span{
  display:block;
  margin-bottom:5px;
  color:var(--muted);
  font-size:10px
}

.home-monitor-metrics strong{
  color:var(--navy);
  font-size:15px
}

.home-section{
  padding:78px 0;
  border-top:1px solid var(--line)
}

.home-section-heading{
  max-width:790px;
  margin-bottom:34px
}

.home-section-heading h2,
.home-callout h2{
  margin:7px 0 13px;
  color:var(--navy);
  font-size:clamp(27px,4vw,42px);
  letter-spacing:-.03em
}

.home-section-heading p,
.home-callout p{
  color:var(--muted);
  font-size:17px;
  line-height:1.7
}

.home-feature-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px
}

.home-feature{
  min-height:230px;
  padding:25px;
  border:1px solid var(--line);
  border-radius:20px;
  background:#fff;
  box-shadow:var(--shadow)
}

.home-feature-number{
  display:grid;
  width:42px;
  height:42px;
  place-items:center;
  border-radius:13px;
  color:var(--blue);
  background:var(--sky);
  font-size:12px;
  font-weight:900
}

.home-feature h3{
  margin:25px 0 10px;
  color:var(--navy);
  font-size:20px
}

.home-feature p{
  color:var(--muted);
  line-height:1.65
}

.home-architecture{
  padding-bottom:88px
}

.home-flow{
  display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;
  align-items:center;
  gap:13px
}

.home-flow article{
  min-height:170px;
  padding:22px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff
}

.home-flow article span{
  display:grid;
  width:34px;
  height:34px;
  margin-bottom:22px;
  place-items:center;
  border-radius:50%;
  color:#fff;
  background:linear-gradient(145deg,var(--cyan),var(--blue));
  font-size:12px;
  font-weight:900
}

.home-flow strong,
.home-flow small{
  display:block
}

.home-flow strong{
  margin-bottom:8px;
  color:var(--navy)
}

.home-flow small{
  color:var(--muted);
  line-height:1.5
}

.home-flow>i{
  color:var(--cyan);
  font-size:22px;
  font-style:normal
}

.home-callout{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:35px;
  margin:10px 0 40px;
  padding:38px;
  border-radius:24px;
  color:#fff;
  background:linear-gradient(135deg,var(--navy),var(--blue))
}

.home-callout .eyebrow,
.home-callout h2,
.home-callout p{
  color:#fff
}

.home-callout p{
  margin-bottom:0;
  opacity:.82
}

.home-callout .home-primary{
  flex:0 0 auto;
  color:var(--navy);
  background:#fff
}

@media(max-width:900px){
  .home-hero{
    grid-template-columns:1fr;
    gap:36px
  }

  .home-feature-grid{
    grid-template-columns:1fr
  }

  .home-flow{
    grid-template-columns:1fr
  }

  .home-flow>i{
    transform:rotate(90deg);
    text-align:center
  }
}

@media(max-width:600px){
  .home-hero{
    padding-top:34px
  }

  .home-actions{
    flex-direction:column
  }

  .home-actions .button{
    width:100%
  }

  .home-monitor{
    padding:21px
  }

  .home-monitor-head,
  .home-callout{
    align-items:flex-start;
    flex-direction:column
  }

  .home-monitor-metrics{
    grid-template-columns:1fr
  }

  .home-callout{
    padding:27px
  }
}
