:root {
  --blue: #2563eb;
  --blue-dark: #123b8f;
  --ink: #102654;
  --muted: #60708d;
  --line: #dbe3f0;
  --soft: #f4f8ff;
}

* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; color: #17213a; background: radial-gradient(circle at 18% 13%, rgba(255,255,255,.95) 0 5%, transparent 24%), radial-gradient(circle at 83% 78%, rgba(255,255,255,.9) 0 4%, transparent 25%), linear-gradient(150deg, #fff9fb 0%, #f7f9ff 48%, #f4f8ff 100%); font-family: "Noto Sans SC", "Microsoft YaHei", Arial, sans-serif; }
button, input { font: inherit; }
.auth-layout { position: relative; z-index: 1; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 42px 20px; }
.auth-header { width: min(100%, 760px); margin: 0 auto 24px; text-align: center; }
.auth-brand { display: inline-block; color: var(--ink); text-decoration: none; font-size: clamp(28px, 4vw, 40px); font-weight: 900; letter-spacing: .06em; }
.auth-header p { margin: 13px auto 0; color: #596984; font-size: clamp(13px, 1.7vw, 15px); line-height: 1.75; }
.auth-panel { width: 100%; display: grid; place-items: center; }
.auth-card { width: min(100%, 470px); padding: 34px; background: #fff; border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 22px 60px rgba(31, 78, 150, .12); }
.sakura-decoration { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; color: #f3a8bd; }
.sakura-decoration span { position: absolute; display: block; opacity: .24; line-height: 1; filter: drop-shadow(0 5px 8px rgba(226, 125, 157, .12)); }
.sakura-decoration span:nth-child(1) { left: 5%; top: 8%; font-size: 54px; transform: rotate(-18deg); }
.sakura-decoration span:nth-child(2) { left: 15%; top: 36%; font-size: 25px; transform: rotate(22deg); opacity: .16; }
.sakura-decoration span:nth-child(3) { left: 8%; bottom: 9%; font-size: 38px; transform: rotate(12deg); }
.sakura-decoration span:nth-child(4) { left: 28%; bottom: 5%; font-size: 20px; transform: rotate(-30deg); opacity: .18; }
.sakura-decoration span:nth-child(5) { right: 8%; top: 10%; font-size: 34px; transform: rotate(24deg); }
.sakura-decoration span:nth-child(6) { right: 18%; top: 29%; font-size: 19px; transform: rotate(-12deg); opacity: .16; }
.sakura-decoration span:nth-child(7) { right: 5%; bottom: 11%; font-size: 58px; transform: rotate(17deg); }
.sakura-decoration span:nth-child(8) { right: 29%; bottom: 4%; font-size: 24px; transform: rotate(-24deg); opacity: .18; }
.auth-tabs { display: grid; grid-template-columns: 1fr 1fr; padding: 4px; margin-bottom: 30px; background: var(--soft); border-radius: 10px; }
.auth-tabs button { border: 0; border-radius: 8px; padding: 11px; color: var(--muted); background: transparent; cursor: pointer; font-weight: 700; }
.auth-tabs button[aria-selected="true"] { color: var(--blue); background: #fff; box-shadow: 0 4px 14px rgba(37, 99, 235, .1); }
.form-heading { margin-bottom: 24px; }
.form-heading h2 { margin: 0; color: var(--ink); font-size: 28px; }
.form-heading p { margin: 7px 0 0; color: var(--muted); font-size: 14px; }
.auth-form > label:not(.check-row) { display: block; margin-top: 17px; }
.auth-form label > span:first-child { display: block; margin-bottom: 8px; color: #30415f; font-size: 13px; font-weight: 700; }
.auth-form input:not([type="checkbox"]) { width: 100%; min-height: 48px; padding: 0 13px; border: 1px solid var(--line); border-radius: 8px; outline: none; transition: border-color .2s, box-shadow .2s; }
.auth-form input:not([type="checkbox"]):focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.auth-form small { display: block; margin-top: 7px; color: var(--muted); font-size: 11px; }
.check-row { display: grid; grid-template-columns: 18px 1fr; gap: 9px; align-items: start; margin-top: 15px; color: #4d5e79; font-size: 12px; line-height: 1.55; }
.check-row input { margin: 2px 0 0; accent-color: var(--blue); }
.check-row span { margin: 0 !important; font-weight: 400 !important; }
.form-message { min-height: 20px; margin: 13px 0 4px; color: #c13d3d; font-size: 12px; line-height: 1.5; }
.form-message.success { color: #0f766e; }
.primary-button { width: 100%; min-height: 50px; border: 0; border-radius: 8px; color: #fff; background: var(--blue); cursor: pointer; font-weight: 800; box-shadow: 0 10px 22px rgba(37,99,235,.22); }
.primary-button:hover { background: #1d54cd; }
.primary-button:disabled { cursor: wait; opacity: .65; }
.guest-button { display: grid; place-items: center; width: 100%; min-height: 46px; margin-top: 12px; border: 1px solid #b9c9e4; border-radius: 8px; color: #31517f; background: #fff; text-decoration: none; font-size: 13px; font-weight: 700; }
.guest-button:hover { border-color: var(--blue); color: var(--blue); background: #f8fbff; }
.auth-footnote { margin: 22px 0 0; padding-top: 20px; border-top: 1px solid var(--line); color: var(--muted); text-align: center; font-size: 11px; line-height: 1.6; }

@media (max-width: 820px) {
  .auth-layout { justify-content: flex-start; padding: 32px 14px 28px; }
  .auth-header { margin-bottom: 20px; }
  .auth-brand { letter-spacing: .03em; }
  .auth-header p { max-width: 360px; margin-top: 10px; }
  .auth-card { padding: 24px 20px; border-radius: 14px; }
  .sakura-decoration span:nth-child(1), .sakura-decoration span:nth-child(7) { font-size: 38px; }
}
