*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--tk-purple: #9124FF;--tk-purple-dark: #7118d4;--tk-purple-deep: #510C76;--tk-orange: #F5A623;--tk-orange-light: #fff5e0;--tk-purple-50: #f9f5ff;--tk-purple-100: #f0e8ff;--tk-purple-200: #dcc5ff;--tk-purple-300: #c9a0ff;--tk-purple-400: #a66af0;--tk-green: #22c77a;--tk-green-bg: #e8f8f2;--bg: #ffffff;--bg-secondary: #f7f6fb;--bg-tertiary: #f0eef9;--text: #1a1523;--text-muted: #6b6480;--text-faint: #9b93b0;--border: rgba(145,36,255,.12);--border-strong: rgba(145,36,255,.25);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.03);--shadow-md: 0 4px 16px rgba(145,36,255,.08), 0 1px 4px rgba(0,0,0,.04);--shadow-lg: 0 8px 32px rgba(145,36,255,.12), 0 2px 8px rgba(0,0,0,.06)}html{font-size:16px}body{font-family:DM Sans,Helvetica Neue,sans-serif;background:#f4f2fa;color:var(--text);min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px 80px}#root{width:100%;max-width:1060px}.btn-primary{background:var(--tk-purple);color:#fff;border:none;border-radius:var(--radius-md);padding:11px 24px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .15s,transform .1s;display:inline-flex;align-items:center;gap:6px}.btn-primary:hover{background:var(--tk-purple-dark)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:#fff;color:var(--text-muted);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:11px 18px;font-size:14px;cursor:pointer;font-family:inherit;transition:background .15s,color .15s}.btn-secondary:hover{background:var(--bg-secondary);color:var(--text)}.back-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:5px 11px;font-size:12px;color:var(--text-muted);cursor:pointer;font-family:inherit;transition:background .15s,color .15s;flex-shrink:0}.back-btn:hover{background:#fff;color:var(--text)}.tk-textarea{width:100%;background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;font-size:13.5px;font-family:DM Sans,sans-serif;color:var(--text);resize:vertical;min-height:100px;line-height:1.6;transition:border-color .15s}.tk-textarea:focus{outline:none;border-color:var(--tk-purple);background:#fff}.tk-input{width:100%;background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-md);padding:10px 14px;font-size:13.5px;font-family:DM Sans,sans-serif;color:var(--text);height:42px;transition:border-color .15s}.tk-input:focus{outline:none;border-color:var(--tk-purple);background:#fff}.tk-select{width:100%;background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-md);padding:10px 36px 10px 14px;font-size:13.5px;font-family:DM Sans,sans-serif;color:var(--text);height:42px;transition:border-color .15s;-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='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.tk-select:focus{outline:none;border-color:var(--tk-purple);background-color:#fff}.opt{background:var(--bg-secondary);border:1.5px solid transparent;border-radius:var(--radius-md);padding:12px 16px;text-align:left;cursor:pointer;font-size:13.5px;font-weight:400;color:var(--text);transition:all .15s;font-family:inherit;display:flex;align-items:center;gap:10px;width:100%}.opt:hover{border-color:var(--tk-purple-300);background:var(--tk-purple-50)}.opt.selected{border-color:var(--tk-purple);background:var(--tk-purple-50);color:var(--tk-purple-deep);font-weight:500}.opt.skip{color:var(--text-faint);font-style:italic;border-style:dashed;border-color:var(--border-strong);background:#fff;font-size:13px}.opt.skip:hover{border-color:var(--tk-purple-300);color:var(--tk-purple);background:var(--tk-purple-50)}.opt-check{width:18px;height:18px;min-width:18px;background:var(--tk-purple);border-radius:50%;display:flex;align-items:center;justify-content:center;margin-left:auto;opacity:0;transition:opacity .15s;flex-shrink:0}.opt.selected .opt-check{opacity:1}.opt-aside{font-size:12px;color:var(--text-faint);margin-left:4px;font-weight:400}.step-body{padding:28px 32px 24px}.step-body h2{font-size:19px;font-weight:600;letter-spacing:-.3px;margin-bottom:5px;color:var(--text)}.step-hint{font-size:13px;color:var(--text-muted);margin-bottom:20px;line-height:1.55}.step-nav{padding:0 32px 24px;display:flex;gap:10px;align-items:center}.opts{display:flex;flex-direction:column;gap:8px}.chip{font-size:11.5px;color:var(--tk-purple);background:var(--tk-purple-50);border:1px solid var(--tk-purple-200);padding:3px 10px;border-radius:99px;cursor:pointer;transition:background .12s;font-family:inherit}.chip:hover{background:var(--tk-purple-100)}.tip-box{background:var(--tk-purple-50);border:1px solid var(--tk-purple-200);border-radius:var(--radius-sm);padding:10px 13px;font-size:12px;color:#5a3d99;margin-top:14px;line-height:1.55}.form-section-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin:18px 0 8px}.form-section-label:first-child{margin-top:0}.spec-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.spec-field{display:flex;flex-direction:column;gap:4px}.spec-field label{font-size:11.5px;color:var(--text-muted);font-weight:500}.spec-field input,.spec-field select{background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:7px 10px;height:36px;font-size:12.5px;font-family:inherit;color:var(--text);transition:border-color .15s;width:100%}.spec-field input:focus,.spec-field select:focus{outline:none;border-color:var(--tk-purple);background:#fff}.unit-hint{font-size:10.5px;color:var(--text-faint);margin-top:1px}.sterilization-opts{display:flex;gap:8px;flex-wrap:wrap}.sterilization-opt{display:flex;align-items:center;gap:6px;background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:6px 12px;cursor:pointer;font-size:12.5px;color:var(--text);transition:border-color .12s,background .12s;-webkit-user-select:none;user-select:none}.sterilization-opt input[type=checkbox]{accent-color:var(--tk-purple);cursor:pointer}.sterilization-opt.checked{border-color:var(--tk-purple);background:var(--tk-purple-50);color:var(--tk-purple-deep)}.col-header{display:grid;grid-template-columns:1fr 110px 80px 28px;gap:6px;margin-bottom:4px}.col-header span{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);padding:0 2px}.component-row{display:grid;grid-template-columns:1fr 110px 80px 28px;gap:6px;align-items:center;margin-bottom:6px}.component-row input,.component-row select{background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:7px 10px;font-size:12.5px;font-family:inherit;color:var(--text);height:36px;transition:border-color .15s;width:100%}.component-row input:focus,.component-row select:focus{outline:none;border-color:var(--tk-purple);background:#fff}.component-remove{width:28px;height:28px;background:none;border:1px solid var(--border-strong);border-radius:50%;cursor:pointer;font-size:14px;color:var(--text-faint);display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;flex-shrink:0}.component-remove:hover{background:#fff0f0;color:#c0392b;border-color:#fca5a5}.add-component-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:1.5px dashed var(--tk-purple-300);border-radius:var(--radius-sm);padding:7px 14px;font-size:12.5px;color:var(--tk-purple);cursor:pointer;font-family:inherit;transition:background .12s;margin-bottom:4px}.add-component-btn:hover{background:var(--tk-purple-50)}.qc-check-grid{display:flex;flex-direction:column;gap:6px}.qc-check-item{display:flex;align-items:flex-start;gap:10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;transition:border-color .12s,background .12s}.qc-check-item:hover{border-color:var(--tk-purple-300);background:var(--tk-purple-50)}.qc-check-item input[type=checkbox]{accent-color:var(--tk-purple);margin-top:2px;flex-shrink:0;width:14px;height:14px;cursor:pointer}.qcl{display:flex;flex-direction:column;gap:2px}.qcl span:first-child{font-size:13px;color:var(--text);font-weight:400}.qc-std{font-size:11px;color:var(--text-faint)}.qc-standard-item{background:var(--tk-purple-50);border-color:var(--tk-purple-200);opacity:.85}.grade-card{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.grade-card:hover{border-color:var(--tk-purple-300);box-shadow:var(--shadow-sm)}.grade-card.selected{border-color:var(--tk-purple);background:var(--tk-purple-50)}.grade-card-top{display:flex;align-items:center;gap:10px;margin-bottom:7px}.grade-pill{font-size:10px;font-weight:700;padding:3px 8px;border-radius:99px;letter-spacing:.06em;text-transform:uppercase;flex-shrink:0}.grade-pill.ruo{background:#f0eef9;color:#7a6aaa;border:1px solid #dcc5ff}.grade-pill.ruoplus{background:#fff5e6;color:#a06010;border:1px solid #f5c14b}.grade-pill.gmp{background:#f5f0ff;color:#6020b0;border:1px solid var(--tk-purple-300)}.grade-title{font-size:13.5px;font-weight:500;flex:1;color:var(--text)}.grade-check{width:18px;height:18px;border-radius:50%;background:var(--tk-purple);flex-shrink:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.grade-card.selected .grade-check{opacity:1}.grade-desc{font-size:12.5px;color:var(--text-muted);line-height:1.55;margin-bottom:7px}.grade-tests{font-size:11.5px;color:var(--text-faint);font-style:italic}.summary-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden;position:sticky;top:24px}.summary-header{padding:14px 18px 12px;border-bottom:1px solid var(--border);background:var(--bg-secondary);display:flex;align-items:center;gap:8px}.summary-header strong{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.summary-dot{width:7px;height:7px;border-radius:50%;background:var(--tk-purple);flex-shrink:0;animation:pulse 1.5s ease-in-out infinite alternate}.summary-rows{padding:12px 0}.summary-row{display:flex;flex-direction:column;gap:2px;padding:8px 18px;border-bottom:1px solid var(--border);transition:background .15s;position:relative;cursor:pointer}.summary-row:last-child{border-bottom:none}.summary-row.empty{opacity:.45;cursor:default}.summary-row.filled:hover{background:var(--tk-purple-100)}.summary-row-label{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.summary-row.filled .summary-row-label{color:var(--tk-purple)}.summary-row-val{font-size:12.5px;font-weight:400;color:var(--text);line-height:1.4}.summary-row.empty .summary-row-val{color:var(--text-faint);font-style:italic}.summary-footer{padding:12px 18px;border-top:1px solid var(--border);background:var(--bg-secondary);font-size:11.5px;color:var(--text-faint);line-height:1.5}.addon-card{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;cursor:pointer;transition:border-color .15s,box-shadow .15s;display:flex;gap:14px;align-items:flex-start;margin-bottom:10px}.addon-card:hover{border-color:var(--tk-purple-300);box-shadow:var(--shadow-sm)}.addon-card.selected{border-color:var(--tk-purple);background:var(--tk-purple-50)}.addon-icon{width:40px;height:40px;min-width:40px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.addon-icon.express{background:#fff5e0}.addon-icon.stability{background:var(--tk-purple-100)}.addon-body{flex:1}.addon-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.addon-name{font-size:14px;font-weight:500;color:var(--text)}.addon-tag{font-size:10px;font-weight:600;padding:2px 7px;border-radius:99px;letter-spacing:.05em;text-transform:uppercase}.addon-tag.express{background:var(--tk-orange-light);color:#a06010;border:1px solid #f5c14b}.addon-tag.stability{background:var(--tk-purple-100);color:var(--tk-purple);border:1px solid var(--tk-purple-200)}.addon-desc{font-size:12.5px;color:var(--text-muted);line-height:1.55;margin-bottom:6px}.addon-check-circle{width:20px;height:20px;min-width:20px;border-radius:50%;border:1.5px solid var(--border-strong);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;transition:background .15s,border-color .15s}.addon-card.selected .addon-check-circle{background:var(--tk-purple);border-color:var(--tk-purple)}.loading-checklist{width:100%;max-width:300px;display:flex;flex-direction:column;gap:0}.lc-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;color:var(--text-faint);opacity:.45;transition:opacity .4s,color .4s}.lc-item:last-child{border-bottom:none}.lc-item.active{opacity:1;color:var(--tk-purple)}.lc-item.done{opacity:1;color:var(--text-muted)}.lc-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:var(--border-strong);transition:background .3s}.lc-item.active .lc-dot{background:var(--tk-purple);animation:pulse .9s ease-in-out infinite alternate}.lc-item.done .lc-dot{background:var(--tk-green)}.msg{max-width:82%;padding:11px 15px;border-radius:var(--radius-lg);font-size:13.5px;line-height:1.55}.msg.bot{background:var(--tk-purple-50);color:var(--tk-purple-deep);border-bottom-left-radius:4px;align-self:flex-start;border:1px solid var(--tk-purple-200)}.msg.user{background:var(--tk-purple);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.typing-indicator{display:flex;align-items:center;gap:4px;padding:12px 15px;background:var(--tk-purple-50);border:1px solid var(--tk-purple-200);border-radius:var(--radius-lg);border-bottom-left-radius:4px;align-self:flex-start;max-width:80px}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--tk-purple-400);animation:typing-bounce 1.2s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}.qr{background:#fff;border:1px solid var(--tk-purple-300);border-radius:99px;padding:6px 13px;font-size:12px;color:var(--tk-purple);cursor:pointer;font-family:inherit;transition:background .12s,transform .1s}.qr:hover{background:var(--tk-purple-50);transform:scale(1.02)}.upload-zone{border:2px dashed var(--tk-purple-300);border-radius:var(--radius-lg);padding:36px 24px;text-align:center;cursor:pointer;background:var(--tk-purple-50);transition:all .2s;margin-bottom:16px}.upload-zone:hover,.upload-zone.dragover{border-color:var(--tk-purple);background:var(--tk-purple-100);transform:scale(1.005)}.ftag{font-size:10.5px;font-weight:600;background:#fff;color:var(--text-muted);padding:3px 8px;border-radius:4px;border:1px solid var(--border-strong)}.divider-or{display:flex;align-items:center;gap:12px;margin:16px 0;font-size:12px;color:var(--text-faint)}.divider-or:before,.divider-or:after{content:"";flex:1;height:1px;background:var(--border)}.price-block{background:var(--tk-purple-50);border:1.5px solid var(--tk-purple-200);border-radius:var(--radius-lg);padding:20px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.6)}}@keyframes typing-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-5px)}}@keyframes bub-rise{0%{transform:translateY(0) scale(1);opacity:.7}80%{opacity:.4}to{transform:translateY(-40px) scale(.4);opacity:0}}@keyframes sloshing{0%{d:path("M4 60 Q36 52 68 60 L68 30 Q36 22 4 30 Z")}25%{d:path("M4 60 Q36 55 68 60 L68 25 Q36 18 4 25 Z")}50%{d:path("M4 60 Q36 50 68 60 L68 32 Q36 24 4 32 Z")}75%{d:path("M4 60 Q36 56 68 60 L68 22 Q36 16 4 22 Z")}to{d:path("M4 60 Q36 53 68 60 L68 28 Q36 20 4 28 Z")}}.bub{animation:bub-rise 1.6s ease-in infinite;opacity:0}.bub:nth-child(1){animation-delay:0s;animation-duration:1.4s}.bub:nth-child(2){animation-delay:.55s;animation-duration:1.9s}.bub:nth-child(3){animation-delay:1.1s;animation-duration:1.5s}.flask-liquid-anim{animation:sloshing 2.2s ease-in-out infinite alternate;transform-origin:bottom center}@media (max-width: 520px){body{padding:16px 10px 60px}.step-body,.upload-body{padding:20px}.step-nav{padding:0 20px 20px}.spec-row{grid-template-columns:1fr}.component-row,.col-header{grid-template-columns:1fr 90px 70px 28px}}
