/* Portal del cliente · acceso Liquid Navy
   Todo queda bajo body.portal-login-page para no alterar dashboard.html. */
body.portal-login-page {
  --portal-accent: #e4bd68;
  --portal-accent-2: #d4a44a;
  min-width: 0;
  overflow-x: hidden;
  background: #03101f !important;
  color: #eef5ff;
}
body.portal-login-page::before {
  content: "";
  position: fixed;
  inset: -28%;
  z-index: 0;
  background:
    radial-gradient(ellipse at 22% 24%, rgba(79,144,207,.55) 0, rgba(25,72,119,.24) 23%, transparent 47%),
    radial-gradient(ellipse at 84% 19%, color-mix(in srgb, var(--portal-accent) 25%, transparent), transparent 27%),
    radial-gradient(ellipse at 70% 92%, rgba(38,96,147,.42), transparent 32%),
    linear-gradient(138deg,#020a15 10%,#071b32 48%,#051225 74%,#020914);
  animation: portal-liquid-breathe 14s ease-in-out infinite alternate;
}
body.portal-login-page::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: .12;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E");
  mix-blend-mode: soft-light;
}
body.portal-login-page .login-container {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0,1.15fr) minmax(410px,.85fr);
  align-items: stretch;
  min-height: 100dvh;
  padding: 0;
}
body.portal-login-page .liquid-topbar {
  position: absolute;
  inset: 0 0 auto;
  z-index: 7;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 28px 32px;
  pointer-events: none;
}
body.portal-login-page .liquid-lockup { display:flex; align-items:center; gap:11px; }
body.portal-login-page .liquid-mark {
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  border:1px solid rgba(255,255,255,.15);
  border-radius:12px;
  color:var(--portal-accent);
  background:rgba(255,255,255,.09);
  box-shadow:inset 0 1px rgba(255,255,255,.18),0 12px 28px rgba(0,0,0,.15);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  font-size:12px;
  font-weight:600;
  letter-spacing:-.06em;
}
body.portal-login-page .liquid-brand { display:grid; gap:2px; }
body.portal-login-page .liquid-brand strong { color:#eef5ff; font-size:13px; font-weight:550; letter-spacing:-.01em; }
body.portal-login-page .liquid-brand span { color:rgba(223,236,251,.53); font-size:9px; letter-spacing:.16em; text-transform:uppercase; }
body.portal-login-page .liquid-status { display:flex; align-items:center; gap:7px; color:rgba(223,236,251,.58); font-size:10px; }
body.portal-login-page .liquid-status i,
body.portal-login-page .liquid-security i { width:6px; height:6px; border-radius:50%; background:#72d6af; box-shadow:0 0 14px rgba(114,214,175,.72); animation:portal-liquid-pulse 2.6s ease-in-out infinite; }
body.portal-login-page .liquid-story {
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  min-width:0;
  overflow:hidden;
  padding:105px clamp(34px,5vw,76px) 68px;
}
body.portal-login-page .liquid-story::after {
  content:"";
  position:absolute;
  z-index:-1;
  width:58%;
  height:150%;
  left:20%;
  top:-30%;
  background:linear-gradient(90deg,transparent,rgba(188,220,255,.08),transparent);
  transform:rotate(23deg);
  filter:blur(15px);
  animation:portal-liquid-beam 11s ease-in-out infinite alternate;
}
body.portal-login-page .liquid-signal {
  position:absolute;
  z-index:1;
  left:3%;
  top:13%;
  width:91%;
  height:62%;
  opacity:.84;
  transform:perspective(900px) rotateX(8deg) rotateY(-7deg);
}
body.portal-login-page .liquid-signal svg { width:100%; height:100%; overflow:visible; }
body.portal-login-page .liquid-line-soft { fill:none; stroke:rgba(147,192,235,.15); stroke-width:1; }
body.portal-login-page .liquid-line-main { fill:none; stroke:url(#portal-line-gradient); stroke-width:2.1; stroke-linecap:round; filter:drop-shadow(0 0 8px rgba(113,174,228,.4)); stroke-dasharray:850; animation:portal-liquid-draw 7s cubic-bezier(.22,1,.36,1) infinite alternate; }
body.portal-login-page .liquid-area { fill:url(#portal-area-gradient); }
body.portal-login-page .liquid-node { fill:var(--portal-accent); stroke:rgba(255,255,255,.8); stroke-width:1.5; filter:drop-shadow(0 0 8px color-mix(in srgb,var(--portal-accent) 70%,transparent)); animation:portal-liquid-node 4s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
body.portal-login-page .liquid-node:last-child { animation-delay:1.2s; }
body.portal-login-page .liquid-meter {
  position:absolute;
  z-index:3;
  right:8%;
  top:18%;
  width:132px;
  padding:14px 15px;
  background:rgba(8,28,51,.42);
  border:1px solid rgba(255,255,255,.12);
  border-radius:17px;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 1px rgba(255,255,255,.1),0 18px 45px rgba(0,0,0,.16);
  animation:portal-liquid-float 6.5s ease-in-out infinite;
}
body.portal-login-page .liquid-meter small { display:block; color:rgba(224,237,251,.54); font-size:8px; letter-spacing:.13em; text-transform:uppercase; }
body.portal-login-page .liquid-meter strong { display:block; margin-top:5px; color:#eef5ff; font-size:25px; font-weight:450; letter-spacing:-.04em; }
body.portal-login-page .liquid-meter span { color:#81dbb8; font-size:9px; }
body.portal-login-page .liquid-story-copy { position:relative; z-index:4; max-width:540px; }
body.portal-login-page .liquid-eyebrow { display:flex; align-items:center; gap:9px; margin-bottom:16px; color:var(--portal-accent); font-size:10px; letter-spacing:.16em; text-transform:uppercase; }
body.portal-login-page .liquid-eyebrow::before { content:""; width:28px; height:1px; background:currentColor; opacity:.65; }
body.portal-login-page .liquid-story h1 { max-width:10ch; margin:0; color:#eef5ff; font-size:clamp(44px,6vw,76px); line-height:.94; font-weight:420 !important; letter-spacing:-.065em !important; }
body.portal-login-page .liquid-story h1 span { color:rgba(232,242,254,.5); }
body.portal-login-page .liquid-story p { max-width:42ch; margin:21px 0 0; color:rgba(222,235,250,.62); font-size:13px; line-height:1.6; }
body.portal-login-page .liquid-access {
  position:relative;
  z-index:5;
  display:grid;
  place-items:center;
  min-width:0;
  padding:90px 38px 38px;
  background:linear-gradient(165deg,rgba(255,255,255,.08),rgba(255,255,255,.022));
  border-left:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(26px);
  -webkit-backdrop-filter:blur(26px);
}
body.portal-login-page .login-card {
  position:relative;
  width:100%;
  max-width:420px;
  padding:34px !important;
  overflow:hidden;
  text-align:left;
  color:#eaf3fd;
  background:linear-gradient(145deg,rgba(13,37,65,.76),rgba(6,22,43,.68)) !important;
  border:1px solid rgba(255,255,255,.15) !important;
  border-radius:27px !important;
  box-shadow:inset 0 1px rgba(255,255,255,.14),0 34px 80px rgba(0,6,18,.34) !important;
  backdrop-filter:blur(32px) saturate(1.25);
  -webkit-backdrop-filter:blur(32px) saturate(1.25);
  animation:portal-liquid-card .72s cubic-bezier(.22,1,.36,1) backwards;
}
body.portal-login-page .login-card::before { content:""; position:absolute; width:250px; height:250px; left:-120px; top:-145px; pointer-events:none; background:radial-gradient(circle,rgba(255,255,255,.14),transparent 68%); }
body.portal-login-page .login-card > * { position:relative; z-index:1; }
body.portal-login-page .login-card .logo {
  display:flex;
  align-items:center;
  justify-content:flex-start;
  width:auto;
  height:45px;
  margin:0 0 25px;
  padding:0;
  color:var(--portal-accent) !important;
  background:none !important;
  border-radius:0 !important;
  font-family:inherit;
  font-size:13px;
  font-weight:650;
}
body.portal-login-page .login-card .logo img { display:block; max-width:170px; max-height:45px; object-fit:contain; }
body.portal-login-page .login-card h1 { margin:0 0 8px; color:#f1f7ff; font-family:inherit; font-size:29px; font-weight:450 !important; letter-spacing:-.045em !important; }
body.portal-login-page .login-card > p { margin:0 0 28px; color:rgba(222,235,250,.58); font-size:13px; }
body.portal-login-page .form-group { margin-bottom:16px; }
body.portal-login-page .form-group label { margin-bottom:7px; color:rgba(232,242,253,.76) !important; font-size:12px !important; }
body.portal-login-page .form-group input {
  width:100%;
  min-height:52px;
  padding:0 15px;
  color:#f4f8fd !important;
  background:rgba(255,255,255,.065) !important;
  border:1px solid rgba(255,255,255,.14) !important;
  border-radius:14px !important;
  box-shadow:inset 0 1px rgba(255,255,255,.04) !important;
}
body.portal-login-page .form-group input::placeholder { color:rgba(218,231,246,.34) !important; }
body.portal-login-page .form-group input:focus { background:rgba(255,255,255,.095) !important; border-color:color-mix(in srgb,var(--portal-accent) 72%,white 8%) !important; box-shadow:0 0 0 4px color-mix(in srgb,var(--portal-accent) 12%,transparent),inset 0 1px rgba(255,255,255,.06) !important; }
body.portal-login-page #loginBtn {
  min-height:52px;
  margin-top:6px;
  color:#07172d !important;
  background:linear-gradient(135deg,var(--portal-accent),var(--portal-accent-2)) !important;
  border-radius:14px !important;
  box-shadow:0 15px 32px color-mix(in srgb,var(--portal-accent) 18%,transparent),inset 0 1px rgba(255,255,255,.52) !important;
}
body.portal-login-page #loginBtn:hover { transform:translateY(-2px); filter:brightness(1.06); box-shadow:0 20px 38px color-mix(in srgb,var(--portal-accent) 25%,transparent),inset 0 1px rgba(255,255,255,.58) !important; }
body.portal-login-page #recoverLink { display:block; min-height:44px; padding-top:15px; margin-top:2px !important; color:var(--portal-accent) !important; font-size:12px !important; text-align:center; }
body.portal-login-page .login-error { margin-top:9px; padding:11px 13px; color:#ffc1c4; background:rgba(240,97,106,.12) !important; border:1px solid rgba(255,140,145,.22) !important; }
body.portal-login-page .liquid-security { display:flex; align-items:center; justify-content:center; gap:7px; margin-top:14px; color:rgba(220,234,249,.42); font-size:9px; }

@keyframes portal-liquid-breathe { to { transform:translate(-2%,2%) scale(1.06); filter:saturate(1.13); } }
@keyframes portal-liquid-beam { to { transform:translateX(18%) rotate(23deg); opacity:.42; } }
@keyframes portal-liquid-draw { from { stroke-dashoffset:180; } to { stroke-dashoffset:-70; } }
@keyframes portal-liquid-node { 0%,100% { transform:scale(.8); opacity:.62; } 50% { transform:scale(1.35); opacity:1; } }
@keyframes portal-liquid-pulse { 0%,100% { opacity:.5; } 50% { opacity:1; } }
@keyframes portal-liquid-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-8px); } }
@keyframes portal-liquid-card { from { opacity:0; transform:translateY(14px); } }

@media (max-width: 900px) {
  body.portal-login-page .login-container { display:block; min-height:100dvh; }
  body.portal-login-page .liquid-topbar { padding:20px; }
  body.portal-login-page .liquid-status { display:none; }
  body.portal-login-page .liquid-story { position:absolute; inset:0; min-height:100dvh; padding:0; }
  body.portal-login-page .liquid-story-copy { display:none; }
  body.portal-login-page .liquid-signal { left:-24%; top:4%; width:148%; height:40%; opacity:.5; transform:none; }
  body.portal-login-page .liquid-meter { right:18px; top:82px; width:126px; padding:12px 13px; transform:scale(.9); transform-origin:right top; }
  body.portal-login-page .liquid-access { min-height:100dvh; align-items:end; padding:145px 14px 18px; border-left:0; background:linear-gradient(180deg,transparent,rgba(4,16,32,.52) 26%,rgba(4,16,32,.88)); backdrop-filter:none; }
  body.portal-login-page .login-card { max-width:430px; padding:25px 21px !important; border-radius:24px !important; }
  body.portal-login-page .login-card .logo { margin-bottom:20px; }
  body.portal-login-page .login-card h1 { font-size:27px; }
  body.portal-login-page .login-card > p { margin-bottom:23px; }
}
@media (max-width: 390px) {
  body.portal-login-page .liquid-access { padding-left:10px; padding-right:10px; }
  body.portal-login-page .login-card { padding:22px 17px !important; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal-login-page::before,
  body.portal-login-page .liquid-story::after,
  body.portal-login-page .liquid-line-main,
  body.portal-login-page .liquid-node,
  body.portal-login-page .liquid-meter,
  body.portal-login-page .liquid-status i,
  body.portal-login-page .liquid-security i,
  body.portal-login-page .login-card { animation:none !important; }
}
