:root { --bg: #f4f6f8; --surface: #ffffff; --text: #1c2430; --muted: #5b6675; --border: #d5dbe3; --accent: #1d5fd1; --accent-text: #ffffff; --ok: #1b7f3b; --ok-bg: #e3f4e8; --error: #b3261e; --error-bg: #fbe6e4; --info: #1d5fd1; --info-bg: #e5eefb; --warn: #8a5a00; --warn-bg: #fdf0d5; --gutter: 16px; } @media (prefers-color-scheme: dark) { :root { --bg: #12161c; --surface: #1b212a; --text: #e4e8ee; --muted: #9aa5b4; --border: #2f3844; --accent: #5b9bff; --accent-text: #0b1220; --ok: #62d083; --ok-bg: #16311f; --error: #ff8a80; --error-bg: #3a1c1a; --info: #8db8ff; --info-bg: #182a47; --warn: #f2c15f; --warn-bg: #3a2c0e; } } * { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; } body { margin: 0; background: var(--bg); color: var(--text); font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; overflow-x: hidden; } a { color: var(--accent); } h1 { font-size: 1.5rem; margin: 0 0 1rem; } h2 { font-size: 1.15rem; margin: 0 0 .75rem; } .container { max-width: 960px; margin: 0 auto; padding: var(--gutter); } .topbar { background: var(--surface); border-bottom: 1px solid var(--border); } .topbar-inner { max-width: 960px; margin: 0 auto; padding: 10px var(--gutter); display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; } .brand { font-weight: 700; text-decoration: none; color: var(--text); } .nav { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; } .nav a { text-decoration: none; } .nav a:hover { text-decoration: underline; } .card { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: var(--gutter); margin-bottom: var(--gutter); } .card.narrow { max-width: 420px; margin-left: auto; margin-right: auto; } .muted { color: var(--muted); } form.inline { display: inline; margin: 0; } .row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 6px; } .row select, .row input { width: auto; flex: 1 1 140px; margin: 0; } label { display: block; margin: 12px 0 4px; font-weight: 600; } label.check { display: flex; align-items: center; gap: 8px; font-weight: 400; } input[type="text"], input[type="password"], select, textarea { width: 100%; padding: 9px 10px; font: inherit; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: 6px; } input[type="checkbox"] { width: 1.1rem; height: 1.1rem; } input:focus, select:focus, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; } button { font: inherit; padding: 8px 14px; border-radius: 6px; border: 1px solid var(--accent); background: var(--accent); color: var(--accent-text); cursor: pointer; } button.secondary { background: transparent; color: var(--accent); } button.danger { background: transparent; color: var(--error); border-color: var(--error); } button.link { background: none; border: none; padding: 0; color: var(--accent); text-decoration: underline; } button:disabled { opacity: .6; cursor: progress; } .flash { padding: 10px 12px; border-radius: 6px; border: 1px solid; margin-bottom: var(--gutter); } .flash.ok { color: var(--ok); background: var(--ok-bg); border-color: var(--ok); } .flash.error { color: var(--error); background: var(--error-bg); border-color: var(--error); } .flash.info { color: var(--info); background: var(--info-bg); border-color: var(--info); } .test-result { min-height: 1.5em; margin: 12px 0 0; overflow-wrap: anywhere; } .test-result.ok { color: var(--ok); } .test-result.error { color: var(--error); } .table-wrap { overflow-x: auto; } table { width: 100%; border-collapse: collapse; } th, td { text-align: left; padding: 8px; border-bottom: 1px solid var(--border); vertical-align: top; } th { color: var(--muted); font-weight: 600; white-space: nowrap; } .badge { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: .85rem; font-weight: 600; vertical-align: middle; } .badge.ok { color: var(--ok); background: var(--ok-bg); } .badge.error { color: var(--error); background: var(--error-bg); } .badge.info { color: var(--info); background: var(--info-bg); } .badge.warn { color: var(--warn); background: var(--warn-bg); } .steps { padding-left: 1.25rem; } .steps li { margin-bottom: 8px; } code.break { overflow-wrap: anywhere; word-break: break-all; } .prewrap { white-space: pre-line; } fieldset { border: 1px solid var(--border); border-radius: 6px; margin: 12px 0 0; padding: 8px 12px; } legend { font-weight: 600; padding: 0 4px; } .promptbox { white-space: pre-wrap; overflow-wrap: anywhere; padding: 10px 12px; margin: 0 0 12px; background: var(--bg); border: 1px solid var(--border); border-radius: 6px; font: 14px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } .promptbox.fixed { border-style: dashed; color: var(--muted); } textarea.prompt-text { min-height: 12rem; font: 14px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } .tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .tabs a { padding: 6px 12px; border: 1px solid var(--border); border-radius: 6px; text-decoration: none; } .tabs a.current { background: var(--accent); color: var(--accent-text); border-color: var(--accent); }