.login-container{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e3c72,#2a5298,#7db9e8);position:relative;overflow:hidden}.login-background{position:absolute;top:0;left:0;right:0;bottom:0;z-index:0}.login-box{background:#fffffff2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:30px;width:100%;max-width:300px;box-shadow:0 10px 40px #0003;z-index:10;animation:slideUp .6s ease}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.login-header{text-align:center;margin-bottom:24px}.login-logo{font-size:28px;font-weight:700;color:#1e3c72}.login-form{margin-bottom:20px}.form-group{margin-bottom:14px}.form-label{display:block;font-weight:500;margin-bottom:6px;color:#333;font-size:13px}.form-input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:13px;font-family:inherit;transition:all .3s}.form-input:focus{border-color:#2a5298;box-shadow:0 0 0 3px #1e3c7226}.login-error{background:#fff1f0;color:#ff4d4f;padding:12px 16px;border-radius:4px;font-size:14px;margin-bottom:20px;border-left:3px solid #ff4d4f}.login-button{width:100%;padding:10px;background:linear-gradient(135deg,#1e3c72,#2a5298);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s}.login-button:hover{transform:translateY(-2px);box-shadow:0 8px 25px #1e3c7266}.login-button:active{transform:translateY(0)}.login-footer{text-align:center}.login-tip{font-size:12px;color:#999}.demo-accounts{background:#f5f7fa;padding:12px;border-radius:4px;font-size:12px;color:#666}.demo-accounts p{font-weight:600;margin-bottom:8px}.demo-accounts ul{list-style:none}.demo-accounts li{padding:4px 0;color:#999}.customers-container{width:100%}select{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;cursor:pointer;transition:border .3s}select:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.customer-list{display:flex;flex-direction:column;gap:6px}.customer-item{border:1px solid #e8e8e8;border-radius:8px;background:#fff;overflow:hidden;transition:all .3s ease}.customer-item:hover{box-shadow:0 4px 12px #667eea1a;border-color:#667eea}.customer-header{display:flex;justify-content:space-between;align-items:center;padding:8px 20px;cursor:pointer;transition:background .3s}.customer-header:hover{background:#f9f9f9}.customer-main{flex:1;min-width:0}.customer-name{font-size:14px;font-weight:600;color:#333;margin-bottom:2px;display:flex;align-items:center;gap:6px}.expand-icon{display:inline-block;font-size:10px;color:#667eea;transition:transform .3s;cursor:pointer;padding:4px;margin-right:4px}.expand-icon:hover{color:#1e3c72}.customer-dropdown{position:absolute;top:100%;left:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;min-width:150px;z-index:100;animation:fadeInDown .2s ease}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{padding:8px 0}.dropdown-btn{width:100%;padding:10px 16px;background:transparent;border:none;color:#333;font-size:14px;text-align:left;cursor:pointer;transition:all .2s}.dropdown-btn:hover{background:linear-gradient(135deg,#1e3c720d,#1e3c7205);color:#1e3c72}.customer-item{border:1px solid #e8e8e8;border-radius:8px;background:#fff;overflow:hidden;transition:all .3s ease;position:relative}.customer-company{font-size:14px;color:#666;margin-bottom:4px}.customer-address{font-size:11px;color:#999}.customer-status{margin-left:20px;flex-shrink:0}.customer-details{background:#f9f9f9;padding:16px 20px;border-top:1px solid #e8e8e8;animation:slideDown .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #e8e8e8}.detail-row:last-child{border-bottom:none}.detail-label{font-size:14px;color:#666;font-weight:500;min-width:100px}.detail-value{font-size:14px;color:#333;text-align:right;flex:1;white-space:pre-line}.detail-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid #e8e8e8}.contacts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid #667eea;min-height:30px}.contacts-title{font-size:14px;font-weight:600;color:#333;line-height:1.2}.btn-add-contact{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#1e3c72,#2a5298);color:#fff;border:none;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s;box-shadow:0 2px 8px #1e3c724d}.btn-add-contact:hover{transform:scale(1.1);box-shadow:0 4px 12px #1e3c7266}.contact-form{background:#f9f9f9;padding:16px;border-radius:4px;margin-bottom:16px;border:1px solid #e8e8e8}.contact-form .form-group{margin-bottom:12px}.contact-form .form-group:last-child{margin-bottom:0}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1;min-width:0}.form-label{display:block;font-size:13px;color:#666;margin-bottom:6px;font-weight:500}.form-textarea{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;resize:vertical;transition:border .3s}.form-textarea:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33;outline:none}.textarea-counter{font-size:12px;color:#999;text-align:right;margin-top:4px}.file-upload{border:2px dashed #ddd;border-radius:4px;padding:16px;text-align:center;cursor:pointer;transition:all .3s}.file-upload:hover{border-color:#667eea;background:#f9f9f9}.file-input{display:none}.upload-text{display:block;color:#999;font-size:14px}.attachments-list{margin-top:12px;border-top:1px solid #ddd;padding-top:12px}.attachment-item{padding:8px;background:#f0f2f5;border-radius:4px;margin-bottom:8px;font-size:13px;color:#333}.contact-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.contacts-list{margin-bottom:16px}.contact-item{padding:12px;background:#f9f9f9;border-radius:4px;margin-bottom:8px;border:1px solid #e8e8e8}.contact-item:last-child{margin-bottom:0}.empty-contacts{padding:16px;text-align:center;color:#999;background:#f9f9f9;border-radius:4px;margin-bottom:12px}.contact-info-row{display:flex;gap:30px;margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid #e8e8e8;flex-wrap:wrap;align-items:center;justify-content:flex-start;min-height:18px}.contact-info-row.contact-clickable{cursor:pointer;transition:background .3s;padding:8px;margin:-8px;border-radius:4px}.contact-info-row.contact-clickable:hover{background:#f0f2f5}.contact-visit-dropdown{background:#f0f2f5;border-radius:4px;padding:12px;margin-bottom:12px;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.visit-record-header{font-size:13px;color:#666;font-weight:600;margin-bottom:8px}.visit-record-content{font-size:14px;color:#333;white-space:pre-line;line-height:1.6;margin-bottom:12px}.btn-visit-dropdown{margin-top:3px;width:auto;padding:1px 3px;font-size:8px!important;line-height:1.2;height:auto;min-height:14px}.btn-copy-contact{padding:2px 6px;background:#ccc;color:#fff;border:none;border-radius:3px;font-size:10px;cursor:pointer;margin-left:auto;white-space:nowrap}.btn-copy-contact:hover{background:#999}.btn-add-visit{padding:6px 12px;background:linear-gradient(135deg,#1e3c72,#2a5298);color:#fff;border:none;border-radius:4px;font-size:12px;font-weight:500;cursor:pointer;transition:all .3s;white-space:nowrap;box-shadow:0 2px 6px #1e3c7233}.btn-add-visit:hover{transform:translateY(-1px);box-shadow:0 4px 10px #1e3c724d}.detail-clickable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .3s}.detail-clickable:hover{color:#1e3c72}.contact-text{font-size:13px;color:#333;font-weight:500;flex-shrink:0;display:flex;align-items:center;min-height:16px;line-height:1.2}.contact-text:nth-child(1){min-width:calc(5em + 20px)}.contact-text:nth-child(2){min-width:calc(12em + 30px)}.contracts-container{width:100%;min-height:calc(100vh - 120px);overflow-x:auto}.search-box{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-shrink:0}.modal{max-height:90vh;width:1100px!important;max-width:95vw!important;overflow-y:auto}.modal .form-group{margin-bottom:12px}.modal .form-textarea{min-height:60px}.modal .form-row{display:flex;gap:12px}.modal .form-row .form-group{flex:1;min-width:0}table thead tr th{color:#1565c0!important;font-weight:600;font-size:12px!important;padding:6px 8px!important;background:transparent!important}table tbody tr td{font-size:12px;padding:6px 8px}table tbody tr td:last-child{padding-left:0;padding-right:10px;visibility:visible!important}table th:nth-child(1),table th:nth-child(2),table thead th:nth-child(1),table thead th:nth-child(2){min-width:auto!important;width:auto!important;text-align:left!important}table td:nth-child(1),table td:nth-child(2),table tbody td:nth-child(1),table tbody td:nth-child(2){text-align:left!important;width:auto!important;white-space:nowrap}table td:nth-child(1),table td:nth-child(2){text-align:left}table td:nth-child(3){white-space:nowrap!important}table td:nth-child(4),table td:nth-child(5),table td:nth-child(6),table td:nth-child(7),table td:nth-child(8),table td:nth-child(9){text-align:left}table th:nth-child(2){min-width:120px}table th:nth-child(3){min-width:280px;max-width:none}table th:nth-child(5){min-width:120px}table th:nth-child(6){min-width:120px}table th:nth-child(7){min-width:120px}table th:nth-child(10){min-width:80px;max-width:80px}.product-select-row{display:flex;gap:8px;align-items:center}.product-select-row .form-input{flex:1}.selected-products-list{margin-top:12px;border:1px solid #e0e0e0;border-radius:4px;overflow:hidden}.selected-products-list table{width:100%;margin:0;table-layout:fixed}.selected-products-list table thead tr th{font-size:11px!important;padding:4px 6px!important;white-space:nowrap}.selected-products-list table tbody tr td{font-size:11px;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selected-products-list table th:nth-child(1),.selected-products-list table td:nth-child(1){width:50px;text-align:center;min-width:50px}.selected-products-list table th:nth-child(2),.selected-products-list table td:nth-child(2){width:80px;min-width:80px}.selected-products-list table th:nth-child(3),.selected-products-list table td:nth-child(3){width:180px;min-width:180px}.selected-products-list table th:nth-child(4),.selected-products-list table td:nth-child(4){width:70px;min-width:70px;text-align:right}.selected-products-list table th:nth-child(5),.selected-products-list table td:nth-child(5){width:100px;min-width:100px}.selected-products-list table th:nth-child(6),.selected-products-list table td:nth-child(6){width:80px;min-width:80px}.selected-products-list table th:nth-child(7),.selected-products-list table td:nth-child(7){width:60px;min-width:60px;text-align:center}.selected-products-list table th:nth-child(8),.selected-products-list table td:nth-child(8){width:90px;min-width:90px;text-align:right}.selected-products-list table th:nth-child(9),.selected-products-list table td:nth-child(9){width:70px;min-width:70px;text-align:center}.selected-products-list table tfoot tr td{padding:6px;background:#f5f5f5}.contract-detail-row td{padding:0 0 0 20px!important}.contract-detail-row td table{border-collapse:collapse!important}.contract-detail-row td table th,.contract-detail-row td table td{text-align:left!important;padding:2px 4px!important;background:transparent!important}.contract-detail-row td table th:nth-child(1),.contract-detail-row td table td:nth-child(1){text-align:left!important;width:25px!important;min-width:25px!important}.contract-detail-row td table th:nth-child(2),.contract-detail-row td table td:nth-child(2){padding-left:24px!important}.contract-detail-row td table th:nth-child(5),.contract-detail-row td table td:nth-child(5){margin-left:-46px!important;padding-left:0!important}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none!important;margin:0!important}input[type=number]{-moz-appearance:textfield!important;-webkit-appearance:none!important;appearance:none!important}.products-container{width:100%}textarea{font-family:inherit;border:1px solid #ddd;padding:10px 12px;border-radius:4px;font-size:14px;resize:vertical}textarea:focus{border-color:#2a5298;box-shadow:0 0 0 3px #1e3c721a}.stock-available{color:#52c41a;font-weight:600}.stock-unavailable{color:#ff4d4f;font-weight:600}table th:nth-child(1){min-width:130px}table th:nth-child(2){min-width:100px}table th:nth-child(3){min-width:100px}table th:nth-child(4){min-width:100px}table th:nth-child(5){min-width:180px}table th:nth-child(6){min-width:150px}.analytics-container{width:100%}.stat-detail{padding:20px;display:flex;flex-direction:column;justify-content:center}.detail-item{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #eee}.detail-label{color:#666;font-weight:500}.detail-value{color:#333;font-weight:600;font-size:16px}.reports-container{width:100%}.report-filter{display:flex;align-items:center;gap:15px;margin-bottom:20px}.report-filter label{font-weight:600;color:#333}.report-filter select{padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;cursor:pointer}.report-card{background:#fff;border-radius:8px;padding:30px;box-shadow:0 2px 8px #00000014}.report-header{border-bottom:2px solid #667eea;padding-bottom:20px;margin-bottom:30px}.report-header h1{font-size:24px;color:#333;margin-bottom:10px}.report-date{font-size:14px;color:#666;margin-bottom:5px}.report-info{font-size:12px;color:#999}.report-section{margin-bottom:30px}.report-section h3{font-size:16px;font-weight:600;color:#333;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #eee}.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px}.report-item{background:#f5f7fa;border-radius:8px;padding:20px;text-align:center;border:1px solid #eee}.report-icon{font-size:32px;margin-bottom:10px}.report-value{font-size:24px;font-weight:700;background:linear-gradient(135deg,#1e3c72,#2a5298);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:5px}.report-label{font-size:12px;color:#999}.report-footer{display:flex;gap:10px;margin-top:30px;padding-top:20px;border-top:1px solid #eee}table th:nth-child(1){min-width:140px}table th:nth-child(2){min-width:140px}@media print{.report-footer{display:none}.report-card{box-shadow:none;border:1px solid #ddd}}.chromatography-school-page{padding:24px;max-width:1000px;margin:0 auto}.page-header{margin-bottom:32px}.page-title{font-size:28px;font-weight:700;color:#722ed1;margin:0 0 8px}.page-subtitle{font-size:14px;color:#666;margin:0}.product-catalog-section{background:#fff;border-radius:12px;padding:24px;margin-bottom:24px;box-shadow:0 2px 8px #0000000f}.section-title{font-size:18px;font-weight:600;color:#333;margin:0 0 20px}.subsection-title{font-size:14px;font-weight:500;color:#666;margin:16px 0 12px}.product-tabs{display:flex;gap:12px;margin-bottom:16px;border-bottom:1px solid #f0f0f0;padding-bottom:12px}.product-tab{display:flex;align-items:center;gap:8px;padding:10px 20px;border:1px solid #e8e8e8;background:#fff;border-radius:8px;cursor:pointer;font-size:14px;color:#666;transition:all .2s}.product-tab:hover{border-color:#722ed1;color:#722ed1}.product-tab.active{background:#722ed1;border-color:#722ed1;color:#fff}.product-tab-name{font-weight:500}.product-tab-count{background:#00000014;padding:2px 8px;border-radius:10px;font-size:12px}.product-tab.active .product-tab-count{background:#fff3}.product-upload-section{margin-bottom:16px}.file-input-hidden{display:none}.product-upload-label{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border:1px solid #d9d9d9;border-radius:20px;cursor:pointer;transition:all .25s ease;background:linear-gradient(135deg,#f9f0ff,#ebd9ff);box-shadow:0 2px 8px #722ed11a}.product-upload-label:hover{border-color:#722ed1;background:linear-gradient(135deg,#722ed1,#5318a7);transform:translateY(-1px);box-shadow:0 4px 12px #722ed133}.product-upload-label:hover .product-upload-icon,.product-upload-label:hover .product-upload-title,.product-upload-label:hover .product-upload-hint{color:#fff;fill:#fff}.product-upload-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#722ed11a;border-radius:50%;color:#722ed1;transition:all .25s ease}.product-upload-label:hover .product-upload-icon{background:#fff3}.product-upload-text{display:flex;flex-direction:column;gap:0}.product-upload-title{font-size:13px;font-weight:500;color:#722ed1;transition:color .25s ease}.product-upload-hint{font-size:11px;color:#999;transition:color .25s ease}.product-upload-label:hover .product-upload-hint{color:#fffc}.product-file-grid{min-height:120px}.product-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;color:#999;background:#fafafa;border-radius:8px;border:1px dashed #e8e8e8}.product-empty-icon{font-size:32px;margin-bottom:8px;opacity:.5}.application-case-card{margin-bottom:24px}.card-title{font-size:14px;font-weight:600;color:#333;margin:0 0 12px}.text-record-input{width:100%;min-height:100px;padding:12px;border:1px solid #e8e8e8;border-radius:8px;font-size:13px;resize:vertical;font-family:inherit;transition:border-color .2s}.text-record-input:focus{outline:none;border-color:#722ed1}.text-record-input::placeholder{color:#bfbfbf}.case-section{margin-top:24px;padding-top:24px;border-top:1px solid #f0f0f0}.case-tabs{display:flex;gap:12px;margin-bottom:16px}.case-tab{display:flex;align-items:center;gap:8px;padding:10px 18px;border:2px solid;border-radius:24px;cursor:pointer;font-size:14px;font-weight:500;transition:all .25s ease}.case-tab:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}.case-tab.active{transform:translateY(-1px);box-shadow:0 4px 16px #00000026}.case-tab-name{font-weight:600}.case-tab-count{padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600}.case-list-section{background:#fafafa;border-radius:8px;padding:16px}.case-list-header{display:grid;grid-template-columns:50px 120px 120px 140px 140px 70px;gap:8px;padding:10px 8px;font-size:12px;font-weight:600;color:#666;border-bottom:2px solid #e8e8e8;margin-bottom:8px}.case-list-row{display:grid;grid-template-columns:50px 120px 120px 140px 140px 70px;gap:8px;padding:8px;align-items:center;background:#fff;border-radius:6px;margin-bottom:8px;border:1px solid #f0f0f0}.case-list-row:hover{border-color:#d9d9d9}.col-seq{text-align:center;font-size:13px;color:#999}.col-name-input,.col-target-input{width:100%;padding:6px 8px;border:1px solid #e8e8e8;border-radius:4px;font-size:12px;transition:border-color .2s}.col-name-input:focus,.col-target-input:focus{outline:none;border-color:#722ed1}.col-name-input::placeholder,.col-target-input::placeholder{color:#ccc}.col-file-cell{display:flex;align-items:center;justify-content:center;min-height:36px}.file-preview-item{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;padding:4px;border-radius:4px;transition:background .2s}.file-preview-item:hover{background:#f5f5f5}.file-type-badge-small{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;font-size:8px;font-weight:700;color:#fff;text-transform:uppercase}.file-name-small{font-size:9px;color:#666;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.file-upload-btn{display:inline-block;padding:4px 12px;background:#f0f0f0;color:#666;border-radius:4px;font-size:11px;cursor:pointer;transition:all .2s}.file-upload-btn:hover{background:#722ed1;color:#fff}.delete-record-btn{padding:4px 10px;background:#fff1f0;color:#ff4d4f;border:1px solid #ffa39e;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.delete-record-btn:hover{background:#ff4d4f;color:#fff;border-color:#ff4d4f}.add-record-btn{width:100%;padding:10px;background:#fff;color:#722ed1;border:2px dashed #d9d9d9;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s;margin-top:8px}.add-record-btn:hover{border-color:#722ed1;background:#f9f0ff}.case-upload-section{margin-bottom:16px}.case-upload-label{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border:1px solid;border-color:var(--case-color);border-radius:20px;cursor:pointer;transition:all .25s ease;background:linear-gradient(135deg,#722ed10d,#722ed11a)}.case-upload-label:hover{background:var(--case-color);transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.case-upload-label:hover .case-upload-icon,.case-upload-label:hover .case-upload-title,.case-upload-label:hover .case-upload-hint{color:#fff;fill:#fff}.case-upload-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#722ed11a;border-radius:50%;color:var(--case-color);transition:all .25s ease}.case-upload-label:hover .case-upload-icon{background:#ffffff40}.case-upload-text{display:flex;flex-direction:column;gap:0}.case-upload-title{font-size:13px;font-weight:500;color:var(--case-color);transition:color .25s ease}.case-upload-hint{font-size:11px;color:#999;transition:color .25s ease}.case-upload-label:hover .case-upload-hint{color:#fffc}.case-file-grid{min-height:120px}.case-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;color:#999;background:#fafafa;border-radius:8px;border:1px dashed #e8e8e8}.case-empty-icon{font-size:32px;margin-bottom:8px;opacity:.6}.file-icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:12px}.file-icon-item{position:relative;aspect-ratio:1;background:linear-gradient(145deg,#fff,#f9f0ff);border:1px solid #e8e8e8;border-radius:10px;overflow:hidden;cursor:pointer;transition:all .25s ease;display:flex;flex-direction:column;box-shadow:0 2px 6px #0000000a}.file-icon-item:hover{border-color:var(--item-color, #722ed1);box-shadow:0 6px 16px #722ed12e;transform:translateY(-3px) scale(1.02)}.file-icon-preview{flex:1;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#fafafa,#f5f0ff);overflow:hidden}.file-icon-preview img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.file-icon-item:hover .file-icon-preview img{transform:scale(1.08)}.file-icon-default{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(135deg,#fafafa,#f5f0ff)}.file-type-badge{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;font-size:9px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 3px 8px #00000026}.file-type-badge-large{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:12px;font-size:18px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:1px;box-shadow:0 4px 16px #0003}.file-icon-info{padding:5px 6px;background:#fff;border-top:1px solid #f0f0f0}.file-icon-name{display:block;font-size:10px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.file-icon-delete{position:absolute;top:4px;right:4px;width:18px;height:18px;background:#ff4d4fe6;color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:14px;line-height:1;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #ff4d4f4d}.file-icon-item:hover .file-icon-delete{opacity:1}.file-icon-delete:hover{background:#ff4d4f;transform:scale(1.1)}.text-records-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.text-record-card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000000f}.preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:40px}.preview-modal-content{position:relative;background:#fff;border-radius:12px;max-width:90%;max-height:90%;overflow:hidden;display:flex;flex-direction:column}.preview-modal-close{position:absolute;top:12px;right:12px;width:32px;height:32px;background:#00000080;color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:20px;z-index:10;display:flex;align-items:center;justify-content:center;transition:background .2s}.preview-modal-close:hover{background:#000c}.preview-modal-header{padding:16px 20px;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;gap:12px}.preview-modal-header h3{margin:0;font-size:16px;font-weight:500;color:#333;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-file-size{font-size:12px;color:#999}.preview-modal-body{padding:20px;overflow:auto;max-height:calc(90vh - 100px);display:flex;align-items:center;justify-content:center}.preview-image{max-width:100%;max-height:calc(90vh - 100px);object-fit:contain;border-radius:4px}.preview-file-info{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px;text-align:center}.preview-file-icon{font-size:72px}.preview-file-name{font-size:14px;color:#333;max-width:300px;word-break:break-all}.preview-file-hint{font-size:12px;color:#999}.preview-download-btn{display:inline-block;padding:10px 24px;background:#722ed1;color:#fff;border-radius:6px;text-decoration:none;font-size:14px;transition:background .2s}.preview-download-btn:hover{background:#5318a7}@media (max-width: 768px){.chromatography-school-page{padding:16px}.product-tabs,.case-tabs{flex-wrap:wrap}.product-tab,.case-tab{flex:1;min-width:calc(50% - 6px);justify-content:center}.case-list-header,.case-list-row{grid-template-columns:40px 1fr 1fr;gap:6px}.col-standard,.col-app,.col-action{display:none}.file-icon-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:10px}.text-records-section{grid-template-columns:1fr}.preview-modal{padding:16px}}.app-container{width:100%;height:100vh;display:flex;background:linear-gradient(135deg,#667eea,#764ba2)}.app-content{flex:1;display:flex;flex-direction:column;overflow-x:hidden}.app-header{background:#fffffff2;padding:20px;box-shadow:0 2px 8px #0000001a;border-bottom:1px solid #eee}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;width:100%}.header-logo{font-size:24px;font-weight:700;color:#1e3c72}.header-user{display:flex;align-items:center;gap:20px}.user-info{text-align:right;font-size:14px}.user-name{font-weight:600;color:#333}.user-role{color:#999;font-size:12px}.logout-btn{padding:8px 16px;background:#ff4d4f;color:#fff;border-radius:4px;font-size:14px;transition:background .3s}.logout-btn:hover{background:#ff7875}.app-body{flex:1;display:flex;overflow:hidden}.sidebar{width:200px;background:#fff;border-right:1px solid #eee;overflow-y:auto;display:flex;flex-direction:column}.sidebar-menu{list-style:none;height:100%;display:flex;flex-direction:column;padding:0}.sidebar-item{border-bottom:1px solid #f0f0f0;display:flex}.sidebar-link{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 15px;color:#666;text-decoration:none;font-size:14px;font-weight:500;transition:all .3s;cursor:pointer;width:100%}.sidebar-link:hover{background:#f5f5f5;color:#667eea}.sidebar-link.active{background:linear-gradient(90deg,#667eea,#667eea1a);color:#667eea;border-left:3px solid #667eea;padding-left:17px}.sidebar-icon{font-size:16px}.main-content{flex:1;overflow-y:auto;background:#f5f7fa;padding:30px}.main-content-wrapper{max-width:1400px;margin:0 auto}.page-title{font-size:28px;font-weight:700;margin-bottom:30px;color:#333}.page-subtitle{font-size:14px;color:#999;margin-bottom:20px}.card{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 8px #00000014;margin-bottom:20px}.card-title{font-size:18px;font-weight:600;margin-bottom:20px;color:#333}.button-group{display:flex;gap:10px;margin-bottom:20px}.btn{padding:10px 20px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s;border:none;outline:none}.btn-primary{background:#667eea;color:#fff}.btn-primary:hover{background:#5568d3;box-shadow:0 4px 12px #667eea66}.btn-secondary{background:#f0f0f0;color:#333}.btn-secondary:hover{background:#e0e0e0}.btn-danger{background:#ff4d4f;color:#fff}.btn-danger:hover{background:#ff7875}.btn-success{background:#52c41a;color:#fff}.btn-success:hover{background:#73d13d}.btn-small{padding:6px 12px;font-size:12px}.form-group{margin-bottom:16px}.form-label{display:block;font-weight:600;margin-bottom:8px;color:#333;font-size:14px}.form-input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border .3s}.form-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;padding:30px;max-width:500px;width:90%;box-shadow:0 10px 40px #0003}.modal-header{font-size:20px;font-weight:600;margin-bottom:20px;color:#333}.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:30px}.status-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.status-active{background:#e6f7ed;color:#52c41a}.status-pending{background:#fff7e6;color:#fa8c16}.status-completed{background:#e6f4ff;color:#1890ff}.status-inactive{background:#f5f5f5;color:#999}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 8px #00000014;border-left:4px solid #667eea}.stat-label{color:#999;font-size:14px;margin-bottom:8px}.stat-value{font-size:32px;font-weight:700;color:#333}.stat-unit{font-size:12px;color:#999;margin-left:4px}.search-box{display:flex;gap:10px;margin-bottom:20px}.search-box input{flex:1;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.search-box button{padding:10px 24px;background:linear-gradient(135deg,#1e3c72,#2a5298);color:#fff;border-radius:6px;cursor:pointer;font-weight:600;transition:all .3s;box-shadow:0 2px 8px #1e3c724d}.search-box button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1e3c7266}.empty-state{text-align:center;padding:60px 20px;color:#999}.empty-state-icon{font-size:48px;margin-bottom:16px}.empty-state-text{font-size:14px;margin-bottom:20px}.chart-container{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 8px #00000014;margin-bottom:20px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#f5f5f5;color:#333;line-height:1.6}html,body,#root{width:100%;height:100%}button{cursor:pointer;border:none;outline:none;font-family:inherit}input,select,textarea{font-family:inherit;border:1px solid #ddd;padding:8px 12px;border-radius:4px;font-size:14px}input:focus,select:focus,textarea:focus{outline:none;border-color:#2a5298;box-shadow:0 0 0 3px #1e3c721a}table{width:100%;border-collapse:collapse;table-layout:auto;min-width:1000px}th,td{padding:12px 16px;text-align:left;border-bottom:1px solid #eee;min-width:100px}th{color:#333;font-weight:600;white-space:nowrap;padding:14px 16px}tr:hover{background:linear-gradient(135deg,#1e3c7208,#1e3c7203)}.text-center{text-align:center}.mt-10{margin-top:10px}.mb-10{margin-bottom:10px}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.p-10{padding:10px}.p-20{padding:20px}.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center}.flex-center{display:flex;justify-content:center;align-items:center}.gap-10{gap:10px}.gap-20{gap:20px}
