    :root {
      --bg-paper: #f5f1e8;
      --bg-tint: #eef9f4;
      --ink: #1f2a30;
      --ink-soft: rgba(31, 42, 48, 0.72);
      --line: rgba(104, 122, 112, 0.24);
      --glass: rgba(255, 252, 247, 0.78);
      --glass-strong: rgba(255, 252, 247, 0.92);
      --brand: #0f766e;
      --brand-2: #1d9a6c;
      --err: #b42318;
      --radius-xl: 28px;
      --radius-lg: 18px;
      --radius-md: 14px;
      --shadow-soft: 0 22px 48px rgba(37, 52, 59, 0.16);
      --shadow-card: 0 16px 34px rgba(37, 52, 59, 0.12);
    }
    * { box-sizing: border-box; }
    html, body { min-height: 100%; }
    body {
      margin: 0;
      color: var(--ink);
      font-family: "Avenir Next", "PingFang SC", "Hiragino Sans GB", sans-serif;
      background:
        radial-gradient(720px 420px at 14% 8%, rgba(255, 238, 210, 0.86), transparent 60%),
        radial-gradient(760px 420px at 88% 10%, rgba(212, 244, 225, 0.88), transparent 58%),
        linear-gradient(150deg, var(--bg-paper) 0%, #f6f8f2 46%, var(--bg-tint) 100%);
      display: grid;
      place-items: center;
      padding: 24px;
      overflow: hidden;
      position: relative;
    }
    body::before {
      content: "";
      position: fixed;
      inset: 0;
      background:
        linear-gradient(rgba(20, 30, 38, 0.018) 1px, transparent 1px),
        linear-gradient(90deg, rgba(20, 30, 38, 0.018) 1px, transparent 1px);
      background-size: 28px 28px;
      pointer-events: none;
      z-index: 0;
    }
    main {
      width: min(460px, 100%);
      border-radius: var(--radius-xl);
      border: 1px solid var(--line);
      background:
        linear-gradient(130deg, var(--glass-strong), rgba(247, 250, 246, 0.8)),
        var(--glass);
      box-shadow: var(--shadow-soft);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      padding: 30px 28px 24px;
      position: relative;
      z-index: 1;
      animation: card-rise 0.55s ease-out both;
    }
    h1 {
      margin: 0;
      font-size: clamp(1.3rem, 2.5vw, 1.65rem);
      line-height: 1.2;
      letter-spacing: 0.01em;
    }
    .subtitle {
      margin: 10px 0 0;
      color: var(--ink-soft);
      line-height: 1.6;
      font-size: 0.95rem;
    }
    form {
      margin-top: 18px;
      display: grid;
      gap: 14px;
    }
    label {
      display: grid;
      gap: 7px;
      font-size: 0.9rem;
      font-weight: 700;
      color: rgba(31, 42, 48, 0.88);
    }
    input {
      min-height: 46px;
      border-radius: var(--radius-md);
      border: 1px solid rgba(104, 122, 112, 0.3);
      background: rgba(255, 255, 255, 0.82);
      padding: 0 14px;
      font-size: 1rem;
      color: var(--ink);
      outline: none;
      transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, transform 0.2s ease;
    }
    input::placeholder {
      color: rgba(31, 42, 48, 0.38);
    }
    input:focus {
      border-color: rgba(15, 118, 110, 0.6);
      background: rgba(255, 255, 255, 0.94);
      box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.14);
      transform: translateY(-1px);
    }
    button {
      margin-top: 2px;
      min-height: 48px;
      border: 0;
      border-radius: var(--radius-md);
      background: linear-gradient(135deg, var(--brand), var(--brand-2));
      color: #fff;
      font-size: 0.98rem;
      font-weight: 800;
      letter-spacing: 0.01em;
      cursor: pointer;
      box-shadow: var(--shadow-card);
      transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease;
    }
    button:hover {
      transform: translateY(-1px);
      box-shadow: 0 18px 30px rgba(15, 118, 110, 0.28);
      filter: saturate(1.05);
    }
    button:active {
      transform: translateY(1px) scale(0.995);
    }
    .error {
      margin: 14px 0 0;
      padding: 10px 12px;
      border-radius: 12px;
      border: 1px solid rgba(180, 35, 24, 0.24);
      background: rgba(180, 35, 24, 0.08);
      color: var(--err);
      font-size: 0.92rem;
      line-height: 1.4;
      animation: error-fade 0.28s ease-out both;
    }
    @keyframes card-rise {
      from {
        opacity: 0;
        transform: translateY(10px) scale(0.992);
      }
      to {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }
    @keyframes error-fade {
      from { opacity: 0; transform: translateY(-4px); }
      to { opacity: 1; transform: translateY(0); }
    }
    @media (max-width: 520px) {
      body { padding: 16px; }
      main { padding: 24px 18px 20px; border-radius: 22px; }
      h1 { font-size: 1.32rem; }
    }
