[hidden] { display: none !important; }

.login-body {
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  background: var(--dispatch-canvas);
}

.login-masthead,
.login-footer {
  width: min(1180px, 100%);
  margin: 0 auto;
  border-inline: 1px solid var(--dispatch-line-soft);
}

.login-masthead {
  min-height: 80px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  padding: var(--space-3) var(--space-6);
  border-bottom: 1px solid var(--dispatch-line);
  background: rgba(29, 22, 31, 0.96);
}

.login-product-name {
  margin: 0;
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.01em;
}

.restricted-state {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--dispatch-ink-faint);
  font-size: 11px;
  font-weight: 650;
}

.restricted-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--inwave-orange);
  box-shadow: 0 0 0 4px var(--signal-blue-soft);
}

.login-workspace {
  width: min(1180px, 100%);
  min-height: 640px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(360px, 0.85fr);
  border-inline: 1px solid var(--dispatch-line-soft);
}

.access-station,
.operations-brief {
  display: flex;
  align-items: center;
}

.access-station {
  padding: clamp(var(--space-8), 7vw, 88px);
  background: var(--dispatch-sheet);
  position: relative;
}

.access-station::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  background: var(--inwave-orange);
}

.access-inner {
  width: min(440px, 100%);
  margin: 0 auto;
}

.access-heading {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
}

.access-heading h1 {
  margin: 0;
  font-size: clamp(34px, 5vw, 48px);
  line-height: 0.98;
  letter-spacing: -0.025em;
}

.access-heading h1 span { color: var(--inwave-orange-readable); }

.access-bars {
  width: 42px;
  height: 48px;
  flex: 0 0 auto;
  display: block;
  position: relative;
}

.access-bars::before {
  content: "";
  width: 1px;
  height: 42px;
  position: absolute;
  left: 20px;
  top: 2px;
  background: var(--dispatch-line-strong);
  transform: rotate(-36deg);
  transform-origin: center;
}

.access-bars i {
  position: absolute;
  display: block;
  z-index: 1;
  border-radius: 50%;
  background: var(--inwave-slate-readable);
}

.access-bars i:nth-child(1) { width: 6px; height: 6px; left: 2px; top: 4px; }
.access-bars i:nth-child(2) { width: 9px; height: 9px; left: 11px; top: 14px; background: var(--inwave-purple); }
.access-bars i:nth-child(3) { width: 13px; height: 13px; left: 25px; top: 29px; background: var(--inwave-orange); }
.access-bars i:nth-child(4) { width: 7px; height: 7px; left: 4px; top: 34px; background: var(--inwave-lavender); }

.access-intro {
  max-width: 390px;
  margin: var(--space-5) 0 var(--space-8);
  color: var(--dispatch-ink-faint);
  font-size: 14px;
}

.session-check {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  padding: 0 var(--space-4);
  border: 1px solid var(--dispatch-line-soft);
  border-radius: var(--radius-control);
  color: var(--dispatch-ink-faint);
  background: var(--dispatch-inset);
  font-size: 12px;
}

.session-check.is-error { color: var(--signal-red); border-color: var(--signal-red); }

.check-pulse,
.button-pulse {
  display: inline-flex;
  align-items: end;
  gap: 2px;
}

.check-pulse { width: 16px; height: 15px; }
.check-pulse i,
.button-pulse i { width: 3px; border-radius: 1px; animation: access-pulse 900ms ease-in-out infinite alternate; }
.check-pulse i { background: var(--signal-blue); }
.check-pulse i:nth-child(1), .button-pulse i:nth-child(1) { height: 6px; }
.check-pulse i:nth-child(2), .button-pulse i:nth-child(2) { height: 13px; animation-delay: 130ms; }
.check-pulse i:nth-child(3), .button-pulse i:nth-child(3) { height: 9px; animation-delay: 260ms; }

.login-form { display: grid; gap: var(--space-5); }

.login-field { display: grid; gap: var(--space-2); }

.field-label {
  color: var(--dispatch-ink-soft);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.field-control {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: 0 var(--space-4);
  border: 1px solid var(--control-border);
  border-radius: var(--radius-control);
  background: var(--control-bg);
  transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}

.field-control:focus-within {
  border-color: var(--signal-blue);
  background: var(--dispatch-inset);
  box-shadow: 0 0 0 3px var(--control-focus);
}

.field-control input:-webkit-autofill,
.field-control input:-webkit-autofill:hover,
.field-control input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--dispatch-ink);
  caret-color: var(--dispatch-ink);
  box-shadow: 0 0 0 1000px var(--control-bg) inset;
  transition: background-color 9999s ease-out 0s;
}

.field-control:has(input[aria-invalid="true"]) {
  border-color: var(--signal-red);
  box-shadow: 0 0 0 3px var(--signal-red-soft);
}

.field-control svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  fill: none;
  stroke: var(--dispatch-ink-faint);
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.field-control input {
  width: 100%;
  min-width: 0;
  height: 46px;
  padding: 0;
  border: 0;
  outline: 0;
  color: var(--dispatch-ink);
  background: transparent;
  font-size: 14px;
}

.field-control input:disabled { color: var(--dispatch-ink-muted); }

.password-toggle {
  min-width: 60px;
  min-height: 36px;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: 4px;
  color: var(--signal-blue);
  background: transparent;
  cursor: pointer;
  font-size: 10px;
  font-weight: 700;
}

.password-toggle:hover:not(:disabled) { background: var(--signal-blue-soft); }
.password-toggle:disabled { color: var(--dispatch-ink-muted); cursor: default; }

.login-error {
  margin: calc(var(--space-2) * -1) 0 0;
  padding: var(--space-3) var(--space-4);
  border-left: 3px solid var(--signal-red);
  color: var(--signal-red);
  background: var(--signal-red-soft);
  font-size: 12px;
}

.login-submit {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: 0 var(--space-5);
  border: 1px solid var(--inwave-orange);
  border-radius: var(--radius-control);
  color: var(--dispatch-canvas);
  background: var(--inwave-orange);
  cursor: pointer;
  font-size: 12px;
  font-weight: 750;
  letter-spacing: 0.01em;
  transition: background 140ms ease, border-color 140ms ease, transform 140ms ease;
}

.login-submit:hover:not(:disabled) { background: var(--inwave-orange-readable); border-color: var(--inwave-orange-readable); transform: translateY(-1px); }
.login-submit:active:not(:disabled) { transform: translateY(0); }
.login-submit:disabled { cursor: wait; opacity: 0.68; }
.login-submit:not(.is-loading)::after { content: "→"; font-size: 18px; font-weight: 400; }
.button-pulse { height: 16px; }
.button-pulse i { background: var(--dispatch-canvas); }

.access-footnote {
  margin: var(--space-6) 0 0;
  padding-top: var(--space-4);
  border-top: 1px solid var(--dispatch-line-soft);
  color: var(--dispatch-ink-muted);
  font-size: 10px;
}

.operations-brief {
  padding: clamp(var(--space-8), 6vw, 72px);
  border-left: 1px solid var(--dispatch-line);
  background: #251a2a;
  position: relative;
  overflow: hidden;
}

.operations-brief::after {
  content: "";
  width: 220px;
  height: 220px;
  position: absolute;
  right: -118px;
  bottom: -118px;
  border: 1px solid rgba(175, 175, 198, 0.13);
  border-radius: 50%;
  box-shadow: 0 0 0 38px rgba(104, 31, 121, 0.10), 0 0 0 76px rgba(104, 31, 121, 0.06);
  pointer-events: none;
}

.brief-inner { width: 100%; position: relative; z-index: 1; }

.signal-rack {
  height: 112px;
  display: block;
  position: relative;
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--dispatch-line-strong);
}

.signal-rack::before {
  content: "";
  position: absolute;
  left: 4%;
  right: 4%;
  bottom: 48px;
  height: 1px;
  background: var(--dispatch-line);
  transform: rotate(-8deg);
  transform-origin: center;
}

.signal-rack span { position: absolute; display: block; border-radius: 50%; }
.signal-rack span:nth-child(1) { width: 10px; height: 10px; left: 4%; bottom: 30px; background: var(--inwave-slate-readable); }
.signal-rack span:nth-child(2) { width: 16px; height: 16px; left: 31%; bottom: 45px; background: var(--inwave-purple); }
.signal-rack span:nth-child(3) { width: 42px; height: 17px; left: 57%; bottom: 52px; border-radius: 999px; background: var(--inwave-orange); box-shadow: 0 0 0 7px var(--signal-blue-soft); }
.signal-rack span:nth-child(4) { width: 13px; height: 13px; right: 4%; bottom: 72px; background: var(--inwave-lavender); }

.operations-brief h2 {
  max-width: 390px;
  margin: var(--space-2) 0 0;
  font-size: clamp(24px, 3vw, 34px);
  line-height: 1.08;
  letter-spacing: -0.015em;
}

.brief-copy {
  max-width: 390px;
  margin: var(--space-4) 0 var(--space-8);
  color: var(--dispatch-ink-faint);
  font-size: 13px;
}

.brief-list { margin: 0; }
.brief-list > div { padding: var(--space-4) 0; border-top: 1px solid var(--dispatch-line); }
.brief-list dt { color: var(--dispatch-ink); font-size: 11px; font-weight: 750; }
.brief-list dd { margin: 3px 0 0; color: var(--dispatch-ink-faint); font-size: 11px; }

.login-footer {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-2) var(--space-6);
  border-top: 1px solid var(--dispatch-line);
  color: var(--dispatch-ink-muted);
  font-family: var(--font-data);
  font-size: 10px;
  text-transform: uppercase;
}

@keyframes access-pulse {
  from { transform: scaleY(0.58); transform-origin: bottom; opacity: 0.55; }
  to { transform: scaleY(1); transform-origin: bottom; opacity: 1; }
}

@media (max-width: 780px) {
  .login-masthead { padding-inline: var(--space-5); }
  .login-workspace { grid-template-columns: 1fr; }
  .access-station { padding: 56px var(--space-6); }
  .operations-brief { padding: 48px var(--space-6); border-top: 1px solid var(--dispatch-line); border-left: 0; }
  .signal-rack { height: 72px; margin-bottom: var(--space-6); }
}

@media (max-width: 520px) {
  .login-masthead { min-height: 68px; gap: var(--space-3); padding-inline: var(--space-4); }
  .login-product-name { font-size: 17px; }
  .login-masthead .inwave-logo { width: 102px; }
  .login-masthead .brand-rule,
  .login-masthead .eyebrow { display: none; }
  .login-masthead .brand-block { gap: var(--space-3); min-width: 0; }
  .restricted-state span:last-child { display: none; }
  .access-station { padding: 44px var(--space-5) 52px; }
  .access-heading { gap: var(--space-3); }
  .access-heading h1 { font-size: 36px; }
  .access-intro { margin-bottom: var(--space-6); }
  .operations-brief { padding: 40px var(--space-5); }
  .login-footer { align-items: flex-start; flex-direction: column; padding: var(--space-3) var(--space-5); }
}

@media (prefers-reduced-motion: reduce) {
  .check-pulse i,
  .button-pulse i { animation: none; }
}
