/* EncryptedNav 安装程序样式 */
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    background:linear-gradient(135deg,#1e3c72 0%,#2a5298 100%);
    min-height:100vh; display:flex; align-items:center; justify-content:center;
    padding:20px; color:#333; }
.box { background:#fff; border-radius:16px; padding:36px 32px;
    width:100%; max-width:620px; box-shadow:0 10px 40px rgba(0,0,0,.2); }
h1 { font-size:24px; text-align:center; margin-bottom:8px; }
h2 { font-size:18px; margin:24px 0 12px; color:#1e3c72; border-bottom:2px solid #e5e7eb; padding-bottom:8px; }
.sub { text-align:center; color:#888; font-size:13px; margin-bottom:24px; }
.steps { display:flex; justify-content:space-between; margin-bottom:32px; padding:0 8px; }
.steps .step { flex:1; text-align:center; font-size:12px; color:#999; position:relative; }
.steps .step::before { content:''; position:absolute; top:14px; left:50%; width:100%;
    height:2px; background:#e5e7eb; z-index:0; }
.steps .step:last-child::before { display:none; }
.steps .step .dot { display:inline-block; width:28px; height:28px; line-height:28px;
    border-radius:50%; background:#e5e7eb; color:#999; font-weight:600; position:relative; z-index:1; }
.steps .step.active .dot { background:#2a5298; color:#fff; }
.steps .step.done .dot { background:#10b981; color:#fff; }
.steps .step.done::before { background:#10b981; }
.steps .step.active { color:#2a5298; font-weight:600; }
.alert { padding:12px 16px; border-radius:8px; margin-bottom:16px; font-size:14px; }
.alert-ok { background:#e8f5e9; color:#2e7d32; }
.alert-err { background:#fee; color:#c33; }
.check { padding:10px 14px; border-radius:8px; margin-bottom:8px; font-size:14px;
    display:flex; justify-content:space-between; align-items:center; }
.check.ok { background:#e8f5e9; color:#2e7d32; }
.check.fail { background:#fee; color:#c33; }
.form-row { margin-bottom:14px; }
.form-row label { display:block; font-size:13px; color:#555; margin-bottom:6px; font-weight:500; }
.form-row input { width:100%; padding:11px 14px; border:1px solid #e5e7eb;
    border-radius:8px; font-size:14px; outline:none; }
.form-row input:focus { border-color:#2a5298; }
.form-row .hint { font-size:12px; color:#888; margin-top:4px; }
.btn { padding:11px 24px; border:none; border-radius:8px; font-size:14px;
    font-weight:600; cursor:pointer; text-decoration:none; display:inline-block; }
.btn-primary { background:linear-gradient(135deg,#1e3c72,#2a5298); color:#fff; width:100%; margin-top:8px; }
.btn-primary:disabled { opacity:0.5; cursor:not-allowed; }
.btn-secondary { background:#e5e7eb; color:#333; }
.summary { background:#f9fafb; padding:14px 18px; border-radius:8px; margin-bottom:16px; font-size:13px; }
.summary b { color:#1e3c72; }
.complete-box { background:#f0fdf4; border:2px solid #10b981; border-radius:12px;
    padding:24px; text-align:center; margin:24px 0; }
.complete-box h2 { color:#10b981; border:none; margin:0 0 12px; }
.warn-box { background:#fffbeb; border:1px solid #fbbf24; border-radius:8px;
    padding:12px 16px; margin-top:16px; font-size:13px; color:#92400e; }
.code { background:#1f2937; color:#10b981; padding:8px 12px; border-radius:6px;
    font-family:'Courier New',monospace; font-size:13px; display:inline-block; margin:4px 2px; }
.row { display:flex; gap:10px; }
.row > * { flex:1; }