:root{--color-primary: #2271b1;--color-primary-hover: #135e96;--color-primary-light: #d4e8f7;--color-primary-bg: #f0f8ff;--color-success: #00a32a;--color-success-bg: #d1e7dd;--color-success-text: #0f5132;--color-error: #d63638;--color-error-hover: #b32d2e;--color-error-bg: #f8d7da;--color-error-text: #842029;--color-error-dark: #842029;--color-warning: #dba617;--color-warning-bg: #fff3cd;--color-warning-text: #856404;--color-info: #3858e9;--color-info-bg: #cff4fc;--color-info-text: #055160;--color-info-light: #72aee6;--color-text: #1d2327;--color-text-secondary: #50575e;--color-text-muted: #646970;--color-text-hint: #8c8f94;--color-text-placeholder: #a7aaad;--color-border: #e5e5e5;--color-border-strong: #c3c4c7;--color-border-input: #8c8f94;--color-bg: #ffffff;--color-bg-page: #f0f0f1;--color-bg-subtle: #f6f7f7;--color-bg-hover: #f0f0f1;--color-dark: #1d2327;--color-dark-hover: #2c3338;--color-dark-border: #3c4349;--color-dark-text: #c3c4c7;--color-dark-text-muted: #8c8f94;--color-dark-accent: #72aee6;--color-dark-danger: #ff7a72;--color-avatar-bg: #c3c4c7;--font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", sans-serif;--font-display: "Playfair Display", Georgia, "Noto Serif SC", serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", Consolas, monospace;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 15px;--text-xl: 16px;--text-2xl: 18px;--text-3xl: 20px;--text-4xl: 23px;--text-5xl: 24px;--text-6xl: 28px;--text-7xl: 32px;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.3;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-loose: 1.7;--leading-text: 1.8;--space-1: 2px;--space-2: 4px;--space-3: 6px;--space-4: 8px;--space-5: 10px;--space-6: 12px;--space-8: 16px;--space-10: 20px;--space-12: 24px;--space-16: 32px;--space-20: 40px;--space-24: 48px;--space-32: 64px;--radius-sm: 3px;--radius: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .12);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .15);--shadow-xl: 0 12px 36px rgba(0, 0, 0, .2);--shadow-focus: 0 0 0 2px var(--color-primary);--shadow-card-hover: 0 4px 16px rgba(0, 0, 0, .1);--shadow-modal: 0 5px 15px rgba(0, 0, 0, .2);--transition-fast: .1s ease;--transition: .2s ease;--transition-slow: .3s ease;--transition-spring: .3s cubic-bezier(.34, 1.56, .64, 1);--container-max: 1200px;--container-wide: 1500px;--sidebar-width: 340px;--admin-sidebar-width: 160px;--admin-bar-height: 32px;--header-height: 56px;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 1000;--z-modal: 100000;--z-admin-bar: 99999;--z-toast: 99999}@media(prefers-color-scheme:dark){:root{--color-text: #e5e5e5;--color-text-secondary: #a7aaad;--color-text-muted: #8c8f94;--color-text-hint: #646970;--color-text-placeholder: #50575e;--color-border: #3c4349;--color-border-strong: #50575e;--color-border-input: #50575e;--color-bg: #1d2327;--color-bg-page: #0f1315;--color-bg-subtle: #2c3338;--color-bg-hover: #3c4349;--color-primary-bg: rgba(34, 113, 177, .15);--color-success-bg: rgba(0, 163, 42, .15);--color-error-bg: rgba(214, 54, 56, .15);--color-warning-bg: rgba(219, 166, 23, .15);--color-info-bg: rgba(56, 88, 233, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:#f0f2f5;color:var(--color-text);line-height:1.6;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.installer{width:100%;max-width:600px}.logo{text-align:center;margin-bottom:32px}.logo h1{font-size:28px;font-weight:700;color:var(--color-primary);margin-bottom:4px}.logo p{font-size:14px;color:var(--color-text-muted)}.steps-indicator{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.step-dot{width:36px;height:36px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;background:#dcdcde;color:var(--color-text-muted);transition:all var(--transition-slow) ease}.step-dot.active{background:var(--color-primary);color:var(--color-bg);transform:scale(1.1)}.step-dot.completed{background:var(--color-success);color:var(--color-bg)}.step-dot-line{width:24px;height:2px;background:#dcdcde;align-self:center;transition:background var(--transition-slow) ease}.step-dot-line.completed{background:var(--color-success)}.card{background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a;padding:32px;margin-bottom:16px}.card h2{font-size:20px;font-weight:600;margin-bottom:8px;color:var(--color-text)}.card .subtitle{font-size:14px;color:var(--color-text-muted);margin-bottom:24px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:14px;font-weight:500;margin-bottom:6px;color:var(--color-text)}.form-group label .required{color:var(--color-error);margin-left:2px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--color-text-hint);border-radius:var(--radius);font-size:14px;color:var(--color-text);background:var(--color-bg);transition:border-color var(--transition-fast) ease,box-shadow var(--transition-fast) ease;outline:none}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.form-group input.error,.form-group select.error{border-color:var(--color-error);box-shadow:0 0 0 1px var(--color-error)}.form-group .error-msg{font-size:12px;color:var(--color-error);margin-top:4px;display:none}.form-group .error-msg.visible{display:block}.form-group .hint{font-size:12px;color:var(--color-text-muted);margin-top:4px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.radio-group{display:flex;flex-direction:column;gap:8px}.radio-option{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--color-text-hint);border-radius:var(--radius);cursor:pointer;transition:border-color var(--transition-fast) ease}.radio-option:hover{border-color:var(--color-primary)}.radio-option.selected{border-color:var(--color-primary);background:#f0f6fc}.radio-option input[type=radio]{width:auto;margin:0}.radio-option .radio-label{font-size:14px;font-weight:500}.radio-option .radio-desc{font-size:12px;color:var(--color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 20px;border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all var(--transition-fast) ease;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-bg);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-bg-subtle);color:var(--color-dark-hover);border-color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background:#f0f6fc}.btn-success{background:var(--color-success);color:var(--color-bg);border-color:var(--color-success)}.btn-success:hover:not(:disabled){background:#008a20}.btn-danger{background:var(--color-error);color:var(--color-bg);border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background:var(--color-error-hover)}.btn-group{display:flex;justify-content:space-between;gap:12px;margin-top:24px}.check-list{list-style:none;margin-bottom:24px}.check-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--color-bg-hover);font-size:14px}.check-item:last-child{border-bottom:none}.check-icon{width:24px;height:24px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.check-icon.pass{background:var(--color-success);color:var(--color-bg)}.check-icon.fail{background:var(--color-error);color:var(--color-bg)}.check-icon.loading{background:#dcdcde;color:var(--color-text-muted)}.check-icon.loading:after{content:"";width:12px;height:12px;border:2px solid var(--color-text-muted);border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress-bar-container{margin-bottom:24px}.progress-bar{width:100%;height:8px;background:var(--color-bg-hover);border-radius:var(--radius);overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:var(--radius);transition:width .5s ease;width:0%}.progress-text{font-size:13px;color:var(--color-text-muted);margin-top:8px;text-align:center}.install-steps{list-style:none;margin-bottom:24px}.install-step{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px;color:var(--color-text-muted)}.install-step.active{color:var(--color-text);font-weight:500}.install-step.done{color:var(--color-success)}.install-step.error{color:var(--color-error)}.install-step .step-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}.success-icon{width:72px;height:72px;border-radius:var(--radius-full);background:var(--color-success);color:var(--color-bg);display:flex;align-items:center;justify-content:center;font-size:36px;margin:0 auto 20px;animation:scaleIn .4s ease}@keyframes scaleIn{0%{transform:scale(0)}80%{transform:scale(1.1)}to{transform:scale(1)}}.success-text{text-align:center}.success-text h2{font-size:22px;margin-bottom:8px}.success-text p{color:var(--color-text-muted);margin-bottom:16px}.success-links{text-align:center;margin-bottom:20px}.success-links a{color:var(--color-primary);text-decoration:none;font-weight:500}.success-links a:hover{text-decoration:underline}.warning-box{background:#fcf9e8;border:1px solid var(--color-warning);border-radius:var(--radius);padding:12px 16px;margin-top:20px;font-size:13px;color:#7c6800;line-height:1.5}.warning-box strong{color:#5a4e00}.connection-status{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--radius);margin-top:8px;font-size:13px}.connection-status.success{background:#edfaef;color:#006400;border:1px solid #83c785}.connection-status.error{background:var(--color-error-bg);color:#8a2424;border:1px solid var(--color-error)}.connection-status.testing{background:#f0f6fc;color:var(--color-primary);border:1px solid #87b7d9}.spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .8s linear infinite}.hidden{display:none!important}@media(max-width:768px){.card{padding:24px}}@media(max-width:480px){.form-row{grid-template-columns:1fr}.card{padding:20px}.btn-group{flex-direction:column}}
