.portal-app{min-height:100dvh;display:flex;flex-direction:column}.portal-main{flex:1;padding-bottom:var(--space-12)}.portal-footer{padding:var(--space-4) 0;text-align:center;font-size:var(--font-size-xs);color:var(--color-text-tertiary);border-top:1px solid var(--color-border-light)}:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #eff6ff;--color-primary-soft: #dbeafe;--color-primary-dark: #1e40af;--color-success: #059669;--color-success-light: #ecfdf5;--color-warning: #f59e0b;--color-warning-light: #fffbeb;--color-danger: #ef4444;--color-danger-light: #fef2f2;--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-elevated: #ffffff;--color-border: #e2e8f0;--color-border-light: #f1f5f9;--color-text: #0f172a;--color-text-secondary: #475569;--color-text-tertiary: #94a3b8;--color-text-on-primary: #ffffff;--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .9375rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.25rem;--font-size-4xl: 3rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-2xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 2px 8px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-lg: 0 4px 16px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);--shadow-xl: 0 8px 32px rgba(0,0,0,.1);--shadow-card: 0 1px 3px rgba(0,0,0,.04), 0 0 0 1px rgba(0,0,0,.02);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--transition-spring: .3s cubic-bezier(.34, 1.56, .64, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);line-height:1.6;min-height:100dvh}#root{min-height:100dvh;display:flex;flex-direction:column}.container{width:100%;max-width:960px;margin:0 auto;padding:0 var(--space-6)}.container-narrow{width:100%;max-width:560px;margin:0 auto;padding:0 var(--space-6)}.container-wide{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--space-6)}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--color-border-light);padding:var(--space-6);transition:box-shadow var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card-interactive:hover{box-shadow:var(--shadow-lg);transform:translateY(-1px);cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);font-weight:500;line-height:1;border:none;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 2px 8px #2563eb4d}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-primary);color:var(--color-primary)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-bg);color:var(--color-text)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--font-size-lg);border-radius:var(--radius-lg)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm)}.btn-full{width:100%}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text)}.form-label .required{color:var(--color-danger);margin-left:2px}.form-input{padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none;width:100%}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-input::placeholder{color:var(--color-text-tertiary)}.form-input-error{border-color:var(--color-danger)}.form-input-error:focus{box-shadow:0 0 0 3px var(--color-danger-light)}textarea.form-input{min-height:80px;resize:vertical}select.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.checkbox-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}.checkbox-pill{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.checkbox-pill:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.checkbox-pill.checked{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-dark);font-weight:500}.checkbox-pill input[type=checkbox]{display:none}.progress-bar{display:flex;align-items:center;gap:0;padding:var(--space-4) var(--space-6);overflow-x:auto}.progress-step{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-tertiary);white-space:nowrap;flex-shrink:0}.progress-step.active{color:var(--color-primary);font-weight:600}.progress-step.completed{color:var(--color-success)}.progress-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600;background:var(--color-border-light);color:var(--color-text-tertiary);flex-shrink:0}.progress-step.active .progress-dot{background:var(--color-primary);color:#fff}.progress-step.completed .progress-dot{background:var(--color-success);color:#fff}.progress-line{flex:1;height:2px;background:var(--color-border);margin:0 var(--space-2);min-width:20px}.progress-line.completed{background:var(--color-success)}.section-header{margin-bottom:var(--space-6)}.section-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text);margin-bottom:var(--space-1)}.section-description{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500;line-height:1.5}.badge-primary{background:var(--color-primary-light);color:var(--color-primary-dark)}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:#92400e}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.spinner{width:20px;height:20px;border:2.5px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}.spinner-lg{width:36px;height:36px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--color-border-light) 25%,var(--color-bg) 50%,var(--color-border-light) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.alert{padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);font-size:var(--font-size-sm);display:flex;align-items:flex-start;gap:var(--space-3)}.alert-info{background:var(--color-primary-light);color:var(--color-primary-dark);border:1px solid var(--color-primary-soft)}.alert-success{background:var(--color-success-light);color:#065f46;border:1px solid #a7f3d0}.alert-warning{background:var(--color-warning-light);color:#92400e;border:1px solid #fde68a}.alert-error{background:var(--color-danger-light);color:#991b1b;border:1px solid #fecaca}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-in{animation:fadeIn .3s ease both}.animate-slide-up{animation:slideUp .4s ease both}.stagger>*{animation:fadeIn .3s ease both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:50ms}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.15s}.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(6){animation-delay:.25s}@media(max-width:640px){:root{--font-size-3xl: 1.75rem;--font-size-2xl: 1.5rem;--font-size-xl: 1.25rem}.container,.container-narrow,.container-wide{padding:0 var(--space-4)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base)}}
