:root{--color-primary: #ff385c;--color-primary-active: #e00b41;--color-primary-disabled: #ffd1da;--color-canvas: #ffffff;--color-ink: #222222;--color-body: #3f3f3f;--color-muted: #6a6a6a;--color-muted-soft: #929292;--color-surface-soft: #f7f7f7;--color-surface-strong: #f2f2f2;--color-hairline: #dddddd;--color-hairline-soft: #ebebeb;--color-border-strong: #c1c1c1;--color-on-primary: #ffffff;--color-error: #c13515;--color-success: #008a05;--font-family: "Inter", -apple-system, system-ui, "Helvetica Neue", sans-serif;--radius-sm: 8px;--radius-md: 14px;--radius-xl: 32px;--radius-full: 9999px;--shadow-card: rgba(0, 0, 0, .02) 0 0 0 1px, rgba(0, 0, 0, .04) 0 2px 6px, rgba(0, 0, 0, .1) 0 4px 8px;--shadow-sm: rgba(0, 0, 0, .06) 0 1px 3px, rgba(0, 0, 0, .04) 0 1px 2px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-xxl: 48px;--spacing-section: 64px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}body{font-family:var(--font-family);color:var(--color-ink);background:var(--color-canvas);line-height:1.5}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.fade-in{animation:fadeIn .3s ease both}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:500;line-height:1;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease,opacity .15s ease,box-shadow .15s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);padding:12px 20px;height:44px}.btn-primary:hover{background:var(--color-primary-active)}.btn-primary:disabled{background:var(--color-primary-disabled);cursor:not-allowed}.btn-primary-lg{height:52px;padding:14px 28px;font-size:16px;border-radius:var(--radius-sm)}.btn-secondary{background:var(--color-canvas);color:var(--color-ink);border:1px solid var(--color-hairline);padding:12px 20px;height:44px}.btn-secondary:hover{background:var(--color-surface-soft)}.btn-ghost{background:transparent;color:var(--color-ink);padding:8px 12px;height:36px;font-size:14px}.btn-ghost:hover{background:var(--color-surface-soft)}.btn-danger{background:var(--color-canvas);color:var(--color-error);border:1px solid var(--color-hairline);padding:12px 20px;height:44px}.btn-danger:hover{background:#fff5f5;border-color:var(--color-error)}.btn-pill{border-radius:var(--radius-full)}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-sm)}.field-group{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--color-muted);letter-spacing:.01em}.field-input{width:100%;height:52px;padding:0 14px;border:1.5px solid var(--color-hairline);border-radius:var(--radius-sm);font-size:15px;color:var(--color-ink);background:var(--color-canvas);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.field-input:focus{border-color:var(--color-ink);box-shadow:0 0 0 3px #22222214}.field-input.error{border-color:var(--color-error)}.field-input.error:focus{box-shadow:0 0 0 3px #c135151a}.field-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236a6a6a' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.card{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--radius-md);padding:var(--spacing-lg)}.card-hover{transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}.card-hover:hover{box-shadow:0 4px 16px #00000014,0 1px 4px #0000000a;transform:translateY(-2px);border-color:var(--color-border-strong)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:600;line-height:1}.badge-primary{background:#fff0f3;color:var(--color-primary)}.badge-success{background:#f0faf0;color:var(--color-success)}.badge-warning{background:#fffbeb;color:#92400e}.badge-neutral{background:var(--color-surface-soft);color:var(--color-muted)}.skeleton{background:linear-gradient(90deg,var(--color-surface-soft) 25%,var(--color-surface-strong) 50%,var(--color-surface-soft) 75%);background-size:400px 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite;display:inline-block;flex-shrink:0}.spinner-dark{border-color:#22222226;border-top-color:var(--color-ink)}.alert{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-radius:var(--radius-sm);font-size:14px;line-height:1.5}.alert-error{background:#fff5f5;border:1px solid #fecaca;color:var(--color-error)}.alert-success{background:#f0faf0;border:1px solid #bbf7d0;color:var(--color-success)}.code-block{position:relative;background:#1e1e2e;color:#cdd6f4;border-radius:var(--radius-md);padding:20px 48px 20px 20px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px;line-height:1.7;white-space:pre-wrap;word-break:break-all;overflow:auto}.code-copy-btn{position:absolute;top:12px;right:12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);color:#cdd6f4;border-radius:var(--radius-sm);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.code-copy-btn:hover{background:#fff3}.code-copy-btn.copied{color:#a6e3a1;border-color:#a6e3a1}.divider{border:none;border-top:1px solid var(--color-hairline-soft);margin:var(--spacing-xl) 0}.step-dot{width:28px;height:28px;border-radius:50%;border:2px solid var(--color-hairline);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--color-muted);background:var(--color-canvas);flex-shrink:0;transition:all .2s ease}.step-dot.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.step-dot.done{background:var(--color-success);border-color:var(--color-success);color:#fff}.switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-hairline);border-radius:22px;cursor:pointer;transition:background .2s}.switch-track:before{content:"";position:absolute;height:16px;width:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:var(--shadow-sm)}.switch input:checked+.switch-track{background:var(--color-primary)}.switch input:checked+.switch-track:before{transform:translate(18px)}.range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;border-radius:4px;background:var(--color-hairline);outline:none;cursor:pointer}.range-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:2px solid white;box-shadow:0 1px 4px #0003}.range-input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:2px solid white;box-shadow:0 1px 4px #0003}.nav-link-active{color:var(--color-ink);background:var(--color-surface-soft);font-weight:600}.sidebar-link:hover{background:var(--color-surface-soft)}.metric-value{font-size:24px;font-weight:700;letter-spacing:-.5px;color:var(--color-ink);line-height:1.1}.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}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}
