/* OsDot browser installer — self-contained stylesheet (no dependency on the application bundle); light and dark schemes. */
:root{color-scheme:light dark;--teal:#0b6e8a;--on-accent:#fff;--navy:#14243B;--ink:#14243B;--muted:#4b5a72;--border:#d9e0ea;--surface:#f4f6f9;--card:#fff;--code-bg:#eef2f6;--field:#fff;--muted-bg:#e9edf3;--pass:#1a7a37;--pass-bg:#e5f5ea;--warn:#8a5a00;--warn-bg:#fff4d6;--fail:#b3261e;--fail-bg:#fde8e6;--info:#0b5cad;--info-bg:#e7f0fb}
*{box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%}
body.install-page{margin:0;background:var(--surface);color:var(--ink);font-family:Inter,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.55}
a{color:var(--teal)}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em;background:var(--code-bg);padding:.1em .35em;border-radius:4px;word-break:break-all}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:8px 12px;border-radius:6px;z-index:10}
.skip-link:focus{left:8px}
.install-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;background:var(--navy);color:#fff}
.install-brand{display:flex;align-items:center;gap:12px}
.install-brand-mark{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--teal);color:var(--on-accent);font-weight:800;font-size:20px}
.install-brand-text{display:flex;flex-direction:column;line-height:1.25}
.install-brand-text strong{font-size:18px}
.install-brand-text span{font-size:13px;opacity:.85}
.install-package{font-size:13px;padding:6px 10px;border:1px solid rgba(255,255,255,.35);border-radius:999px;white-space:nowrap}
.install-steps{background:var(--card);border-bottom:1px solid var(--border)}
.install-steps ol{list-style:none;margin:0 auto;padding:12px 24px;max-width:1100px;display:flex;flex-wrap:wrap;gap:8px 18px}
.install-step{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}
.install-step-number{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:2px solid var(--border);font-size:13px;font-weight:700}
.install-step-done .install-step-number{background:var(--pass);border-color:var(--pass);color:var(--on-accent)}
.install-step-current{color:var(--ink);font-weight:600}
.install-step-current .install-step-number{background:var(--teal);border-color:var(--teal);color:var(--on-accent)}
.install-main{max-width:1100px;margin:0 auto;padding:24px}
.install-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:20px}
.install-card h1{margin:0 0 8px;font-size:26px;letter-spacing:-.02em}
.install-card h2{margin:0 0 8px;font-size:20px}
.lead{color:var(--muted);margin:0 0 16px}
.install-facts{display:grid;grid-template-columns:1fr;gap:8px 16px;margin:0}
.install-facts div{display:grid;grid-template-columns:180px 1fr;gap:8px;padding:6px 0;border-bottom:1px dashed var(--border)}
.install-facts.compact div{padding:2px 0;border:0}
.install-facts dt{color:var(--muted);font-weight:600}
.install-facts dd{margin:0}
.install-form .field{margin:0 0 16px}
.install-form label,.install-form legend{display:block;font-weight:600;margin-bottom:6px}
.install-form input[type=text],.install-form input[type=password],.install-form input[type=email],.install-form input[type=url],.install-form select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;background:#fff}
.install-form input:focus,.install-form select:focus,.button:focus{outline:3px solid #9ad3d5;outline-offset:1px}
.install-form small{display:block;color:var(--muted);margin-top:4px}
.install-form small.error{color:var(--fail);font-weight:600}
.install-form .has-error input,.install-form .has-error select{border-color:var(--fail)}
.install-form fieldset{border:1px solid var(--border);border-radius:8px;padding:12px 16px}
.install-form .choice{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:8px 0}
.install-form .choice input{margin-top:5px}
/* 0.1.5: a phase's choice field — radio cards (name, description, colour dots); the chosen card is outlined. */
.install-form .choice-field{min-width:0}
.choice-cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));margin:8px 0}
.install-form .choice-card{position:relative;display:grid;gap:6px;align-content:start;margin:0;padding:14px 14px 14px 44px;border:1px solid var(--border);border-radius:10px;background:var(--card);font-weight:400;cursor:pointer;min-width:0;overflow-wrap:anywhere}
.install-form .choice-card input{position:absolute;left:14px;top:16px;width:18px;height:18px;margin:0;accent-color:var(--teal)}
.install-form .choice-card:has(input:checked){border-color:var(--teal);box-shadow:0 0 0 2px var(--teal)}
.install-form .choice-card:has(input:focus-visible){outline:3px solid #9ad3d5;outline-offset:2px}
.choice-swatch{display:flex;gap:4px}
.choice-swatch span{width:18px;height:18px;border-radius:50%;border:1px solid var(--border)}
.install-form.inline{display:inline}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.button{display:inline-block;padding:10px 18px;border-radius:8px;border:1px solid var(--teal);background:var(--teal);color:var(--on-accent);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}
.button.secondary{background:var(--card);color:var(--ink);border-color:var(--border)}
.button:hover{filter:brightness(.95)}
.button[disabled]{opacity:.6;cursor:wait}
.install-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.install-actions .hint{margin:0}
.hint{color:var(--muted);font-size:14px}
.token-path{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}
.notice{border-radius:8px;padding:12px 14px;margin:12px 0;border:1px solid transparent}
.notice-success{background:var(--pass-bg);border-color:#bfe3c9;color:var(--pass)}
.notice-error{background:var(--fail-bg);border-color:#f3c1bd;color:var(--fail)}
.notice-warning{background:var(--warn-bg);border-color:#f0dca0;color:var(--warn)}
.notice-info{background:var(--info-bg);border-color:#bcd4f2;color:var(--info)}
.install-flash .message{border-radius:8px;padding:12px 14px;margin:0 0 16px;border:1px solid transparent}
.install-flash .message.success{background:var(--pass-bg);border-color:#bfe3c9;color:var(--pass)}
.install-flash .message.error{background:var(--fail-bg);border-color:#f3c1bd;color:var(--fail)}
.install-flash .message.warning{background:var(--warn-bg);border-color:#f0dca0;color:var(--warn)}
.install-flash .message.info{background:var(--info-bg);border-color:#bcd4f2;color:var(--info)}
.install-flash .message .close{display:none}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.badge-pass,.badge-completed{background:var(--pass-bg);color:var(--pass)}
.badge-warning,.badge-pending_provider{background:var(--warn-bg);color:var(--warn)}
.badge-fail,.badge-failed{background:var(--fail-bg);color:var(--fail)}
.badge-pending,.badge-not_applicable{background:var(--muted-bg);color:var(--muted)}
.totals .badge{margin-right:6px}
.install-checks{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0 16px}
.install-checks caption{text-align:left;font-weight:600;padding:6px 0;color:var(--muted)}
.install-checks th,.install-checks td{text-align:left;vertical-align:top;padding:8px 10px;border-top:1px solid var(--border)}
.install-checks thead th{border-top:0;color:var(--muted);font-size:13px}
.install-checks th[scope=row]{width:26%;font-weight:600}
.install-checks .check-fail th[scope=row]{color:var(--fail)}
.install-checks .hint{display:block;margin-top:2px}
@media (max-width:47.99rem){.install-checks,.install-checks tbody,.install-checks caption{display:block;width:100%}.install-checks thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.install-checks tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:10px 0;border-top:1px solid var(--border)}.install-checks th[scope=row],.install-checks td{display:block;width:auto;padding:0;border-top:0;overflow-wrap:anywhere;min-width:0}.install-checks td:last-child{grid-column:1/-1}}
details summary{cursor:pointer;font-weight:600;margin:8px 0}
.install-phases{list-style:none;margin:16px 0 0;padding:0;counter-reset:phase}
.phase{border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:10px;counter-increment:phase}
.phase-current{border-color:var(--teal);box-shadow:0 0 0 3px #9ad3d54d}
.phase-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.phase-head strong::before{content:counter(phase) ". ";color:var(--muted)}
.phase p{margin:6px 0 0;color:var(--muted);font-size:14px}
.phase-message{color:var(--ink)!important}
.phase-message.error{color:var(--fail)!important;font-weight:600}
.phase-summary{margin:6px 0 0;padding-left:20px;font-size:14px}
.checklist{padding-left:20px}
.checklist li{margin-bottom:8px}
.recovery li{margin-bottom:6px}
.install-footer{max-width:1100px;margin:0 auto;padding:8px 24px 32px;display:flex;flex-wrap:wrap;gap:8px 24px;color:var(--muted);font-size:13px}
@media (max-width:760px){.install-header{padding:12px 16px}.install-package{display:none}.install-steps ol{padding:10px 16px;gap:6px 12px}.install-step-label{display:none}.install-step-current .install-step-label{display:inline}.install-main{padding:16px}.install-card{padding:16px}.grid-2{grid-template-columns:1fr}.install-facts div{grid-template-columns:1fr}.install-checks th[scope=row]{width:auto}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* Pass 8F: once-shown demo credentials */
.install-table{width:100%;border-collapse:collapse;margin:12px 0}.install-table th,.install-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #dce3ee;vertical-align:top}.install-table code{font-size:14px;word-break:break-all}.demo-credentials{border:2px solid #e6a23c}
/* 0.3.0: the site step's detected-zone note; "Before you go live" with its read-only command fields (SR-22); the help link (SR-67); start over (SR-27) */
small.detected{color:var(--info);font-weight:600}
.golive-list{list-style:none;margin:0;padding:0}.golive-item{padding:12px 0;border-top:1px solid var(--border)}.golive-item:first-child{border-top:0}.golive-item p{margin:0 0 8px}
.golive-command{margin:8px 0 4px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.golive-command-name{font-weight:600}
.golive-field{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:6px 0}.golive-field label{flex:0 0 6.5rem;font-weight:600}
.copy-field{flex:1 1 16rem;min-width:0;min-height:44px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--field);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px}
.copy-button{padding:6px 12px;flex:0 0 auto}
.install-help{margin:12px 0 0;color:var(--muted)}
.restart-list li{margin-bottom:6px}
/* Printing the once-shown success page: the content only, dark on white. */
@media print{.skip-link,.install-header,.install-steps,.install-footer,.install-flash,.print-button,.copy-button,.install-actions .button,.install-card>p>.button{display:none!important}body.install-page{background:#fff;color:#000}.install-main{max-width:none;padding:0}.install-card{border:0;padding:0 0 12px;margin:0;break-inside:avoid}.notice{border:1px solid #000;color:#000;background:#fff}.copy-field{border:0;padding:0;background:#fff;color:#000;width:100%}.golive-command{background:#fff}}
/* Dark scheme: the same tokens, darker surfaces, lighter ink; status colours keep their meaning. */
@media (prefers-color-scheme:dark){:root{--teal:#4fb3cf;--on-accent:#0b1422;--navy:#0b1422;--ink:#e6ecf5;--muted:#a7b3c5;--border:#2c3a50;--surface:#0f1724;--card:#162133;--code-bg:#1f2c42;--field:#0f1724;--muted-bg:#24324a;--pass:#7fd49a;--pass-bg:#12301e;--warn:#f0c46a;--warn-bg:#33270c;--fail:#f19a92;--fail-bg:#3a1714;--info:#8fbef0;--info-bg:#12253d}.install-form input[type=text],.install-form input[type=password],.install-form input[type=email],.install-form input[type=url],.install-form select{background:var(--field);color:var(--ink)}.notice-success,.install-flash .message.success{border-color:#2b6a40}.notice-error,.install-flash .message.error{border-color:#7a2f29}.notice-warning,.install-flash .message.warning{border-color:#6b5420}.notice-info,.install-flash .message.info{border-color:#28507e}.install-table th,.install-table td{border-bottom-color:var(--border)}}
