html {
  min-height: 100%;
}

body.ptnx-login-page {
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  background:
    radial-gradient(circle at 10% 0%, #c7d2fe 0, #eef2ff 22%, #f8fafc 46%),
    radial-gradient(circle at 100% 100%, #bfdbfe 0, transparent 40%),
    linear-gradient(180deg, #f8fbff 0%, #eef4ff 52%, #f8fafc 100%);
  background-size: 140% 140%, 150% 150%, 100% 100%;
  color: #1e293b;
  font-family: "Montserrat", "Montserrat Alternates", Inter, "Segoe UI", Roboto, Arial, sans-serif;
  overflow-x: hidden;
  overflow-y: auto;
  animation: ptnx-login-breath 9s ease-in-out infinite;
}

body.ptnx-login-page::before,
body.ptnx-login-page::after {
  content: "";
  position: fixed;
  pointer-events: none;
}

body.ptnx-login-page::before {
  inset: -28%;
  z-index: 0;
  background:
    radial-gradient(circle at 30% 80%, rgba(129, 140, 248, 0.76), transparent 58%),
    radial-gradient(circle at 50% 0%, rgba(244, 114, 182, 0.34), transparent 48%),
    radial-gradient(circle at 74% 22%, rgba(45, 212, 191, 0.42), transparent 52%),
    radial-gradient(circle at 20% 80%, rgba(56, 189, 248, 0.76), transparent 55%);
  filter: blur(20px);
  opacity: 0.98;
  animation: ptnx-aurora-drift 5.2s ease-in-out infinite alternate;
}

body.ptnx-login-page::after {
  inset: -12%;
  z-index: 0;
  background:
    conic-gradient(from 140deg at 52% 46%,
      rgba(99, 102, 241, 0.18),
      rgba(14, 165, 233, 0.16),
      rgba(20, 184, 166, 0.14),
      rgba(244, 114, 182, 0.12),
      rgba(99, 102, 241, 0.18)
    );
  filter: blur(36px);
  opacity: 0.7;
  animation: ptnx-pastel-orbit 8s ease-in-out infinite alternate;
}

body.ptnx-login-page > header,
body.ptnx-login-page .navbar,
body.ptnx-login-page footer {
  display: none;
}

body.ptnx-login-page > main {
  max-width: none;
  min-height: 100vh;
  padding: 0;
}

body.ptnx-login-page .content {
  min-height: 100vh !important;
}

body.ptnx-login-page .content > .container.mt-5 {
  max-width: none;
  margin: 0 !important;
  padding: 0;
}

body.ptnx-login-page .content > .container.dont-print {
  position: absolute;
  left: 50%;
  top: 16px;
  z-index: 5;
  max-width: min(720px, calc(100vw - 32px));
  transform: translateX(-50%);
}

.ptnx-login-shell {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
}

.ptnx-login-info,
.ptnx-login-panel {
  display: flex;
  align-items: center;
  min-height: 100vh;
}

.ptnx-login-info {
  padding: 48px clamp(32px, 6vw, 72px);
}

.ptnx-info-content {
  max-width: 640px;
}

.ptnx-eyebrow {
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  border: 1px solid rgba(148, 163, 184, 0.20);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.58);
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 26px rgba(99, 102, 241, 0.08);
}

.ptnx-title,
.ptnx-brand-name,
.ptnx-login-card h1 {
  color: transparent;
  background: linear-gradient(115deg, #1e293b, #6366f1, #0ea5e9, #14b8a6, #ec4899, #1e293b);
  background-size: 360% 360%;
  -webkit-background-clip: text;
  background-clip: text;
  animation: ptnx-pastel-text 6.8s ease-in-out infinite;
}

.ptnx-title {
  margin: 18px 0 14px;
  font-size: clamp(38px, 5vw, 64px);
  line-height: 1.02;
  letter-spacing: 0;
}

.ptnx-soft {
  font-size: 0.8em;
  opacity: 0.5;
  color: #5b5b5b;
}

.ptnx-subtitle {
  max-width: 560px;
  margin: 0 0 28px;
  color: #475569;
  font-size: 17px;
  line-height: 1.75;
}

.ptnx-feature-list {
  display: grid;
  max-width: 580px;
  gap: 14px;
}

.ptnx-feature-item {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 16px 18px;
  border: 1px solid rgba(255, 255, 255, 0.58);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.54);
  box-shadow: 0 10px 30px rgba(76, 86, 125, 0.08);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  animation: ptnx-feature-breath 5.6s ease-in-out infinite;
}

.ptnx-feature-item:nth-child(2) {
  animation-delay: 0.55s;
}

.ptnx-feature-item:nth-child(3) {
  animation-delay: 1.1s;
}

.ptnx-feature-item:nth-child(4) {
  animation-delay: 1.65s;
}

.ptnx-feature-icon {
  width: 38px;
  height: 38px;
  min-width: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(99, 102, 241, 0.14);
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.16), rgba(56, 189, 248, 0.18));
  color: #4338ca;
  font-size: 13px;
  font-weight: 800;
  animation: ptnx-icon-pulse 3.4s ease-in-out infinite;
}

.ptnx-feature-item h2,
.ptnx-feature-item h6 {
  margin: 0 0 4px;
  color: #1e293b;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0;
}

.ptnx-feature-item p {
  margin: 0;
  color: #64748b;
  font-size: 14px;
  line-height: 1.55;
}

.ptnx-login-panel {
  justify-content: center;
  padding: 24px;
}

.ptnx-login-card {
  width: min(100%, 440px);
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  padding: clamp(24px, 4vw, 36px);
  border: 1px solid rgba(255, 255, 255, 0.58);
  border-radius: 28px;
  background: rgba(255, 255, 255, 0.80);
  box-shadow:
    0 18px 50px rgba(76, 86, 125, 0.18),
    0 8px 24px rgba(15, 23, 42, 0.08);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  animation: ptnx-card-glow 4.8s ease-in-out infinite;
}

.ptnx-login-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 24px;
  text-align: center;
}

.ptnx-brand-logo {
  max-width: 88px;
  height: auto;
  margin-bottom: 14px;
  object-fit: contain;
}

.ptnx-brand-mark {
  width: 68px;
  height: 68px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 14px;
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(184, 200, 255, 0.52), rgba(215, 198, 255, 0.68));
  color: #2e3140;
  font-weight: 900;
  letter-spacing: 0.04em;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
  animation: ptnx-icon-pulse 3.4s ease-in-out infinite;
}

.ptnx-brand-name,
.ptnx-login-card h1 {
  margin: 0;
  font-size: 26px;
  line-height: 1.15;
}

.ptnx-brand-tagline,
.ptnx-login-card p,
.ptnx-login-card details,
.ptnx-login-card summary,
.ptnx-login-card .text-muted,
.ptnx-divider span,
.ptnx-login-status {
  color: #64748b !important;
}

.ptnx-brand-tagline,
.ptnx-login-card p {
  margin: 8px 0 0;
  line-height: 1.5;
}

.ptnx-tenant-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: 14px;
  padding: 7px 14px;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
  color: #475569;
  font-size: 13px;
  font-weight: 700;
}

.ptnx-login-card form {
  margin: 0;
}

.ptnx-form-grid {
  display: grid;
  gap: 14px;
}

.ptnx-login-card label,
.ptnx-login-card .form-label {
  display: block;
  margin: 0 0 7px;
  color: #475569;
  font-size: 13px;
  font-weight: 800;
}

.ptnx-login-card input:not([type="checkbox"]),
.ptnx-login-card select,
.ptnx-login-card textarea,
.ptnx-login-card .form-control {
  width: 100%;
  min-height: 46px;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.86);
  color: #0f172a;
  padding: 10px 12px;
  font: inherit;
  box-shadow: none;
}

.ptnx-login-card input:focus,
.ptnx-login-card select:focus,
.ptnx-login-card textarea:focus,
.ptnx-login-card .form-control:focus {
  border-color: rgba(99, 102, 241, 0.5);
  box-shadow: 0 0 0 0.2rem rgba(99, 102, 241, 0.12);
  background: rgba(255, 255, 255, 0.94);
  outline: none;
}

.ptnx-login-primary,
.ptnx-login-btn,
.ptnx-login-card .btn-primary {
  width: 100%;
  min-height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 999px;
  background: linear-gradient(115deg, #6366f1, #0ea5e9, #14b8a6, #ec4899, #6366f1);
  background-size: 260% 260%;
  color: #fff;
  padding: 10px 16px;
  font: inherit;
  font-weight: 800;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(99, 102, 241, 0.24);
  cursor: pointer;
  animation: ptnx-button-gradient 4.8s ease-in-out infinite;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ptnx-login-primary:hover,
.ptnx-login-btn:hover,
.ptnx-login-card .btn-primary:hover {
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 16px 34px rgba(14, 165, 233, 0.26);
}

.ptnx-login-primary:disabled,
.ptnx-login-btn:disabled,
.ptnx-login-card .btn-primary:disabled {
  opacity: 0.78;
  transform: none;
  box-shadow: none;
  cursor: not-allowed;
}

.ptnx-login-secondary,
.ptnx-login-card button.secondary,
.ptnx-login-card .btn-outline-secondary {
  width: 100%;
  min-height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(148, 163, 184, 0.34);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: #475569;
  padding: 10px 16px;
  font: inherit;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ptnx-login-secondary:hover,
.ptnx-login-card button.secondary:hover,
.ptnx-login-card .btn-outline-secondary:hover {
  color: #334155;
  transform: translateY(-1px);
  box-shadow: 0 14px 28px rgba(76, 86, 125, 0.14);
}

.ptnx-login-secondary:disabled,
.ptnx-login-card button.secondary:disabled,
.ptnx-login-card .btn-outline-secondary:disabled {
  opacity: 0.72;
  transform: none;
  box-shadow: none;
  cursor: not-allowed;
}

.ptnx-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0;
}

.ptnx-divider::before,
.ptnx-divider::after {
  content: "";
  height: 1px;
  flex: 1;
  background: rgba(148, 163, 184, 0.35);
}

.ptnx-login-status,
.ptnx-footer-note,
.ptnx-login-helper {
  min-height: 24px;
  margin-top: 14px;
  color: #64748b;
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
}

.ptnx-login-helper {
  margin: 0 0 14px;
}

.ptnx-login-status.error,
.ptnx-login-error,
.login-alert.is-visible {
  display: block;
  margin-bottom: 16px;
  padding: 12px 14px;
  border: 1px solid rgba(199, 107, 127, 0.22);
  border-radius: 14px;
  background: rgba(253, 239, 242, 0.88);
  color: #a83f58;
  font-size: 14px;
  line-height: 1.5;
}

.ptnx-login-error,
.login-alert {
  display: none;
}

.ptnx-forgot,
.ptnx-login-card a {
  background: linear-gradient(115deg, #6366f1, #0ea5e9, #14b8a6, #ec4899, #6366f1);
  background-size: 260% 260%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-weight: 800;
  text-decoration: none;
  animation: ptnx-pastel-text 6s ease-in-out infinite;
}

.ptnx-circuit-layer {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  opacity: 0.46;
  filter: blur(3px);
}

.ptnx-circuit-path {
  position: absolute;
  display: block;
  border-radius: 999px;
}

.ptnx-circuit-path::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(99, 102, 241, 0.14), rgba(56, 189, 248, 0.16), rgba(129, 140, 248, 0.14), rgba(255, 255, 255, 0));
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.03), 0 0 12px rgba(99, 102, 241, 0.06);
}

.ptnx-circuit-path::after {
  content: "";
  position: absolute;
  top: 50%;
  left: -8%;
  width: 18%;
  height: 220%;
  transform: translateY(-50%);
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.9), rgba(125, 211, 252, 0.95), rgba(255, 255, 255, 0));
  filter: blur(6px);
  opacity: 0.85;
  animation: ptnx-circuit-pulse-x 4.8s linear infinite;
}

.ptnx-path-1 {
  top: 12%;
  left: 6%;
  width: 34%;
  height: 2px;
}

.ptnx-path-2 {
  top: 12%;
  left: 40%;
  width: 2px;
  height: 26%;
}

.ptnx-path-3 {
  right: 8%;
  bottom: 18%;
  width: 28%;
  height: 2px;
}

.ptnx-path-4 {
  right: 36%;
  bottom: 18%;
  width: 2px;
  height: 22%;
}

.ptnx-path-2::before,
.ptnx-path-4::before {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(99, 102, 241, 0.14), rgba(56, 189, 248, 0.16), rgba(129, 140, 248, 0.14), rgba(255, 255, 255, 0));
}

.ptnx-path-2::after,
.ptnx-path-4::after {
  top: -8%;
  left: 50%;
  width: 220%;
  height: 18%;
  transform: translateX(-50%);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.9), rgba(125, 211, 252, 0.95), rgba(255, 255, 255, 0));
  animation: ptnx-circuit-pulse-y 5.6s linear infinite;
}

.ptnx-path-3::after {
  animation-delay: 1.4s;
}

.ptnx-path-4::after {
  animation-duration: 4.9s;
  animation-delay: 2.1s;
}

.ptnx-circuit-node {
  position: absolute;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.95) 0%, rgba(125, 211, 252, 0.85) 45%, rgba(99, 102, 241, 0.15) 100%);
  box-shadow: 0 0 10px rgba(125, 211, 252, 0.4), 0 0 22px rgba(99, 102, 241, 0.18);
  animation: ptnx-node-pulse 3.6s ease-in-out infinite;
}

.ptnx-node-1 {
  top: calc(12% - 4px);
  left: calc(40% - 4px);
}

.ptnx-node-2 {
  top: calc(38% - 4px);
  left: calc(40% - 4px);
  animation-delay: 0.8s;
}

.ptnx-node-3 {
  right: calc(36% - 4px);
  bottom: calc(18% - 4px);
  animation-delay: 1.4s;
}

.ptnx-node-4 {
  right: calc(36% - 4px);
  bottom: calc(40% - 4px);
  animation-delay: 2.2s;
}

@keyframes ptnx-login-breath {
  0%, 100% {
    background-position: 0% 0%, 100% 100%, 50% 50%;
  }
  50% {
    background-position: 55% 34%, 42% 58%, 50% 50%;
  }
}

@keyframes ptnx-aurora-drift {
  0% {
    transform: translate3d(-13%, 12%, 0) scale(1);
  }
  50% {
    transform: translate3d(14%, -3%, 0) scale(1.1);
  }
  100% {
    transform: translate3d(-2%, 14%, 0) scale(1.06);
  }
}

@keyframes ptnx-pastel-orbit {
  0% {
    transform: rotate(-8deg) scale(1);
  }
  50% {
    transform: rotate(8deg) scale(1.08);
  }
  100% {
    transform: rotate(18deg) scale(1.03);
  }
}

@keyframes ptnx-pastel-text {
  0%, 100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

@keyframes ptnx-feature-breath {
  0%, 100% {
    transform: translateY(0);
    box-shadow: 0 10px 30px rgba(76, 86, 125, 0.08);
  }
  50% {
    transform: translateY(-4px);
    box-shadow: 0 18px 42px rgba(99, 102, 241, 0.13);
  }
}

@keyframes ptnx-icon-pulse {
  0%, 100% {
    transform: scale(1);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75), 0 0 0 rgba(99, 102, 241, 0);
  }
  50% {
    transform: scale(1.08);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75), 0 0 26px rgba(56, 189, 248, 0.24);
  }
}

@keyframes ptnx-card-glow {
  0%, 100% {
    box-shadow:
      0 18px 50px rgba(76, 86, 125, 0.18),
      0 8px 24px rgba(15, 23, 42, 0.08);
  }
  50% {
    box-shadow:
      0 24px 70px rgba(99, 102, 241, 0.20),
      0 12px 30px rgba(14, 165, 233, 0.12);
  }
}

@keyframes ptnx-button-gradient {
  0%, 100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

@keyframes ptnx-circuit-pulse-x {
  0% {
    left: -18%;
    opacity: 0;
  }
  10%, 85% {
    opacity: 0.9;
  }
  100% {
    left: 100%;
    opacity: 0;
  }
}

@keyframes ptnx-circuit-pulse-y {
  0% {
    top: -18%;
    opacity: 0;
  }
  10%, 85% {
    opacity: 0.9;
  }
  100% {
    top: 100%;
    opacity: 0;
  }
}

@keyframes ptnx-node-pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 0.65;
  }
  50% {
    transform: scale(1.35);
    opacity: 1;
  }
}

@media (max-width: 980px) {
  .ptnx-login-shell {
    display: block;
    min-height: 100vh;
  }

  .ptnx-login-info {
    display: none;
  }

  .ptnx-login-panel {
    min-height: 100vh;
    padding: 20px;
  }
}

@media (max-height: 760px) {
  .ptnx-login-panel {
    align-items: flex-start;
    padding-top: 16px;
    padding-bottom: 16px;
  }

  .ptnx-login-card {
    padding: 20px;
  }
}
