/* Login page styles.
   Keep this separate from app.css because login.html is a standalone shell. */
/* ── H2S-style Tasman SCADA Login ─────────────────────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;min-height:100%;overflow:hidden}
body{background:#020617;font-family:'DM Sans',system-ui,-apple-system,sans-serif;color:#f8fafc}

/* CSS Variables */
:root{
  --font-sans:'DM Sans',system-ui,-apple-system,sans-serif;
  --font-mono:'DM Mono','SF Mono','Cascadia Code',monospace;
  --n-400:#94a3b8;--n-500:#64748b;--n-600:#475569;--n-700:#334155;--n-800:#1e293b;--n-900:#0f172a;--n-950:#020617;
  --teal-300:#5eead4;--teal-400:#2dd4bf;--teal-500:#14b8a6;--teal-600:#0d9488;--teal-700:#0f766e;
  --bg:var(--n-950);
  --bg-card:rgba(30,41,59,0.55);
  --border-subtle:rgba(203,213,225,0.10);
  --border-default:rgba(203,213,225,0.16);
  --border-focus:rgba(20,184,166,0.45);
  --text-primary:#f8fafc;
  --text-secondary:#cbd5e1;
  --text-tertiary:#b9c9dd;
  --accent:var(--teal-400);
  --accent-dim:rgba(20,184,166,0.10);
  --accent-glow:rgba(20,184,166,0.22);
  --success:#34d399;
  --warning:#fbbf24;
  --danger:#f87171;
  --ease-out:cubic-bezier(0.22,1,0.36,1);
  --ease-spring:cubic-bezier(0.34,1.56,0.64,1);
  --shadow-xl:0 24px 64px rgba(0,0,0,0.55);
  --shadow-inset:inset 0 1px 0 rgba(255,255,255,0.04);
}

/* Background layers */
.bg-layer{position:fixed;inset:0;z-index:0;
  background:radial-gradient(ellipse 60% 50% at 20% 10%,rgba(20,184,166,0.07) 0%,transparent 60%),
    radial-gradient(ellipse 50% 45% at 85% 80%,rgba(45,212,191,0.04) 0%,transparent 55%),
    linear-gradient(170deg,#020817 0%,#0a0f1a 50%,#060a12 100%)}
.bg-grid{position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:linear-gradient(rgba(148,163,184,0.025) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,0.025) 1px,transparent 1px);
  background-size:64px 64px;mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,black 20%,transparent 100%)}
.bg-vignette{position:fixed;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(ellipse 75% 60% at 50% 50%,transparent 30%,rgba(2,6,23,0.6) 100%)}
#particleCanvas{position:fixed;inset:0;pointer-events:none;z-index:1}

/* Layout */
.stage{position:relative;z-index:2;width:100%;height:100vh;display:grid;
  grid-template-columns:1fr 520px;align-items:center;overflow:hidden}

/* ── LEFT SHOWCASE ── */
.showcase{padding:64px clamp(40px,5vw,80px);display:flex;flex-direction:column;
  justify-content:center;height:100vh;overflow:hidden;animation:riseIn .7s var(--ease-out) both}
.eyebrow{display:inline-flex;align-items:center;gap:12px;margin-bottom:32px;
  font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.18em;
  text-transform:uppercase;color:var(--accent)}
.eyebrow::before{content:'';width:24px;height:1px;background:var(--accent);opacity:.5}
.eyebrow i{width:14px;height:14px}

.hero-title{font-size:clamp(44px,4.2vw,68px);font-weight:700;
  letter-spacing:-.03em;color:var(--text-primary);margin-bottom:24px}
.hero-title .company{display:block;font-size:.48em;font-weight:500;color:var(--text-secondary);
  letter-spacing:.02em;margin-bottom:8px;text-transform:uppercase;font-family:var(--font-mono)}
.hero-title .product{display:block;background:linear-gradient(105deg,#fff 0%,var(--accent) 60%,var(--teal-300) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.hero-desc{font-size:15px;color:var(--text-secondary);line-height:1.7;max-width:440px;margin-bottom:40px}

/* Stat cards */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:40px;max-width:480px}
.stat-card{padding:16px 18px;border-radius:16px;background:var(--bg-card);
  border:1px solid var(--border-subtle);backdrop-filter:blur(20px);
  transition:border-color .25s,transform .25s var(--ease-out);display:flex;align-items:center;gap:14px}
.stat-card:hover{border-color:var(--border-default);transform:translateY(-2px)}
.stat-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.stat-icon.steam{background:rgba(255,144,96,.1);border:1px solid rgba(255,144,96,.2);color:#ff9060}
.stat-icon.water{background:rgba(96,180,255,.1);border:1px solid rgba(96,180,255,.2);color:#60b4ff}
.stat-icon.gas{background:rgba(255,206,92,.1);border:1px solid rgba(255,206,92,.2);color:#ffce5c}
.stat-icon.elec{background:rgba(45,212,191,.1);border:1px solid rgba(45,212,191,.2);color:var(--accent)}
.stat-icon i{width:16px;height:16px}
.stat-val{font-family:var(--font-mono);font-size:22px;font-weight:500;color:var(--text-primary);line-height:1}
.stat-lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);margin-top:3px}

/* Feature pills */
.feat-pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}
.feat-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:20px;
  background:rgba(148,163,184,0.04);border:1px solid var(--border-subtle);
  font-size:12px;font-weight:500;color:var(--text-secondary);transition:border-color .2s}
.feat-pill:hover{border-color:rgba(20,184,166,.18)}
.feat-pill i{width:13px;height:13px;color:var(--accent)}

/* PLC / connection card */
.plc-card{display:flex;align-items:center;gap:16px;max-width:440px;padding:16px 20px;
  border-radius:20px;background:linear-gradient(135deg,rgba(20,184,166,.05),rgba(30,41,59,.50));
  border:1px solid rgba(20,184,166,.15);box-shadow:0 4px 16px rgba(0,0,0,.35),var(--shadow-inset);
  position:relative;overflow:hidden;transition:border-color .4s}
.plc-card::after{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--accent);box-shadow:0 0 12px var(--accent-glow);border-radius:0 2px 2px 0}
.plc-card.is-online{border-color:rgba(52,211,153,.18)}
.plc-card.is-online::after{background:var(--success);box-shadow:0 0 12px rgba(52,211,153,.4)}
.plc-icon-wrap{flex-shrink:0;width:44px;height:44px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent-dim);border:1px solid rgba(20,184,166,.18);color:var(--accent);position:relative}
.plc-icon-wrap i{width:18px;height:18px;z-index:1}
.plc-ping{position:absolute;inset:-2px;border-radius:inherit;border:1px solid var(--accent);
  opacity:0;animation:plcPing 2.5s ease-out infinite}
.plc-ping:nth-child(2){animation-delay:.6s}
.plc-info{flex:1;min-width:0}
.plc-badge{display:inline-block;padding:2px 8px;border-radius:4px;background:rgba(148,163,184,.08);
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-secondary);margin-bottom:3px}
.plc-status{font-size:14px;font-weight:600;color:var(--text-primary);letter-spacing:-.01em}
.plc-sub{font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);margin-top:2px}
.plc-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 3px var(--accent-dim),0 0 16px var(--accent-glow);animation:dotPulse 2s ease-in-out infinite;flex-shrink:0}
.plc-card.is-online .plc-dot{background:var(--success);box-shadow:0 0 0 3px rgba(52,211,153,.12),0 0 18px rgba(52,211,153,.5)}
.plc-card.is-offline{border-color:rgba(248,113,113,.20)}
.plc-card.is-offline::after{background:var(--danger);box-shadow:0 0 12px rgba(248,113,113,.4)}
.plc-card.is-offline .plc-dot{background:var(--danger);box-shadow:0 0 0 3px rgba(248,113,113,.12),0 0 18px rgba(248,113,113,.5);animation:none}

/* ── RIGHT AUTH ── */
.auth-side{height:100vh;display:flex;align-items:center;justify-content:center;
  padding:32px 40px 32px 8px;animation:riseIn .7s var(--ease-out) .1s both}
.auth-card{width:100%;max-width:400px;padding:32px;border-radius:24px;
  background:linear-gradient(160deg,rgba(30,41,59,.65),rgba(15,23,42,.80));
  border:1px solid var(--border-default);
  box-shadow:var(--shadow-xl),0 0 0 1px rgba(255,255,255,.02),var(--shadow-inset);
  backdrop-filter:blur(40px);position:relative;overflow:hidden}
.auth-card::before{content:'';position:absolute;left:0;right:0;top:0;height:2px;
  background:linear-gradient(90deg,transparent 5%,var(--accent) 30%,var(--teal-300) 70%,transparent 95%);opacity:.7}
.card-glow{position:absolute;width:180px;height:180px;top:-90px;right:-70px;border-radius:50%;
  background:radial-gradient(circle,rgba(20,184,166,.15),transparent 70%);pointer-events:none;filter:blur(50px)}

/* Brand row */
.brand-row{display:flex;align-items:center;gap:16px;margin-bottom:32px;padding:12px 16px;
  border-radius:16px;background:rgba(148,163,184,.03);border:1px solid var(--border-subtle)}
.brand-icon{width:54px;height:54px;border-radius:0;display:flex;align-items:center;justify-content:center;
  background:transparent;border:0;color:var(--accent);flex-shrink:0;overflow:hidden}
.brand-icon img,.brand-icon .brand-logo-img{width:54px;height:54px;max-width:54px;max-height:54px;object-fit:contain;display:block}
.brand-icon .fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.brand-icon .fallback i{width:22px;height:22px}
.brand-text .site{font-size:15px;font-weight:600;color:var(--text-primary);letter-spacing:-.02em;line-height:1.3}
.brand-text .company{font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}

/* Card header */
.card-header{margin-bottom:24px}
.card-badge{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:6px;
  background:var(--accent-dim);border:1px solid rgba(20,184,166,.15);
  font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;
  color:var(--accent);margin-bottom:16px}
.card-badge i{width:11px;height:11px}
.card-title{font-size:26px;font-weight:700;color:var(--text-primary);letter-spacing:-.03em;line-height:1.15;margin-bottom:4px}
.card-sub{font-size:14px;color:var(--text-secondary);line-height:1.5}

/* Access strip / clock */
.access-strip{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;
  border-radius:12px;background:rgba(148,163,184,.025);border:1px solid var(--border-subtle);margin-bottom:24px}
.access-strip>div{display:flex;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary)}
.access-strip i{width:12px;height:12px}
#clock{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:.04em}

/* Form */
.login-form{display:flex;flex-direction:column;gap:4px}
.field-group{display:flex;flex-direction:column;margin-bottom:12px}
.field-wrap{position:relative}
.field-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--text-tertiary);display:flex;align-items:center;pointer-events:none;z-index:1}
.field-icon i{width:15px;height:15px}
.field-input{width:100%;height:48px;padding:0 44px;
  background:rgba(148,163,184,.065);border:1px solid rgba(203,213,225,.14);
  border-radius:12px;color:var(--text-primary);font-family:var(--font-sans);font-size:14px;outline:none;
  transition:border-color .2s,box-shadow .2s,background .2s;box-shadow:var(--shadow-inset)}
.field-input::placeholder{color:rgba(203,213,225,.45);font-size:13px}
.field-input:focus{background:rgba(148,163,184,.09);border-color:var(--border-focus);
  box-shadow:0 0 0 3px rgba(20,184,166,.08),var(--shadow-inset)}
.field-wrap:focus-within .field-icon{color:var(--accent)}
.pw-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);
  width:30px;height:30px;border:none;background:transparent;border-radius:8px;
  color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s,background .2s}
.pw-toggle:hover{color:var(--accent);background:var(--accent-dim)}
.pw-toggle i{width:15px;height:15px}

.caps-warn{display:none;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;
  background:rgba(251,191,36,.08);border:1px solid rgba(251,191,36,.15);
  color:var(--warning);font-size:12px;font-family:var(--font-mono);margin-bottom:8px}
.caps-warn i{width:13px;height:13px}
.error-box{display:none;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;
  background:rgba(248,113,113,.08);border:1px solid rgba(248,113,113,.18);color:var(--danger);font-size:13px}
.error-box i{width:14px;height:14px;flex-shrink:0}

.divider{display:flex;align-items:center;gap:12px;margin:4px 0 20px}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border-subtle)}
.divider span{font-family:var(--font-mono);font-size:10px;color:var(--text-tertiary);
  letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}

/* Submit button */
.btn-submit{position:relative;width:100%;height:48px;border:none;border-radius:16px;
  font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:.01em;color:#fff;
  cursor:pointer;overflow:hidden;
  transition:transform .2s var(--ease-out),filter .2s,box-shadow .2s;
  background:linear-gradient(135deg,#0d9488 0%,#14b8a6 50%,#2dd4bf 100%);
  box-shadow:0 12px 32px rgba(13,148,136,.28),var(--shadow-inset)}
.btn-submit::before{content:'';position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.25),transparent 65%);
  transform:translateX(-100%) skewX(-12deg);transition:transform .6s ease}
.btn-submit:hover::before{transform:translateX(200%) skewX(-12deg)}
.btn-submit:hover{transform:translateY(-1px);filter:brightness(1.05);
  box-shadow:0 16px 40px rgba(13,148,136,.35),var(--shadow-inset)}
.btn-submit:active{transform:translateY(0)}
.btn-submit:disabled{opacity:.7;cursor:wait;transform:none}
.btn-inner{display:flex;align-items:center;justify-content:center;gap:8px;position:relative;z-index:1}
.btn-inner i{width:16px;height:16px}
.login-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);
  border-top-color:#fff;border-radius:50%;display:inline-block;animation:spin .8s linear infinite}

/* Footer */
.card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:24px;
  padding-top:20px;border-top:1px solid var(--border-subtle)}
.ver-tag{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary)}
.security-tag{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);
  font-size:11px;color:var(--text-tertiary);letter-spacing:.04em}
.security-tag i{width:11px;height:11px}

/* Animations */
@keyframes riseIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes dotPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}
@keyframes plcPing{0%{transform:scale(.92);opacity:.4}80%{transform:scale(1.5);opacity:0}100%{opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}

/* Responsive */
@media(max-width:1100px){
  .stage{grid-template-columns:1fr 400px}
  .auth-side{padding:24px 32px 24px 16px}
}
@media(max-width:900px){
  .stage{grid-template-columns:1fr}
  .showcase{display:none}
  .auth-side{height:100vh;justify-content:center;padding:24px}
  .auth-card{max-width:420px}
}
@media(max-width:480px){
  .auth-card{padding:24px 20px}
  .card-title{font-size:22px}
}


/* v8 login polish: persistent logo layout, larger icons and clearer type */
:root{--muted:#a3c9b1;--muted-2:#8fb29a;--ink:#e7f6ee}
body{font-size:15px;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
svg.lucide{stroke-width:2.35;width:1.15em;height:1.15em}
.brand-icon{box-shadow:0 14px 34px rgba(0,0,0,.25),inset 0 0 24px rgba(255,255,255,.04)}
.brand-icon img,.brand-icon .brand-logo-img{width:60px;height:60px;max-width:60px;max-height:60px;object-fit:contain}
.card-badge,.security-tag,.feat-pill{font-size:12.5px}
.login-card p,.showcase-sub{font-size:14px;color:var(--muted)}


/* ── v9 login refinements: centered auth card, clean full logo, larger icons/text ── */
body{font-size:16px}.stage{grid-template-columns:minmax(0,1fr) minmax(460px,580px)}.auth-side{justify-content:flex-start;padding:32px 56px 32px 0;transform:translateX(-56px)}.auth-card{max-width:430px;padding:34px;border-radius:26px}.brand-row{background:rgba(148,163,184,.025);padding:14px 16px}.brand-icon{width:78px!important;height:72px!important;min-width:78px!important;background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important}.brand-icon.has-logo{background:transparent!important;border:0!important;box-shadow:none!important}.brand-icon img,.brand-icon .brand-logo-img{width:78px!important;height:72px!important;max-width:78px!important;max-height:72px!important;object-fit:contain!important;display:block}.brand-text .site{font-size:16.5px}.brand-text .company{font-size:12px;max-width:250px}.card-title{font-size:28px}.card-sub{font-size:15px}.field-input{font-size:15px;height:50px}.field-icon i,.pw-toggle i{width:17px!important;height:17px!important}.btn-submit{height:50px;font-size:15px}.stat-icon i{width:19px!important;height:19px!important}.feat-pill{font-size:13px}.feat-pill i{width:15px!important;height:15px!important}.card-badge{font-size:12.5px}.card-badge i{width:14px!important;height:14px!important}.security-tag,.ver-tag{font-size:12px}
@media(max-width:1100px){.stage{grid-template-columns:1fr 430px}.auth-side{transform:none;justify-content:center;padding:24px 32px}}
@media(max-width:900px){.stage{grid-template-columns:1fr}.auth-side{transform:none;justify-content:center;padding:24px}.auth-card{max-width:430px}.brand-icon{width:70px!important;height:66px!important;min-width:70px!important}.brand-icon img,.brand-icon .brand-logo-img{width:70px!important;height:66px!important;max-width:70px!important;max-height:66px!important}}
@media(max-width:480px){.auth-side{padding:18px 14px;height:auto;min-height:100vh}.auth-card{padding:24px 18px;border-radius:20px}.card-title{font-size:23px}.brand-stats,.feat-row{flex-wrap:wrap}}
/* Prevent iOS zoom-on-focus for form fields */
@media(hover:none) and (pointer:coarse){.field-input{font-size:16px!important}}
