/* Shared homepage/tool account UI. */
.login-modal { --text:#faf6ff; --accent:#b87cff; --accent-soft:#d8b9ff; --ease:cubic-bezier(.22,1,.36,1); --surface-bg:rgba(35,21,47,.66); --surface-line:rgba(245,232,255,.2); color:#faf6ff; font-family:"Dongyuan Song One","Songti SC","Noto Serif CJK SC",serif; font-size:calc(16 * var(--ui-px, 1px)); line-height:normal; }
.login-modal *, .login-modal *::before, .login-modal *::after { box-sizing:border-box; }
.login-modal button,.login-modal a { font-family:inherit; font-weight:400; letter-spacing:normal; line-height:normal; }
.login-modal a { text-decoration:none; }
.login-panel { scrollbar-gutter:stable; }
body.is-modal-open { overflow: hidden; }
.login-modal {
  position: fixed;
  z-index: 40;
  inset: 0;
  display: grid;
  place-items: center;
  padding: calc(28 * var(--ui-px, 1px));
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  transition: visibility 0s linear 420ms, opacity 280ms ease;
}
.login-modal.is-open {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
  transition-delay: 0s;
}
.login-modal__backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: rgba(3, 2, 7, 0.76);
  backdrop-filter: blur(calc(14 * var(--ui-px, 1px))) saturate(0.76);
  -webkit-backdrop-filter: blur(calc(14 * var(--ui-px, 1px))) saturate(0.76);
  cursor: default;
}
.login-panel {
  --login-tilt-x: 0deg;
  --login-tilt-y: 0deg;
  position: relative;
  display: grid;
  grid-template-columns: minmax(calc(270 * var(--ui-px, 1px)), 0.88fr) minmax(calc(390 * var(--ui-px, 1px)), 1.12fr);
  width: min(calc(880 * var(--ui-px, 1px)), calc(calc(100 * 1vw) - calc(56 * var(--ui-px, 1px))));
  min-height: calc(560 * var(--ui-px, 1px));
  overflow: hidden;
  border: calc(1 * var(--ui-px, 1px)) solid rgba(216, 185, 255, 0.22);
  border-radius: calc(28 * var(--ui-px, 1px));
  background: rgba(16, 11, 24, 0.96);
  box-shadow: 0 calc(36 * var(--ui-px, 1px)) calc(120 * var(--ui-px, 1px)) rgba(0, 0, 0, 0.72), 0 0 calc(58 * var(--ui-px, 1px)) rgba(139, 79, 218, 0.13);
  opacity: 0;
  outline: none;
  transform: perspective(calc(1400 * var(--ui-px, 1px))) translateY(calc(26 * var(--ui-px, 1px))) scale(0.975) rotateX(var(--login-tilt-x)) rotateY(var(--login-tilt-y));
  transform-style: preserve-3d;
  will-change: transform;
  transition: opacity 260ms ease, transform 380ms var(--ease), box-shadow 380ms var(--ease);
}
.login-modal.is-open .login-panel {
  opacity: 1;
  transform: perspective(calc(1400 * var(--ui-px, 1px))) translateY(0) scale(1) rotateX(var(--login-tilt-x)) rotateY(var(--login-tilt-y));
}
.login-panel__close {
  position: absolute;
  z-index: 4;
  top: calc(20 * var(--ui-px, 1px));
  right: calc(20 * var(--ui-px, 1px));
  width: calc(38 * var(--ui-px, 1px));
  height: calc(38 * var(--ui-px, 1px));
  padding: 0;
  border: calc(1 * var(--ui-px, 1px)) solid rgba(255, 255, 255, 0.11);
  border-radius: 50%;
  background: rgba(17, 12, 25, 0.62);
  cursor: pointer;
  transition: border-color 220ms ease, background 220ms ease, transform 350ms var(--ease);
}
.login-panel__close:hover {
  border-color: rgba(216, 185, 255, 0.45);
  background: rgba(77, 48, 109, 0.58);
  transform: rotate(90deg);
}
.login-panel__close span::before,
.login-panel__close span::after {
  position: absolute;
  top: calc(18 * var(--ui-px, 1px));
  left: calc(11 * var(--ui-px, 1px));
  width: calc(15 * var(--ui-px, 1px));
  height: calc(1 * var(--ui-px, 1px));
  background: #f8f2ff;
  content: "";
}
.login-panel__close span::before { transform: rotate(45deg); }
.login-panel__close span::after { transform: rotate(-45deg); }
.login-panel__art {
  position: relative;
  min-height: calc(560 * var(--ui-px, 1px));
  overflow: hidden;
}
.login-panel__art picture {
  display: block;
  width: 100%;
  height: 100%;
}
.login-panel__art img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
  filter: saturate(0.88) brightness(0.72);
  transform: scale(1.035);
}
.login-panel__art-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(9, 6, 14, 0.05) 24%, rgba(10, 6, 16, 0.92) 100%);
}
.login-panel__content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: calc(56 * var(--ui-px, 1px)) calc(64 * var(--ui-px, 1px)) calc(44 * var(--ui-px, 1px));
}
.login-panel__brand {
  display: flex;
  gap: calc(10 * var(--ui-px, 1px));
  align-items: center;
  margin-bottom: calc(35 * var(--ui-px, 1px));
  color: #a99bb5;
  font-size: calc(9 * var(--ui-px, 1px));
  letter-spacing: 0.19em;
}
.login-panel__brand img { width: calc(32 * var(--ui-px, 1px)); height: calc(32 * var(--ui-px, 1px)); object-fit: contain; }
.login-panel__eyebrow { color: var(--accent); font-size: calc(10 * var(--ui-px, 1px)); letter-spacing: 0.24em; }
.login-panel__content h2 { margin: calc(9 * var(--ui-px, 1px)) 0 0; font-size: calc(38 * var(--ui-px, 1px)); font-weight: 400; letter-spacing: 0.02em; }
.login-panel__intro { margin: calc(10 * var(--ui-px, 1px)) 0 calc(30 * var(--ui-px, 1px)); color: #9e93aa; font-size: calc(13 * var(--ui-px, 1px)); }
.login-form { display: flex; flex-direction: column; gap: calc(20 * var(--ui-px, 1px)); }
.login-field { display: flex; gap: calc(9 * var(--ui-px, 1px)); flex-direction: column; color: #d4cbdc; font-size: calc(12 * var(--ui-px, 1px)); }
.login-field__control {
  display: flex;
  height: calc(50 * var(--ui-px, 1px));
  align-items: center;
  border: calc(1 * var(--ui-px, 1px)) solid rgba(255, 255, 255, 0.11);
  border-radius: calc(13 * var(--ui-px, 1px));
  background: rgba(255, 255, 255, 0.035);
  transition: border-color 220ms ease, background 220ms ease, box-shadow 220ms ease;
}
.login-field__control:focus-within {
  border-color: rgba(184, 124, 255, 0.66);
  background: rgba(184, 124, 255, 0.055);
  box-shadow: 0 0 0 calc(3 * var(--ui-px, 1px)) rgba(184, 124, 255, 0.08);
}
.login-field__control > svg {
  width: calc(18 * var(--ui-px, 1px));
  height: calc(18 * var(--ui-px, 1px));
  margin-left: calc(16 * var(--ui-px, 1px));
  fill: none;
  stroke: #82768e;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5;
}
.login-field input {
  min-width: 0;
  flex: 1;
  height: 100%;
  padding: 0 calc(14 * var(--ui-px, 1px));
  border: 0;
  outline: 0;
  color: var(--text);
  background: transparent;
  font: calc(13 * var(--ui-px, 1px))/1 sans-serif;
}
.login-field input::placeholder { color: #6f6678; }
.login-field__reveal {
  display: grid;
  width: calc(46 * var(--ui-px, 1px));
  height: 100%;
  place-items: center;
  padding: 0;
  border: 0;
  color: #82768e;
  background: transparent;
  cursor: pointer;
}
.login-field__reveal svg { width: calc(18 * var(--ui-px, 1px)); fill: none; stroke: currentColor; stroke-width: 1.5; }
.login-field__reveal[aria-pressed="true"] { color: var(--accent-soft); }
.login-form__options {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(-4 * var(--ui-px, 1px));
  font-size: calc(11 * var(--ui-px, 1px));
}
.login-check { display: flex; gap: calc(8 * var(--ui-px, 1px)); align-items: center; color: #978d9f; cursor: pointer; }
.login-check input { position: absolute; width: calc(1 * var(--ui-px, 1px)); height: calc(1 * var(--ui-px, 1px)); opacity: 0; }
.login-check span { display: grid; width: calc(15 * var(--ui-px, 1px)); height: calc(15 * var(--ui-px, 1px)); place-items: center; border: calc(1 * var(--ui-px, 1px)) solid #62596b; border-radius: calc(4 * var(--ui-px, 1px)); }
.login-check input:checked + span { border-color: var(--accent); background: var(--accent); }
.login-check input:checked + span::after { width: calc(6 * var(--ui-px, 1px)); height: calc(3 * var(--ui-px, 1px)); border-bottom: calc(1.5 * var(--ui-px, 1px)) solid #fff; border-left: calc(1.5 * var(--ui-px, 1px)) solid #fff; content: ""; transform: translateY(calc(-1 * var(--ui-px, 1px))) rotate(-45deg); }
.login-check input:focus-visible + span { outline: calc(2 * var(--ui-px, 1px)) solid var(--accent-soft); outline-offset: calc(3 * var(--ui-px, 1px)); }
.login-form__text-button,
.login-panel__register button {
  padding: 0;
  border: 0;
  color: var(--accent-soft);
  background: none;
  font-size: inherit;
  cursor: pointer;
}
.login-form__text-button:hover,
.login-panel__register button:hover { color: #fff; }
.login-form__submit {
  display: flex;
  height: calc(52 * var(--ui-px, 1px));
  align-items: center;
  justify-content: space-between;
  padding: 0 calc(20 * var(--ui-px, 1px));
  border: calc(1 * var(--ui-px, 1px)) solid rgba(224, 200, 255, 0.32);
  border-radius: calc(13 * var(--ui-px, 1px));
  color: #fff;
  background: linear-gradient(100deg, #7c42c6, #b366ee);
  box-shadow: 0 calc(12 * var(--ui-px, 1px)) calc(34 * var(--ui-px, 1px)) rgba(127, 60, 200, 0.28);
  cursor: pointer;
  transition: filter 220ms ease, transform 350ms var(--ease), box-shadow 350ms var(--ease);
}
.login-form__submit:hover { filter: brightness(1.08); transform: translateY(calc(-2 * var(--ui-px, 1px))); box-shadow: 0 calc(17 * var(--ui-px, 1px)) calc(40 * var(--ui-px, 1px)) rgba(127, 60, 200, 0.4); }
.login-form__status { min-height: calc(17 * var(--ui-px, 1px)); margin: calc(-8 * var(--ui-px, 1px)) 0 0; color: #b99ecb; font-size: calc(11 * var(--ui-px, 1px)); line-height: 1.5; }
.login-panel__register { margin: calc(14 * var(--ui-px, 1px)) 0 0; color: #817789; font-size: calc(11 * var(--ui-px, 1px)); text-align: center; }
@media (max-width: 600px) {
.login-modal { padding: calc(14 * var(--ui-px, 1px)); }
.login-panel { grid-template-columns: minmax(0, 1fr); width: min(calc(430 * var(--ui-px, 1px)), calc(calc(100 * 1vw) - calc(28 * var(--ui-px, 1px)))); min-width: 0; min-height: 0; max-height: calc(calc(100 * 1vh) - calc(28 * var(--ui-px, 1px))); overflow-x: hidden; overflow-y: auto; border-radius: calc(22 * var(--ui-px, 1px)); }
.login-panel__art { min-height: calc(122 * var(--ui-px, 1px)); }
.login-panel__art picture { height: calc(180 * var(--ui-px, 1px)); }
.login-panel__art img { object-position: 50% 50%; }
.login-panel__content { min-width: 0; padding: calc(30 * var(--ui-px, 1px)) calc(24 * var(--ui-px, 1px)) calc(28 * var(--ui-px, 1px)); }
.login-form, .login-field, .login-field__control { min-width: 0; width: 100%; }
.login-panel__brand { display: none; }
.login-panel__content h2 { font-size: calc(31 * var(--ui-px, 1px)); }
.login-panel__intro { margin-bottom: calc(24 * var(--ui-px, 1px)); }
.login-panel__close { top: calc(12 * var(--ui-px, 1px)); right: calc(12 * var(--ui-px, 1px)); }
}
@media (max-width: 600px) {
.login-panel { max-height: calc(calc(100 * 1dvh) - calc(24 * var(--ui-px, 1px))); }
.login-panel__art { display: block; min-height: 0; height: clamp(calc(90 * var(--ui-px, 1px)), calc(20 * 1dvh), calc(180 * var(--ui-px, 1px))); }
.login-panel__art picture { height: 100%; }
.login-panel__content { padding: calc(28 * var(--ui-px, 1px)) calc(22 * var(--ui-px, 1px)) calc(20 * var(--ui-px, 1px)); }
.login-panel__intro { margin-bottom: calc(16 * var(--ui-px, 1px)); }
.login-form { gap: calc(12 * var(--ui-px, 1px)); }
}
@media (max-width: 600px) and (max-height: 650px) {
.login-panel__content { padding: calc(16 * var(--ui-px, 1px)) calc(20 * var(--ui-px, 1px)); }
.login-panel__content h2 { font-size: calc(26 * var(--ui-px, 1px)); }
.login-panel__intro { margin: calc(6 * var(--ui-px, 1px)) 0 calc(12 * var(--ui-px, 1px)); }
.login-field__control { height: calc(42 * var(--ui-px, 1px)); }
.login-panel__register { margin-top: calc(8 * var(--ui-px, 1px)); }
}
.login-panel [hidden] { display: none !important; }
.login-panel { max-height: calc(calc(100 * 1dvh) - calc(28 * var(--ui-px, 1px))); overflow-y: auto; }
.login-panel .account-logout { display: block; margin: calc(18 * var(--ui-px, 1px)) auto 0; }
.login-form__submit:disabled { opacity: .55; cursor: wait; }
.login-panel[data-auth-mode=register] .login-panel__intro { margin-bottom: calc(12 * var(--ui-px, 1px)); }
@media (max-width:600px) {
.login-panel[data-auth-mode=register] .login-panel__art,
  .login-panel[data-auth-mode=profile] .login-panel__art { height: calc(90 * var(--ui-px, 1px)); }
}
.login-email-code { display: flex; gap: calc(8 * var(--ui-px, 1px)); align-items: center; }
.login-email-code .login-field__control { flex: 1; min-width: 0; }
.login-code-send { flex-shrink: 0; border: calc(1 * var(--ui-px, 1px)) solid var(--surface-line); border-radius: calc(12 * var(--ui-px, 1px)); padding: calc(12 * var(--ui-px, 1px)); background: var(--surface-bg); color: #caa1ff; cursor: pointer; font: inherit; }
.login-code-send:disabled { opacity: .55; cursor: default; }
[data-test-mailbox] { color: #caa1ff; font-size: calc(12 * var(--ui-px, 1px)); }
.login-panel[data-auth-mode=register] .login-panel__content { padding-top: calc(24 * var(--ui-px, 1px)); padding-bottom: calc(24 * var(--ui-px, 1px)); }
.login-panel[data-auth-mode=register] .login-panel__brand { display: none; }
.login-field__reveal { flex-shrink:0; }
.login-field input { user-select:text; -webkit-user-select:text; touch-action:auto; cursor:text; }
.login-field input::selection { background:#8054ae; color:#fff; }
.login-field input::-ms-reveal { display:none; }
.login-modal { z-index:150; }
@media(prefers-reduced-motion:reduce) { .login-modal,.login-modal * { transition-duration:.01ms !important; scroll-behavior:auto !important; } }

.login-field__error { color:#f0a8b7; font:calc(12 * var(--ui-px, 1px))/1.5 system-ui,-apple-system,"Segoe UI",sans-serif; }
.login-field.has-error .login-field__control { border-color:#ef9db0; box-shadow:0 0 0 calc(2 * var(--ui-px, 1px)) rgba(239,157,176,.12); }
