:root { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; line-height: 1.5; color-scheme: light dark; --accent: #4f46e5; --text: #1f2430; --muted: #6b7280; --danger: #dc2626; --surface: #ffffff; --surface-shadow: 0 1px 3px rgb(0 0 0 / 0.12); --border: #9ca3af; --radius: 16px; } @media (prefers-color-scheme: dark) { :root { --text: #e5e7eb; --muted: #9ca3af; --danger: #f87171; --surface: #111827; --surface-shadow: 0 1px 3px rgb(0 0 0 / 0.45); --border: #4b5563; } } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; display: flex; flex-direction: column; align-items: center; color: var(--text); } #app { width: 100%; max-width: 480px; padding: 24px 16px; } /* Шапка */ .app-header h1 { margin: 0; font-size: 28px; } .subtitle { margin: 4px 0 0; color: var(--muted); } /* Карточка сохранения */ .card { margin-top: 24px; padding: 20px; background: var(--surface); border-radius: var(--radius); box-shadow: var(--surface-shadow); } .card h2 { margin: 0 0 8px; font-size: 18px; } .card-note { margin: 0 0 16px; font-size: 14px; color: var(--muted); } .field label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 600; } #save-token { display: block; width: 100%; padding: 12px 14px; font-size: 16px; /* 16px — чтобы iOS не зумила страницу */ letter-spacing: 0.08em; text-transform: uppercase; border: 1.5px solid var(--border); border-radius: 12px; background: transparent; color: var(--text); } #save-token:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); } #save-token[aria-invalid='true'] { border-color: var(--danger); } .hint { margin: 6px 0 0; font-size: 13px; color: var(--muted); } .error { margin: 6px 0 0; font-size: 13px; color: var(--danger); } .error[hidden] { display: none; } /* Кнопки */ .actions { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; } .btn { min-height: 48px; /* комфортная область касания */ padding: 12px 16px; font-size: 16px; font-weight: 600; border-radius: 12px; cursor: pointer; } .btn-primary { border: none; background: var(--accent); color: #ffffff; } .btn-secondary { border: 1.5px solid var(--accent); background: transparent; color: var(--accent); } .btn:disabled { opacity: 0.45; cursor: not-allowed; } /* Статусы и подвал */ .status { margin: 12px 0 0; min-height: 1.5em; font-size: 14px; color: var(--muted); } .footer-status { margin-top: 24px; font-size: 13px; text-align: center; color: var(--muted); }