*{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a1a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;font-family:Inter,system-ui,-apple-system,sans-serif}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button{opacity:1}input[type=number]::-webkit-outer-spin-button{opacity:1}.app{max-width:1400px;margin:0 auto;padding:1rem 1.5rem 2rem}.header{background:linear-gradient(135deg,#0f2b4a,#1a5276);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.6rem 1rem;display:flex}.header h1{letter-spacing:-.02em;color:#fff;margin:0;font-size:1.4rem;font-weight:700}.btn{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:.35rem .85rem;font-size:.82rem;font-weight:500;transition:all .15s}.btn:hover{background:#f3f4f6;border-color:#9ca3af}.btn-primary{color:#fff;background:#1a5276;border-color:#1a5276}.btn-primary:hover{background:#21669a;border-color:#21669a}.btn-light{color:#fff;background:#ffffff26;border-color:#ffffff4d}.btn-light:hover{background:#ffffff40;border-color:#ffffff80}.case-bar{background:#eef4fb;border:1px solid #c9ddf0;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:.6rem .85rem;display:flex}.case-id{color:#0f2b4a;font-size:.95rem;font-weight:600}.build-badge{text-transform:uppercase;letter-spacing:.04em;color:#1a5276;background:#d6e7f7;border-radius:4px;padding:.15rem .45rem;font-size:.72rem;font-weight:600}.case-summary{color:#6b7280;font-size:.85rem}.case-actions{align-items:center;gap:.5rem;margin-left:auto;display:flex}.controls-bar{color:#4b5563;background:#f5f9fd;border:1px solid #c9ddf0;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.5rem;padding:.45rem .85rem;font-size:.8rem;display:flex}.control-group{align-items:center;gap:.3rem;display:flex}.control-group+.control-group{border-left:1px solid #c9ddf0;padding-left:.75rem}.control-label{color:#1a5276;white-space:nowrap;font-weight:500}.control-input{text-align:center;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:4px;width:3.2rem;padding:.2rem .3rem;font-size:.8rem;transition:border-color .15s}.control-input:focus{border-color:#5ba3d9;outline:none;box-shadow:0 0 0 2px #1a527626}.control-hint{color:#9ca3af;font-size:.72rem}.upload-card{background:#eef4fb;border:1px solid #c9ddf0;border-radius:12px;max-width:480px;margin:2rem auto;padding:2rem}.upload-card h2{color:#0f2b4a;margin-bottom:1.25rem;font-size:1.2rem;font-weight:700}.upload-field{margin-bottom:1rem}.upload-field label{color:#374151;margin-bottom:.3rem;font-size:.85rem;font-weight:600;display:block}.upload-field .optional{color:#9ca3af;font-weight:400}.upload-field select,.upload-field input[type=file]{color:#374151;font-size:.9rem}.upload-field select{background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:.35rem .5rem}.upload-error{color:#dc2626;margin-top:.75rem;font-size:.85rem}.gene-search{width:260px;position:relative}.gene-search-input{color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:6px;width:100%;padding:.4rem .7rem;font-size:.85rem;transition:border-color .15s}.gene-search-input::placeholder{color:#9ca3af}.gene-search-input:focus{border-color:#5ba3d9;outline:none;box-shadow:0 0 0 2px #1a527626}.gene-search-dropdown{z-index:20;background:#fff;border:1px solid #d1d5db;border-top:none;border-radius:0 0 6px 6px;max-height:280px;margin:0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #00000014}.gene-search-item{cursor:pointer;justify-content:space-between;align-items:center;padding:.4rem .7rem;font-size:.82rem;transition:background .1s;display:flex}.gene-search-item:hover,.gene-search-item.active{background:#eef4fb}.gene-search-item .name{color:#0f2b4a;font-weight:500}.gene-search-item .meta{color:#6b7280;font-size:.75rem}.gene-search-item .probe-count{color:#1a5276}.about-page{background:#eef4fb;border:1px solid #c9ddf0;border-radius:12px;max-width:720px;margin:1.5rem auto;padding:2rem 2.5rem}.about-content h2{color:#0f2b4a;margin:0 0 1.25rem;font-size:1.3rem;font-weight:700}.about-content h3{color:#1a5276;margin:1.25rem 0 .4rem;font-size:1rem;font-weight:600}.about-content p{color:#374151;margin:.4rem 0;font-size:.9rem;line-height:1.55}.about-content ul{color:#374151;margin:.4rem 0 .4rem 1.25rem;padding:0;font-size:.9rem;line-height:1.6}.about-content code{color:#0f2b4a;background:#d6e7f7;border-radius:3px;padding:.1rem .35rem;font-size:.82rem}.about-content .btn{margin-top:1.5rem}
