/* OYHRA Login Theme v1 — Frappe v15
   Styles the native Frappe login flows. No duplicate page or JS overlay. */

:root {
  --oyhra-login-navy: #020b18;
  --oyhra-login-panel: rgba(5, 20, 43, 0.82);
  --oyhra-login-panel-deep: rgba(2, 11, 24, 0.94);
  --oyhra-login-cyan: #00bfff;
  --oyhra-login-blue: #087fc4;
  --oyhra-login-silver: #dce8f2;
  --oyhra-login-muted: #9fb3c8;
  --oyhra-login-border: rgba(190, 225, 247, 0.52);
}

html:has(body section.for-login),
body:has(section.for-login) {
  min-height: 100%;
  background-color: var(--oyhra-login-navy) !important;
}

body:has(section.for-login) {
  min-height: 100vh;
  overflow-x: hidden;
  color: #fff;
  background-image:
    linear-gradient(90deg, rgba(2, 11, 24, 0.04) 0 48%, rgba(2, 11, 24, 0.18) 58%, rgba(2, 11, 24, 0.42) 100%),
    url('/files/OYHRA_Login_Background_Clean.png') !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-size: cover !important;
  background-attachment: fixed !important;
  animation: oyhra-login-background-drift 16s ease-in-out infinite alternate;
}

/* Login is a dedicated full-screen experience. */
body:has(section.for-login) > .navbar,
body:has(section.for-login) .web-footer,
body:has(section.for-login) footer {
  display: none !important;
}

body:has(section.for-login) main,
body:has(section.for-login) .main-section,
body:has(section.for-login) .web-page-content,
body:has(section.for-login) .page_content,
body:has(section.for-login) .container,
body:has(section.for-login) .container-fluid {
  width: 100% !important;
  max-width: none !important;
  min-height: 100vh !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

body:has(section.for-login) [class^='for-'],
body:has(section.for-login) [class*=' for-'] {
  box-sizing: border-box;
}

body:has(section.for-login) section.for-login,
body:has(section.for-login) section.for-email-login,
body:has(section.for-login) section.for-signup,
body:has(section.for-login) section.for-forgot,
body:has(section.for-login) section.for-login-with-email-link {
  position: relative;
  isolation: isolate;
  width: min(430px, calc(100vw - 40px));
  margin: clamp(32px, 8vh, 84px) clamp(32px, 7vw, 134px) clamp(32px, 8vh, 84px) auto !important;
  padding: clamp(28px, 4vh, 42px) clamp(24px, 3vw, 38px) 30px !important;
  overflow: hidden;
  border: 1px solid var(--oyhra-login-border);
  border-radius: 24px;
  background:
    linear-gradient(145deg, rgba(18, 52, 86, 0.60), rgba(4, 17, 37, 0.88) 48%, rgba(2, 10, 23, 0.95));
  box-shadow:
    0 28px 70px rgba(0, 0, 0, 0.48),
    inset 0 1px 0 rgba(255, 255, 255, 0.24),
    inset 0 -1px 0 rgba(0, 191, 255, 0.13),
    0 0 26px rgba(0, 127, 196, 0.13);
  -webkit-backdrop-filter: blur(18px) saturate(125%);
  backdrop-filter: blur(18px) saturate(125%);
  animation: oyhra-login-card-enter 650ms cubic-bezier(.2, .75, .25, 1) both;
}

/* Slow metallic light sweep on the native card only. */
body:has(section.for-login) section.for-login::before,
body:has(section.for-login) section.for-email-login::before,
body:has(section.for-login) section.for-signup::before,
body:has(section.for-login) section.for-forgot::before,
body:has(section.for-login) section.for-login-with-email-link::before {
  content: '';
  position: absolute;
  z-index: -1;
  top: 0;
  left: -55%;
  width: 52%;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, rgba(225, 246, 255, .96), var(--oyhra-login-cyan), transparent);
  filter: drop-shadow(0 0 8px rgba(0, 191, 255, .72));
  animation: oyhra-login-edge-sweep 7s 1.2s ease-in-out infinite;
}

body:has(section.for-login) .page-card-head {
  margin: 0 0 28px !important;
  padding: 0 !important;
  text-align: center !important;
}

body:has(section.for-login) .page-card-head .app-logo {
  display: block !important;
  width: auto !important;
  max-width: min(270px, 78%) !important;
  height: auto !important;
  max-height: 92px !important;
  margin: 0 auto 20px !important;
  object-fit: contain !important;
  border-radius: 12px;
  filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .34)) drop-shadow(0 0 11px rgba(0, 179, 255, .14));
  animation: oyhra-login-logo-pulse 4.8s ease-in-out infinite;
}

body:has(section.for-login) .page-card-head h4 {
  margin: 0 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-size: clamp(24px, 2vw, 32px) !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  letter-spacing: -.02em;
  text-shadow: 0 2px 10px rgba(0, 0, 0, .38);
}

body:has(section.for-login) .login-content.page-card {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

body:has(section.for-login) .page-card-body,
body:has(section.for-login) .page-card-actions {
  padding: 0 !important;
  background: transparent !important;
}

body:has(section.for-login) .form-group {
  margin: 0 0 18px !important;
}

body:has(section.for-login) .email-field,
body:has(section.for-login) .password-field {
  position: relative;
}

body:has(section.for-login) .form-control {
  width: 100% !important;
  height: 52px !important;
  padding: 0 46px !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  caret-color: var(--oyhra-login-cyan) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  border: 1px solid rgba(173, 211, 236, .36) !important;
  border-radius: 12px !important;
  outline: none !important;
  background: rgba(2, 12, 28, .58) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035) !important;
  transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease !important;
}

body:has(section.for-login) .form-control::placeholder {
  color: rgba(255, 255, 255, .85) !important;
  -webkit-text-fill-color: rgba(255, 255, 255, .85) !important;
  font-weight: 700 !important;
  opacity: 1 !important;
}

body:has(section.for-login) .form-control:-webkit-autofill,
body:has(section.for-login) .form-control:-webkit-autofill:hover,
body:has(section.for-login) .form-control:-webkit-autofill:focus,
body:has(section.for-login) .form-control:-webkit-autofill:active {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  font-weight: 700 !important;
  caret-color: #ffffff !important;
  -webkit-box-shadow: 0 0 0 1000px #061426 inset !important;
  box-shadow: 0 0 0 1000px #061426 inset !important;
  transition: background-color 9999s ease-out 0s !important;
}

body:has(section.for-login) .form-control:hover {
  border-color: rgba(0, 191, 255, .58) !important;
  background: rgba(3, 17, 38, .72) !important;
}

body:has(section.for-login) .form-control:focus {
  border-color: var(--oyhra-login-cyan) !important;
  background: rgba(3, 17, 38, .82) !important;
  box-shadow: 0 0 0 3px rgba(0, 191, 255, .14), 0 0 20px rgba(0, 127, 196, .13) !important;
}

body:has(section.for-login) .field-icon {
  left: 16px !important;
  right: auto !important;
  color: var(--oyhra-login-muted) !important;
  stroke: var(--oyhra-login-muted) !important;
  --icon-stroke: var(--oyhra-login-muted) !important;
}

[dir='rtl'] body:has(section.for-login) .field-icon {
  right: 16px !important;
  left: auto !important;
}

body:has(section.for-login) .toggle-password {
  right: 15px !important;
  left: auto !important;
  color: var(--oyhra-login-muted) !important;
  font-size: 12px !important;
  cursor: pointer;
}

[dir='rtl'] body:has(section.for-login) .toggle-password {
  left: 15px !important;
  right: auto !important;
}

body:has(section.for-login) .forgot-password-message,
body:has(section.for-login) .sign-up-message {
  margin: 4px 0 20px !important;
  color: var(--oyhra-login-muted) !important;
  font-size: 13px !important;
}

body:has(section.for-login) a,
body:has(section.for-login) .forgot-password-message a,
body:has(section.for-login) .sign-up-message a {
  color: #57d4ff !important;
  text-decoration: none !important;
  transition: color 160ms ease, text-shadow 160ms ease !important;
}

body:has(section.for-login) a:hover,
body:has(section.for-login) a:focus-visible {
  color: #dff8ff !important;
  text-shadow: 0 0 10px rgba(0, 191, 255, .46);
}

body:has(section.for-login) .page-card-actions {
  margin-top: 8px !important;
}

body:has(section.for-login) .btn-login,
body:has(section.for-login) .btn-forgot,
body:has(section.for-login) .btn-login-with-email-link,
body:has(section.for-login) .page-card-actions .btn-primary {
  position: relative;
  isolation: isolate;
  width: 100% !important;
  min-height: 52px !important;
  overflow: hidden !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  border: 1px solid rgba(122, 220, 255, .86) !important;
  border-radius: 12px !important;
  background: linear-gradient(180deg, rgba(20, 139, 210, .95), rgba(3, 78, 139, .98)) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 8px 24px rgba(0, 88, 155, .28), 0 0 18px rgba(0, 191, 255, .14) !important;
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease, filter 160ms ease !important;
}

body:has(section.for-login) .btn-login:hover,
body:has(section.for-login) .btn-forgot:hover,
body:has(section.for-login) .btn-login-with-email-link:hover,
body:has(section.for-login) .page-card-actions .btn-primary:hover {
  transform: translateY(-1px);
  border-color: #dff8ff !important;
  filter: brightness(1.08);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .32), 0 10px 28px rgba(0, 88, 155, .36), 0 0 24px rgba(0, 191, 255, .24) !important;
}

body:has(section.for-login) .btn-login:active,
body:has(section.for-login) .btn-forgot:active,
body:has(section.for-login) .btn-login-with-email-link:active {
  transform: translateY(0) scale(.995);
}

body:has(section.for-login) .login-divider {
  color: rgba(191, 209, 225, .68) !important;
}

body:has(section.for-login) .btn-login-option,
body:has(section.for-login) .btn-default {
  min-height: 46px !important;
  color: #eaf7ff !important;
  -webkit-text-fill-color: #eaf7ff !important;
  border: 1px solid rgba(173, 211, 236, .30) !important;
  border-radius: 11px !important;
  background: rgba(2, 12, 28, .54) !important;
}

body:has(section.for-login) .alert,
body:has(section.for-login) .invalid-feedback,
body:has(section.for-login) .indicator {
  border-radius: 10px !important;
}

@keyframes oyhra-login-card-enter {
  from { opacity: 0; transform: translate3d(0, 10px, 0) scale(.992); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

@keyframes oyhra-login-edge-sweep {
  0%, 58% { left: -55%; opacity: 0; }
  64% { opacity: 1; }
  82% { left: 105%; opacity: .95; }
  100% { left: 105%; opacity: 0; }
}

@keyframes oyhra-login-logo-pulse {
  0%, 100% { filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .34)) drop-shadow(0 0 9px rgba(0, 179, 255, .10)); }
  50% { filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .34)) drop-shadow(0 0 15px rgba(0, 179, 255, .22)); }
}

@keyframes oyhra-login-background-drift {
  from { background-position: 49.6% center; }
  to { background-position: 50.4% center; }
}

@media (max-width: 991px) {
  body:has(section.for-login) {
    background-position: 36% center !important;
  }

  body:has(section.for-login) section.for-login,
  body:has(section.for-login) section.for-email-login,
  body:has(section.for-login) section.for-signup,
  body:has(section.for-login) section.for-forgot,
  body:has(section.for-login) section.for-login-with-email-link {
    margin-right: 5vw !important;
  }
}

@media (max-width: 767px) {
  body:has(section.for-login) {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px !important;
    background-position: 31% center !important;
    background-attachment: scroll !important;
    animation: none !important;
  }

  body:has(section.for-login)::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    background: rgba(2, 11, 24, .42);
  }

  body:has(section.for-login) section.for-login,
  body:has(section.for-login) section.for-email-login,
  body:has(section.for-login) section.for-signup,
  body:has(section.for-login) section.for-forgot,
  body:has(section.for-login) section.for-login-with-email-link {
    width: min(430px, calc(100vw - 32px));
    margin: 20px auto !important;
    padding: 28px 22px 24px !important;
    border-radius: 20px;
  }

  body:has(section.for-login) .page-card-head .app-logo {
    max-width: 72% !important;
    max-height: 74px !important;
    margin-bottom: 16px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:has(section.for-login),
  body:has(section.for-login) section,
  body:has(section.for-login) section::before,
  body:has(section.for-login) .app-logo {
    animation: none !important;
    transition-duration: .01ms !important;
  }
}

/* OYHRA Login Lighting v3: image-aligned paths, no replacement page. */
@property --oyhra-login-light-angle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0deg;
}

/* Each background stroke uses the same cover geometry as the source image. */
body:has(section.for-login)::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201024%20576%22%20fill%3D%22none%22%3E%3Cdefs%3E%3Cfilter%20id%3D%22glow%22%20x%3D%22-100%25%22%20y%3D%22-100%25%22%20width%3D%22300%25%22%20height%3D%22300%25%22%3E%3CfeGaussianBlur%20stdDeviation%3D%222.5%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3Cpath%20d%3D%22M0%2050%20H107%20L155%200%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%227.199999999999999%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2211s%22%20begin%3D%22-2s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%2050%20H107%20L155%200%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.4%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2211s%22%20begin%3D%22-2s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M53%2075%20H111%20L135%2099%20V288%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%226.300000000000001%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2212s%22%20begin%3D%22-1s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M53%2075%20H111%20L135%2099%20V288%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.1%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2212s%22%20begin%3D%22-1s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M159%2019%20H231%20L284%2071%20V112%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%225.4%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-5s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M159%2019%20H231%20L284%2071%20V112%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-5s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M975%20193%20V251%20L990%20266%20V441%20L1024%20478%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%226.0%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2213s%22%20begin%3D%22-4s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M975%20193%20V251%20L990%20266%20V441%20L1024%20478%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.0%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2213s%22%20begin%3D%22-4s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M865%20232%20L1024%2073%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%225.4%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2212s%22%20begin%3D%22-7s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M865%20232%20L1024%2073%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2212s%22%20begin%3D%22-7s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M847%20248%20L1024%2088%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%224.199999999999999%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-2s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M847%20248%20L1024%2088%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%221.4%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-2s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M721%20367%20L771%20400%20H925%20L1024%20499%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%224.5%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2215s%22%20begin%3D%22-8s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M721%20367%20L771%20400%20H925%20L1024%20499%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2215s%22%20begin%3D%22-8s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20389%20C105%20400%20175%20442%20270%20501%20C352%20550%20398%20573%20450%20592%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%227.800000000000001%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-6s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20389%20C105%20400%20175%20442%20270%20501%20C352%20550%20398%20573%20450%20592%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.6%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2214s%22%20begin%3D%22-6s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20327%20C92%20359%20190%20430%20269%20457%20C430%20500%20605%20499%20805%20576%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%226.6000000000000005%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2216s%22%20begin%3D%22-3s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20327%20C92%20359%20190%20430%20269%20457%20C430%20500%20605%20499%20805%20576%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.2%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2216s%22%20begin%3D%22-3s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20169%20C72%20263%20159%20376%20213%20405%20C340%20464%20535%20466%20715%20512%20H953%20L1014%20576%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%224.5%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2218s%22%20begin%3D%22-9s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M0%20169%20C72%20263%20159%20376%20213%20405%20C340%20464%20535%20466%20715%20512%20H953%20L1014%20576%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2218s%22%20begin%3D%22-9s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M410%20111%20C480%20120%20538%20164%20538%20244%20C538%20320%20479%20375%20396%20375%20C315%20375%20253%20323%20253%20244%20C253%20170%20307%20120%20399%20115%22%20pathLength%3D%221000%22%20stroke%3D%22%2300bfff%22%20stroke-width%3D%226.0%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%20filter%3D%22url%28%23glow%29%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2218s%22%20begin%3D%22-4s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M410%20111%20C480%20120%20538%20164%20538%20244%20C538%20320%20479%20375%20396%20375%20C315%20375%20253%20323%20253%20244%20C253%20170%20307%20120%20399%20115%22%20pathLength%3D%221000%22%20stroke%3D%22%23c6f4ff%22%20stroke-width%3D%222.0%22%20stroke-linecap%3D%22round%22%20stroke-dasharray%3D%2265%20935%22%20opacity%3D%22.8%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20from%3D%2265%22%20to%3D%22-935%22%20dur%3D%2218s%22%20begin%3D%22-4s%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fpath%3E%3C%2Fsvg%3E");
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  opacity: .9;
  animation: none;
}

/* Native login card remains above decorative paths. */
body:has(section.for-login) main {
  position: relative;
  z-index: 3;
}

/* Replace the old top-edge sweep with a continuous four-edge light. */
body:has(section.for-login) :is(
  section.for-login, section.for-email-login, section.for-signup,
  section.for-forgot, section.for-login-with-email-link
)::before {
  content: '';
  position: absolute;
  z-index: 0;
  inset: 0;
  width: auto;
  height: auto;
  padding: 2.5px;
  border-radius: inherit;
  pointer-events: none;
  background: conic-gradient(from var(--oyhra-login-light-angle),
    transparent 0deg 235deg,
    rgba(0, 191, 255, .12) 255deg,
    rgba(0, 191, 255, .8) 290deg,
    #e6faff 315deg,
    rgba(0, 191, 255, .65) 330deg,
    transparent 355deg 360deg);
  -webkit-mask: linear-gradient(#fff 0 0) content-box,
                linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#fff 0 0) content-box,
        linear-gradient(#fff 0 0);
  mask-composite: exclude;
  filter: none;
  opacity: 1;
  animation: oyhra-login-frame-orbit 12s linear infinite;
}

body:has(section.for-login) :is(
  section.for-login, section.for-email-login, section.for-signup,
  section.for-forgot, section.for-login-with-email-link
) > * {
  position: relative;
  z-index: 1;
}

@keyframes oyhra-login-frame-orbit {
  from { --oyhra-login-light-angle: 0deg; }
  to { --oyhra-login-light-angle: 360deg; }
}

@media (max-width: 991px) {
  body:has(section.for-login)::after {
    background-position: 36% center;
  }
}

/* On phones the form covers most of the artwork: keep only its frame light. */
@media (max-width: 767px) {
  body:has(section.for-login)::after {
    content: none;
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:has(section.for-login)::after {
    content: none;
    display: none;
  }
  body:has(section.for-login) :is(
    section.for-login, section.for-email-login, section.for-signup,
    section.for-forgot, section.for-login-with-email-link
  )::before {
    animation: none !important;
    opacity: .35;
  }
}
