*, *::before, *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    :root {
      color-scheme: light;
      --bg: #eef1f4;
      --surface: #f5f5f7;
      --ink: #171719;
      --muted: #8f929c;
      --blue: #0500ff;
      --sky: #2d9fff;
      --green: #48ff91;
      --violet: #6868e8;
      --button-idle: #d9d9e6;
      --button-text-idle: #9294a8;
    }

    html {
      min-height: 100%;
      background: var(--bg);
    }

    body {
      min-height: 100vh;
      min-height: 100dvh;
      overflow: hidden;
      display: flex;
      justify-content: center;
      font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      background:
        linear-gradient(180deg, rgba(255, 255, 255, .72), rgba(238, 241, 244, .92)),
        var(--bg);
      color: var(--ink);
      -webkit-font-smoothing: antialiased;
      -webkit-text-size-adjust: 100%;
      -webkit-tap-highlight-color: transparent;
    }

    button {
      font: inherit;
    }

    .page {
      width: 100%;
      max-width: 480px;
      min-height: 100vh;
      min-height: 100dvh;
      display: flex;
      flex-direction: column;
      align-items: center;
      overflow-y: auto;
      padding: max(24px, env(safe-area-inset-top)) 28px max(20px, env(safe-area-inset-bottom));
      background: var(--surface);
      box-shadow: 0 24px 80px rgba(22, 26, 38, .08);
      -webkit-overflow-scrolling: touch;
    }

    .title-block {
      flex: 0 0 auto;
      padding-top: clamp(26px, 7vh, 64px);
      text-align: center;
    }

    .title-main {
      font-size: clamp(23px, 6vw, 31px);
      font-weight: 900;
      line-height: 1.08;
      letter-spacing: .08em;
      text-transform: uppercase;
    }

    .title-sub {
      margin-top: 6px;
      color: var(--muted);
      font-size: clamp(11px, 3vw, 14px);
      font-weight: 700;
      letter-spacing: .22em;
      text-transform: uppercase;
    }

    .shield-area {
      width: 100%;
      min-height: 0;
      flex: 1 1 auto;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: clamp(18px, 4vh, 42px) 0;
      margin-top: -8px;
    }

    .shield-image {
      width: clamp(178px, 55vw, 292px);
      height: auto;
      display: block;
      filter: drop-shadow(0 16px 34px rgba(5, 0, 255, .13));
    }

    .bottom-section {
      width: 100%;
      flex: 0 0 auto;
      padding-bottom: clamp(14px, 3vh, 32px);
    }

    .agree-row {
      display: flex;
      align-items: flex-start;
      gap: 12px;
      margin-bottom: clamp(16px, 3vh, 26px);
      cursor: pointer;
      user-select: none;
    }

    .radio-circle {
      width: 22px;
      height: 22px;
      min-width: 22px;
      border: 2px solid #3a3a5c;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 1px;
      transition: border-color .22s ease;
    }

    .radio-circle::after {
      content: "";
      width: 12px;
      height: 12px;
      border-radius: 50%;
      background: var(--violet);
      transform: scale(0);
      transition: transform .22s ease;
    }

    .agree-row.is-checked .radio-circle {
      border-color: var(--violet);
    }

    .agree-row.is-checked .radio-circle::after {
      transform: scale(1);
    }

    .agree-text {
      color: var(--ink);
      font-size: clamp(13px, 3.6vw, 16px);
      line-height: 1.5;
    }

    .agree-text strong {
      font-weight: 800;
    }

    .terms-link {
      color: var(--violet);
      text-decoration: underline;
      text-underline-offset: 3px;
    }

    .btn-continue {
      width: 100%;
      min-height: clamp(50px, 7vh, 58px);
      border: 0;
      border-radius: 16px;
      background: var(--button-idle);
      color: var(--button-text-idle);
      font-size: clamp(15px, 4vw, 18px);
      font-weight: 700;
      cursor: not-allowed;
      transition: transform .22s ease, box-shadow .22s ease, background .22s ease, color .22s ease;
    }

    .btn-continue.is-active {
      color: #fff;
      cursor: pointer;
      background: linear-gradient(135deg, #6b6cf6 0%, #8f7cf4 52%, #a78bfa 100%);
      box-shadow: 0 10px 28px rgba(104, 104, 232, .35);
    }

    .btn-continue.is-active:active {
      transform: scale(.98);
    }

    .terms-overlay {
      position: fixed;
      inset: 0;
      z-index: 20;
      display: flex;
      align-items: flex-end;
      justify-content: center;
      padding: 0;
      background: rgba(0, 0, 0, .48);
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transition: opacity .24s ease, visibility .24s ease;
    }

    .terms-overlay.is-open {
      opacity: 1;
      visibility: visible;
      pointer-events: auto;
    }

    .terms-sheet {
      width: 100%;
      max-width: 480px;
      max-height: 76vh;
      max-height: 76dvh;
      overflow-y: auto;
      padding: 24px 22px calc(24px + env(safe-area-inset-bottom, 0px));
      border-radius: 20px 20px 0 0;
      background: #fff;
      transform: translateY(100%);
      transition: transform .3s cubic-bezier(.16, 1, .3, 1);
      -webkit-overflow-scrolling: touch;
    }

    .terms-overlay.is-open .terms-sheet {
      transform: translateY(0);
    }

    .terms-handle {
      width: 36px;
      height: 4px;
      margin: 0 auto 18px;
      border-radius: 99px;
      background: #d6d6de;
    }

    .terms-title {
      margin-bottom: 14px;
      color: var(--ink);
      font-size: 18px;
      font-weight: 800;
    }

    .terms-text {
      color: #545762;
      font-size: 13.5px;
      line-height: 1.7;
    }

    .terms-text p {
      margin-bottom: 12px;
    }

    .terms-text ol {
      padding-left: 18px;
    }

    .terms-text li {
      margin-bottom: 8px;
    }

    .terms-close-btn {
      width: 100%;
      height: 48px;
      margin-top: 20px;
      border: 0;
      border-radius: 14px;
      background: #f0f0f5;
      color: var(--ink);
      font-size: 16px;
      font-weight: 700;
      cursor: pointer;
    }

    .status-toast {
      position: fixed;
      left: 50%;
      bottom: max(18px, env(safe-area-inset-bottom));
      z-index: 30;
      width: min(calc(100% - 32px), 360px);
      padding: 13px 16px;
      border-radius: 14px;
      background: rgba(24, 24, 28, .92);
      color: #fff;
      text-align: center;
      font-size: 14px;
      font-weight: 650;
      box-shadow: 0 12px 40px rgba(0, 0, 0, .2);
      opacity: 0;
      transform: translate(-50%, 12px);
      pointer-events: none;
      transition: opacity .2s ease, transform .2s ease;
    }

    .status-toast.is-visible {
      opacity: 1;
      transform: translate(-50%, 0);
    }

    @media (max-height: 620px) {
      .title-block {
        padding-top: 18px;
      }

      .shield-area {
        padding: 10px 0 12px;
      }

      .shield-image {
        width: 136px;
      }
    }

    @media (min-width: 760px) {
      body {
        align-items: center;
        padding: 28px;
      }

      .page {
        min-height: min(860px, calc(100vh - 56px));
        min-height: min(860px, calc(100dvh - 56px));
        border-radius: 28px;
      }
    }
