.auth-page { min-height: 100vh; }.auth-shell { width: min(100% - 32px, 560px); margin: 0 auto; padding: 48px 0 96px; }.auth-card { padding-top: 32px; border-top: 1px solid var(--ink); }.auth-card h1 { margin: 10px 0 14px; font-size: clamp(30px, 6vw, 48px); line-height: 1.35; }.auth-lead { margin: 0 0 28px; color: #3a3633; font-size: 15px; line-height: 1.9; }.auth-card form { display: grid; gap: 12px; }.auth-card label { font-size: 14px; font-weight: 700; }.auth-card input { width: 100%; padding: 13px 14px; border: 1px solid var(--ink); border-radius: 2px; background: #fffdf9; color: var(--ink); font: 16px "Space Mono", monospace; }.auth-card input:focus { outline: 3px solid #f2c7b8; outline-offset: 1px; }.auth-card .button { justify-content: center; width: 100%; margin-top: 6px; cursor: pointer; }.otp-message { margin: 0 0 4px; color: var(--muted); font-size: 14px; }.text-action { width: fit-content; border: 0; border-bottom: 1px solid currentColor; padding: 3px 0; background: none; color: var(--ink); cursor: pointer; font-size: 13px; }.form-status { min-height: 1.8em; margin: 18px 0 0; color: var(--red); font-size: 14px; }.auth-note { margin: 24px 0 0; color: var(--muted); font-size: 12px; line-height: 1.8; }.auth-card > .button { margin-top: 8px; }.auth-card > form:last-child { margin-top: 18px; }.otp-message { margin: -12px 0 20px; word-break: break-all; }.otp-boxes { display: flex; gap: 8px; }.auth-card .otp-box { flex: 1 1 0; min-width: 0; height: 60px; padding: 0; text-align: center; font-size: 24px; font-weight: 700; }.auth-card .otp-box.is-filled { background: #fff3ec; }.auth-card .otp-box:disabled { opacity: .6; }.otp-link-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 4px; }.text-action:disabled { color: var(--muted); cursor: default; }
.form-status.is-info { color: var(--muted); }
.auth-note a { border-bottom: 1px solid currentColor; }.auth-note a:hover { color: var(--red); }

/* 初回登録フォーム（welcome.php） */
.auth-card .welcome-form { gap: 22px; }.field { display: grid; gap: 8px; }.field-tag { margin-left: 6px; padding: 1px 6px; border-radius: 2px; background: var(--ink); color: var(--paper); font-size: 11px; font-weight: 700; vertical-align: 1px; }.field-tag.is-optional { background: transparent; border: 1px solid var(--line); color: var(--muted); }.field-hint { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
.auth-card textarea { width: 100%; padding: 13px 14px; border: 1px solid var(--ink); border-radius: 2px; background: #fffdf9; color: var(--ink); font: 15px/1.8 "Zen Kaku Gothic New", sans-serif; resize: vertical; }.auth-card textarea:focus { outline: 3px solid #f2c7b8; outline-offset: 1px; }.auth-card #display_name { font-family: "Zen Kaku Gothic New", sans-serif; }
.field-checks { display: grid; gap: 12px; padding: 16px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }.auth-card .check { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; line-height: 1.7; cursor: pointer; }.auth-card .check input { flex: none; width: 18px; height: 18px; margin: 3px 0 0; padding: 0; accent-color: var(--bright-red); }.check a { border-bottom: 1px solid currentColor; }.check a:hover { color: var(--red); }
.form-errors { margin: 0 0 24px; padding: 12px 16px 12px 32px; border-left: 3px solid var(--red); background: #fff3ec; color: var(--red); font-size: 14px; line-height: 1.8; }.welcome-logout .auth-note { word-break: break-all; }

/* 利用規約の改定時の再同意（welcome.php） */
.terms-changes { margin: -8px 0 28px; padding-left: 1.4em; color: #3a3633; font-size: 14px; line-height: 1.8; }.terms-changes li + li { margin-top: 6px; }

/* お問い合わせフォーム（contact.php） */
.contact-shell { width: min(100% - 32px, 640px); }.auth-card #contact_name { font-family: "Zen Kaku Gothic New", sans-serif; }.auth-card select { width: 100%; padding: 13px 14px; border: 1px solid var(--ink); border-radius: 2px; background: #fffdf9; color: var(--ink); font: 15px "Zen Kaku Gothic New", sans-serif; }.auth-card select:focus { outline: 3px solid #f2c7b8; outline-offset: 1px; }.contact-form .field-hint a { border-bottom: 1px solid currentColor; }.contact-form .field-hint a:hover { color: var(--red); }.contact-trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }.auth-card > .button { width: auto; }
