/* 极租科技：纯白磨砂玻璃加载层。原版双飘带路径；无外部资源。 */
.page-loading-overlay {
  --jz-logo-height: 138px;
  --jz-white: .56;
  --jz-shape-blur: 15px;
  --jz-cycle: 1.5s;
  --jz-mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjIzIDMgMTM0IDIxMCI+PGcgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0gMTUzIDcgTCA0NyA2OCBDIDM3IDc0IDMyIDgzIDMzIDk1IEMgMzQgMTA4IDQ0IDExNyA1NyAxMjEgQyA2MiAxMjMgNjcgMTI1IDcyIDEyNiBDIDY1IDEyMiA2MCAxMTggNTkgMTEzIEMgNTcgMTA4IDYwIDEwNCA2NCAxMDEgQyA2OCA5OCA3NSA5NiA4MiA5MiBMIDEzNiA2MiBDIDE0NyA1NiAxNTMgNDUgMTUzIDMzIFoiLz48cGF0aCBkPSJNIDk1IDk1IEMgMTA2IDk2IDExNiA5OCAxMjYgOTkgQyAxMzkgMTAxIDE0NyAxMDkgMTQ4IDExOSBDIDE0OSAxMzEgMTQzIDE0MiAxMzQgMTQ4IEwgMjcgMjA5IEwgMjcgMTgzIEMgMjggMTcyIDM1IDE2MyA0NSAxNTcgTCAxMDkgMTIwIEMgMTE2IDExNiAxMjAgMTExIDExOCAxMDcgQyAxMTYgMTAzIDEwNyA5OSA5NSA5NSBaIi8+PC9nPjwvc3ZnPg==");
  position: fixed; inset: 0; z-index: 9998;
  display: grid; place-items: center;
  visibility: hidden; opacity: 0; pointer-events: none;
  transition: opacity 180ms ease, visibility 180ms;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
.page-loading-overlay[data-loading-state] { visibility: visible; opacity: 1; pointer-events: none; }
.jz-loading__center { position: relative; display: grid; place-items: center; }
.jz-logo {
  position: relative; height: var(--jz-logo-height);
  width: calc(var(--jz-logo-height) * 134 / 210);
}
.jz-logo__material, .jz-logo__grain, .jz-logo__light { position: absolute; inset: 0; }
.jz-logo__material, .jz-logo__grain, .jz-logo__light {
  -webkit-mask-image: var(--jz-mask); mask-image: var(--jz-mask);
  -webkit-mask-size: 100% 100%; mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
}
/* White, not grey paint: translucent faces let the page remain visible. */
.jz-logo__material {
  background: linear-gradient(148deg,
    rgba(255,255,255,calc(var(--jz-white) + .22)) 0%,
    rgba(255,255,255,var(--jz-white)) 29%,
    rgba(255,255,255,calc(var(--jz-white) - .13)) 54%,
    rgba(255,255,255,calc(var(--jz-white) + .13)) 100%);
  -webkit-backdrop-filter: blur(var(--jz-shape-blur)) saturate(0) brightness(1.1);
  backdrop-filter: blur(var(--jz-shape-blur)) saturate(0) brightness(1.1);
}
.jz-logo__shadow, .jz-logo__edge { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.jz-logo__shadow {
  filter: drop-shadow(0 1px 1px rgba(17,24,32,.23)) drop-shadow(0 6px 10px rgba(17,24,32,.12));
}
.jz-logo__grain {
  background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiI+PGZpbHRlciBpZD0ibiI+PGZlVHVyYnVsZW5jZSB0eXBlPSJmcmFjdGFsTm9pc2UiIGJhc2VGcmVxdWVuY3k9Ii44MiIgbnVtT2N0YXZlcz0iMyIgc3RpdGNoVGlsZXM9InN0aXRjaCIvPjwvZmlsdGVyPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbHRlcj0idXJsKCNuKSIgb3BhY2l0eT0iLjUiLz48L3N2Zz4=") repeat; background-size: 72px 72px;
  opacity: .095; pointer-events: none;
}
.jz-logo__light { overflow: hidden; }
.jz-logo__sweep {
  position: absolute; left: -15%; right: -15%; height: 86%; top: 106%;
  background: linear-gradient(to top, rgba(224,224,224,0), rgba(224,224,224,.05) 22%, rgba(224,224,224,.28) 55%, rgba(224,224,224,.08) 79%, rgba(224,224,224,0));
  transform: translateY(0); animation: jz-flow var(--jz-cycle) linear infinite;
  animation-play-state: paused; will-change: transform;
}
.page-loading-overlay[data-loading-state] .jz-logo__sweep { animation-play-state: running; }
.page-loading-overlay[data-loading-paused="true"] .jz-logo__sweep { animation-play-state: paused; }
.jz-loading__a11y { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
@keyframes jz-flow { 0% { transform: translateY(0); } 100% { transform: translateY(-252%); } }
@media (max-width: 600px) { .page-loading-overlay { --jz-logo-height: 116px; } }
@media (prefers-reduced-motion: reduce) {
  .page-loading-overlay { transition: none; }
  .jz-logo__sweep { animation: none !important; opacity: 0; }
}
@media (prefers-contrast: more) { .page-loading-overlay { --jz-white: .76; } }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .jz-logo__material { background: rgba(255,255,255,.85); }
}

.page-loading-overlay[data-loading-state="complete"] { opacity: 0; }
.page-loading-overlay[data-loading-state="complete"] .jz-logo__sweep { animation-play-state: paused; }
:is(.content, .mobile-content) { transition: opacity 220ms ease-in-out; }
:is(.content, .mobile-content).route-content-leaving { opacity: 0.55; }
@keyframes portal-route-enter { from { opacity: 0.55; } to { opacity: 1; } }
:is(.content, .mobile-content).route-content-entering { animation: portal-route-enter 280ms ease-in-out; }
@media (prefers-reduced-motion: reduce) {
  :is(.content, .mobile-content) { transition: none; }
  :is(.content, .mobile-content).route-content-entering { animation: none; }
}

:is(dialog, [role="dialog"], .mobile-shell, .app-shell, .login-page) :is(button, input[type="submit"]) {transition:background-color 180ms ease,border-color 180ms ease,color 180ms ease,opacity 180ms ease;}
.dialog-submit-disabled {background:#e2e6e9 !important;border-color:#d7dde2 !important;color:#6d7883 !important;box-shadow:none !important;opacity:1 !important;cursor:wait !important;}
button.dialog-submit-pending {position:relative;color:transparent !important;}
button.dialog-submit-pending > * {opacity:0;}
button.dialog-submit-pending::before {content:"";position:absolute;top:calc(50% - 7px);left:calc(50% - var(--submit-offset,35px));width:12px;height:12px;border:2px solid #bac2ca;border-top-color:#667480;border-radius:50%;animation:dialog-submit-spin 750ms linear infinite,dialog-submit-appear 180ms ease;}
button.dialog-submit-pending::after {content:attr(data-pending-label);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-left:18px;color:#667480;font-size:13px;animation:dialog-submit-appear 180ms ease;}
@keyframes dialog-submit-spin {to {transform:rotate(360deg);}}
@keyframes dialog-submit-appear {from {opacity:0;}to {opacity:1;}}
.login-page .dialog-submit-pending {--submit-offset:45px;}
@media (prefers-reduced-motion: reduce) {
  :is(dialog, [role="dialog"], .mobile-shell, .app-shell, .login-page) :is(button, input[type="submit"]) {transition:none;}
  button.dialog-submit-pending::before,button.dialog-submit-pending::after {animation:none;}
}
