.app-shell{display:flex;flex-direction:column;height:100dvh;max-width:480px;margin:0 auto;background:#f3f4f6;position:relative;overflow:hidden}.app-header{flex-shrink:0;background:#2563eb;color:#fff;box-shadow:0 1px 3px #0000001a;z-index:100}.app-header-inner{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 16px}.app-title{margin:0;font-size:17px;font-weight:600;letter-spacing:.5px}.header-breadcrumb{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.back-btn{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;padding:4px 6px 4px 0;flex-shrink:0;line-height:1}.breadcrumb-trail{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden}.breadcrumb-segment{display:flex;align-items:center;gap:4px;flex-shrink:0}.breadcrumb-sep{color:#ffffff80;font-size:12px}.breadcrumb-link{background:none;border:none;color:#ffffffb3;font-size:13px;cursor:pointer;padding:0;white-space:nowrap}.breadcrumb-link:hover{color:#fff}.breadcrumb-current{color:#fff;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.offline-badge{font-size:11px;background:#ffffff40;padding:2px 8px;border-radius:10px;white-space:nowrap;flex-shrink:0}.app-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}.app-tabbar{flex-shrink:0;display:flex;background:#fff;border-top:1px solid #e5e7eb;height:56px;padding-bottom:env(safe-area-inset-bottom)}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:#9ca3af;font-size:11px;gap:2px;transition:color .15s}.tab-item.tab-active{color:#2563eb}.tab-icon{font-size:20px;line-height:1}.tab-label{font-size:10px;font-weight:500}@media(min-width:768px){.app-shell,.app-content{max-width:768px}.detail-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1024px){.app-shell{max-width:960px}.card-grid{grid-template-columns:repeat(4,1fr)}}@media(hover:none)and (pointer:coarse){.tab-item,button,.clickable{min-height:44px;min-width:44px}}@supports (padding-bottom: env(safe-area-inset-bottom)){.app-tabbar{padding-bottom:env(safe-area-inset-bottom,0)}}.dashboard-page{padding:16px}.stat-cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:20px}.stat-card{background:#fff;border-radius:10px;padding:12px 10px;border-top:3px solid #2563eb;box-shadow:0 1px 3px #0000000f}.stat-value{font-size:22px;font-weight:700;line-height:1.2}.stat-unit{font-size:11px;font-weight:400;margin-left:1px}.stat-label{font-size:11px;color:#6b7280;margin-top:4px}.card-section{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f}.section-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px;font-size:15px;font-weight:600;color:#111827}.view-all-btn{background:none;border:none;color:#2563eb;font-size:13px;cursor:pointer;padding:0}.trend-section{display:flex;flex-direction:column;align-items:center}.trend-chart-area{margin-bottom:8px}.trend-labels{display:flex;gap:0;width:100%;justify-content:space-between;padding:0 8px}.trend-day-label{text-align:center;min-width:30px}.trend-day-count{font-size:13px;font-weight:700;color:#2563eb}.trend-day-date{font-size:10px;color:#9ca3af;margin-top:2px}.abnormal-item{margin-bottom:12px}.abnormal-item:last-child{margin-bottom:0}.abnormal-item-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.abnormal-rank{font-size:12px;font-weight:700;color:#9ca3af;min-width:20px}.abnormal-name{flex:1;font-size:14px;color:#374151}.abnormal-count{font-size:13px;color:#6b7280}.progress-bar{height:6px;background:#f3f4f6;border-radius:3px;margin-bottom:2px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .4s ease}.abnormal-pct{font-size:11px;color:#9ca3af;text-align:right}.report-mini-card{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:background .15s;gap:4px}.report-mini-card:last-child{border-bottom:none}.report-mini-card:active{background:#f9fafb;margin:0 -16px;padding:12px 16px;border-radius:8px}.report-mini-left{display:flex;flex-direction:column;gap:2px;flex:1}.report-mini-name{font-size:14px;font-weight:500;color:#111827}.report-mini-date{font-size:12px;color:#9ca3af}.report-mini-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.report-mini-abnormal{font-size:11px;color:#9ca3af}.report-mini-actions{width:100%;display:flex;justify-content:flex-end;margin-top:4px}.mini-action-btn{padding:4px 12px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;color:#6b7280;font-size:11px;cursor:pointer;transition:all .15s}.mini-action-btn:hover{border-color:#2563eb;color:#2563eb}.mini-action-primary{background:#eff6ff;color:#2563eb;border-color:#bfdbfe;font-weight:600}.quick-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.quick-action-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;background:#f9fafb;border:1px solid #f3f4f6;border-radius:10px;cursor:pointer;transition:all .15s}.quick-action-card:hover{background:#eff6ff;border-color:#bfdbfe}.quick-action-icon{font-size:28px}.quick-action-label{font-size:12px;color:#374151;font-weight:500}.empty-hint{color:#9ca3af;font-size:14px;text-align:center;padding:20px 0}.disclaimer{font-size:11px;color:#9ca3af;text-align:center;padding:8px 0 16px;line-height:1.6;margin:0}.report-list-page{padding:16px}.list-top-bar{display:flex;gap:10px;align-items:center;margin-bottom:12px}.search-box{display:flex;align-items:center;background:#fff;border-radius:10px;padding:0 12px;height:44px;box-shadow:0 1px 3px #0000000f;flex:1}.search-icon{font-size:16px;margin-right:8px;flex-shrink:0}.search-input{flex:1;border:none;outline:none;font-size:14px;color:#374151;background:transparent;width:100%}.search-input::placeholder{color:#bcbfc7}.upload-fab{width:44px;height:44px;border-radius:50%;background:#2563eb;color:#fff;border:none;font-size:24px;font-weight:300;cursor:pointer;box-shadow:0 2px 8px #2563eb4d;transition:transform .15s,box-shadow .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center;line-height:1}.upload-fab:hover{transform:scale(1.05);box-shadow:0 4px 12px #2563eb66}.filter-area{margin-bottom:12px}.filter-tabs{display:flex;gap:6px;margin-bottom:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:wrap}.secondary-tabs{margin-top:2px}.filter-tab{flex-shrink:0;padding:5px 12px;border-radius:16px;border:1px solid #e5e7eb;background:#fff;font-size:12px;color:#6b7280;cursor:pointer;transition:all .15s}.filter-tab.filter-active{background:#2563eb;color:#fff;border-color:#2563eb}.status-tab{font-size:11px;padding:4px 10px}.date-filter-row{margin-top:6px}.date-toggle-btn{padding:5px 12px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:12px;color:#6b7280;cursor:pointer}.date-toggle-btn.date-active{border-color:#2563eb;color:#2563eb}.date-inputs{display:flex;align-items:center;gap:8px;margin-top:8px}.date-input{flex:1;height:36px;border:1px solid #e5e7eb;border-radius:8px;padding:0 10px;font-size:13px;color:#374151;outline:none;background:#fff}.date-input:focus{border-color:#2563eb}.date-separator{font-size:12px;color:#9ca3af;flex-shrink:0}.clear-filters-btn{margin-top:8px;padding:5px 12px;background:none;border:none;color:#2563eb;font-size:12px;cursor:pointer}.batch-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.batch-toggle-btn{padding:6px 14px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:12px;color:#6b7280;cursor:pointer;transition:all .15s}.batch-toggle-btn.batch-active{background:#2563eb;color:#fff;border-color:#2563eb}.batch-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.batch-select-all-btn{padding:5px 10px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;font-size:12px;color:#2563eb;cursor:pointer}.batch-count{font-size:12px;color:#6b7280;font-weight:500}.batch-status-select{height:32px;border:1px solid #e5e7eb;border-radius:6px;padding:0 8px;font-size:12px;color:#374151;background:#fff;cursor:pointer;outline:none}.report-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000f;cursor:pointer;transition:transform .15s,box-shadow .15s;position:relative}.report-card:active{transform:scale(.985);box-shadow:0 2px 8px #0000001a}.report-card.batch-selectable{cursor:default}.report-card.report-selected{border:2px solid #2563eb;background:#eff6ff}.batch-checkbox{position:absolute;top:12px;left:12px;cursor:pointer;z-index:2}.checkbox-box{width:22px;height:22px;border:2px solid #d1d5db;border-radius:6px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;transition:all .15s}.checkbox-box.checkbox-checked{background:#2563eb;border-color:#2563eb}.report-card.batch-selectable .report-card-top{padding-left:32px}.report-card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.report-card-info{display:flex;flex-direction:column;gap:2px}.report-card-name{font-size:16px;font-weight:600;color:#111827}.report-card-type{font-size:11px;font-weight:400;color:#9ca3af;margin-left:6px;padding:1px 6px;background:#f3f4f6;border-radius:4px}.report-card-date{font-size:12px;color:#9ca3af}.report-card-badges{display:flex;gap:6px;flex-shrink:0;align-items:center}.report-status-badge{font-size:10px;padding:2px 8px;border-radius:8px;font-weight:500;white-space:nowrap}.report-card-bottom{display:flex;gap:20px;margin-bottom:10px}.report-card-stat{display:flex;flex-direction:column;gap:2px}.stat-label-text{font-size:11px;color:#9ca3af}.stat-value-text{font-size:15px;font-weight:600;color:#374151}.report-card-progress{height:4px;background:#f3f4f6;border-radius:2px;overflow:hidden;margin-bottom:10px}.report-card-progress-fill{height:100%;border-radius:2px;transition:width .3s ease}.report-card-actions{display:flex;justify-content:flex-end}.card-action-btn{padding:6px 14px;border:1px solid #2563eb;border-radius:8px;background:#eff6ff;color:#2563eb;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}.card-action-btn:hover{background:#2563eb;color:#fff}.report-detail-page{padding:16px}.detail-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f}.report-info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.report-info-name{margin:0;font-size:20px;font-weight:700;color:#111827}.risk-badge-lg{font-size:13px;padding:4px 12px;border-radius:12px;font-weight:600}.report-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.info-item{display:flex;flex-direction:column;gap:2px}.info-label{font-size:12px;color:#9ca3af}.info-value{font-size:15px;font-weight:600;color:#374151}.section-heading{margin:0 0 12px;font-size:16px;font-weight:600;color:#111827}.advice-summary{display:flex;gap:10px;background:#eff6ff;border-radius:10px;padding:12px 14px;margin-bottom:16px}.summary-icon{font-size:18px;flex-shrink:0;line-height:1.5}.summary-text{margin:0;font-size:14px;color:#1e40af;line-height:1.6}.advice-items{display:flex;flex-direction:column;gap:12px}.advice-item{border-left:3px solid #ef4444;background:#fafafa;border-radius:0 8px 8px 0;padding:12px}.advice-item-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.advice-item-name{font-size:15px;font-weight:600;color:#111827}.severity-tag{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:500;flex-shrink:0}.advice-item-meta{display:flex;align-items:center;gap:12px;margin-bottom:8px;background:#fff;border-radius:8px;padding:8px 10px}.meta-cell{display:flex;flex-direction:column;gap:2px;flex:1}.meta-label{font-size:11px;color:#9ca3af}.meta-value{font-size:14px;font-weight:600;color:#111827}.meta-divider{width:1px;height:28px;background:#e5e7eb;flex-shrink:0}.advice-item-text{font-size:13px;color:#4b5563;line-height:1.6}.advice-label{font-weight:600;color:#2563eb}.no-advice-hint{text-align:center;color:#9ca3af;font-size:14px;padding:24px 0;margin:0}.upload-page{padding:16px}.upload-steps{display:flex;align-items:center;justify-content:center;margin-bottom:20px;gap:4px}.step-item{display:flex;align-items:center;gap:6px;opacity:.4;transition:opacity .2s}.step-item.step-active,.step-item.step-done{opacity:1}.step-num{width:24px;height:24px;border-radius:50%;background:#e5e7eb;color:#9ca3af;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.step-active .step-num{background:#2563eb;color:#fff}.step-done .step-num{background:#22c55e;color:#fff}.step-label{font-size:12px;color:#6b7280}.step-divider{width:24px;height:1px;background:#e5e7eb}.upload-zone{border:2px dashed #d1d5db;border-radius:12px;padding:32px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:#fafafa;margin-bottom:16px}.upload-zone:hover{border-color:#2563eb;background:#eff6ff}.upload-zone-has-file{border-style:solid;border-color:#22c55e;background:#f0fdf4;cursor:default}.upload-placeholder-icon{font-size:40px;margin-bottom:12px}.upload-placeholder-text{font-size:15px;color:#374151;font-weight:500;margin-bottom:6px}.upload-placeholder-hint{font-size:12px;color:#9ca3af}.upload-file-info{display:flex;align-items:center;gap:12px}.upload-file-icon{font-size:32px;flex-shrink:0}.upload-file-detail{flex:1;text-align:left}.upload-file-name{font-size:14px;font-weight:500;color:#111827;word-break:break-all}.upload-file-size{font-size:12px;color:#9ca3af;margin-top:2px}.upload-file-remove{flex-shrink:0;padding:4px 12px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;color:#ef4444;font-size:12px;cursor:pointer}.upload-form-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f}.upload-form-title{margin:0 0 14px;font-size:15px;font-weight:600;color:#111827}.upload-form-row{display:flex;gap:12px;margin-bottom:14px}.upload-form-group{display:flex;flex-direction:column;gap:6px}.upload-label{font-size:13px;color:#374151;font-weight:500}.upload-label .required{color:#ef4444}.upload-input{height:40px;border:1px solid #e5e7eb;border-radius:8px;padding:0 12px;font-size:14px;color:#374151;outline:none;transition:border-color .2s;background:#fff;width:100%;box-sizing:border-box}.upload-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.upload-input::placeholder{color:#bcbfc7}.gender-toggle{display:flex;border-radius:8px;overflow:hidden;border:1px solid #e5e7eb;height:40px}.gender-btn{flex:1;border:none;background:#fff;color:#6b7280;font-size:14px;cursor:pointer;transition:all .15s}.gender-btn.gender-active{background:#2563eb;color:#fff}.report-type-tabs{display:flex;gap:8px}.type-tab{flex:1;padding:10px 8px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#6b7280;font-size:13px;cursor:pointer;transition:all .15s;text-align:center}.type-tab.type-active{background:#eff6ff;color:#2563eb;border-color:#2563eb;font-weight:600}.upload-progress-card{background:#fff;border-radius:12px;padding:20px 16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f;text-align:center}.progress-text{font-size:15px;font-weight:600;color:#2563eb;margin-bottom:10px}.progress-bar{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:4px;transition:width .3s ease}.progress-hint{font-size:12px;color:#9ca3af}.upload-submit-btn{width:100%;padding:14px;background:#2563eb;color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer;transition:background .15s;margin-bottom:16px}.upload-submit-btn:hover:not(:disabled){background:#1d4ed8}.upload-submit-btn:disabled{background:#9ca3af;cursor:not-allowed}.ocr-preview-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f}.ocr-preview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.ocr-success-badge{font-size:11px;padding:3px 10px;border-radius:10px;background:#f0fdf4;color:#22c55e;font-weight:600}.ocr-preview-text{font-family:Courier New,monospace;font-size:12px;line-height:1.7;color:#374151;background:#f9fafb;border-radius:8px;padding:12px;margin:0 0 12px;white-space:pre-wrap;word-break:break-all;max-height:300px;overflow-y:auto}.ocr-preview-hint{font-size:12px;color:#9ca3af;text-align:center}.upload-actions{display:flex;flex-direction:column;gap:10px}.upload-action-primary{width:100%;padding:14px;background:#2563eb;color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer}.upload-action-secondary{width:100%;padding:12px;background:#fff;color:#374151;border:1px solid #e5e7eb;border-radius:10px;font-size:14px;cursor:pointer}.upload-action-ghost{width:100%;padding:10px;background:none;color:#2563eb;border:none;font-size:14px;cursor:pointer}.offline-notice{background:#fef3c7;color:#92400e;padding:8px 12px;border-radius:8px;font-size:12px;margin-bottom:16px;text-align:center}.interpretation-page{padding:16px}.interp-header-card{background:#fff;border-radius:12px;padding:14px 16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000f}.interp-header-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.interp-patient-name{font-size:18px;font-weight:700;color:#111827}.interp-patient-meta{font-size:13px;color:#6b7280;margin-left:8px}.interp-header-badges{display:flex;gap:6px;flex-shrink:0}.status-badge{font-size:11px;padding:3px 10px;border-radius:10px;font-weight:500}.interp-header-meta{display:flex;gap:16px;font-size:12px;color:#9ca3af}.draft-banner{background:linear-gradient(135deg,#fef3c7,#fffbeb);border:1px solid #fde68a;border-radius:10px;padding:10px 14px;margin-bottom:12px;display:flex;align-items:center;gap:8px;font-size:13px;color:#92400e;font-weight:500}.draft-banner-icon{font-size:18px}.interp-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000f}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-title{margin:0;font-size:15px;font-weight:600;color:#111827}.tab-switch{display:flex;background:#f3f4f6;border-radius:8px;overflow:hidden}.tab-btn{padding:5px 12px;border:none;background:transparent;color:#6b7280;font-size:12px;cursor:pointer;transition:all .15s}.tab-btn.tab-active{background:#fff;color:#2563eb;font-weight:600;box-shadow:0 1px 3px #0000001a;border-radius:6px}.lab-items-table{display:flex;flex-direction:column}.lab-item-row{padding:10px 0;border-bottom:1px solid #f3f4f6;cursor:default;transition:background .1s}.lab-item-row:last-child{border-bottom:none}.lab-item-abnormal{background:#fefaf5;margin:0 -16px;padding:10px 16px;border-radius:0}.lab-item-main{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.lab-item-name-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.lab-item-name{font-size:14px;font-weight:600;color:#111827}.lab-item-values{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.lab-item-value{font-size:14px;font-weight:700;color:#374151}.value-abnormal{color:#ef4444}.lab-item-ref{font-size:11px;color:#9ca3af}.lab-item-ai{margin-top:6px;padding:8px 10px;background:#f9fafb;border-radius:8px;font-size:12px;line-height:1.6;color:#4b5563}.ai-label{font-weight:700;color:#2563eb;margin-right:4px}.ai-text{color:#4b5563}.ai-edit-textarea{width:100%;border:1px solid #2563eb;border-radius:6px;padding:8px;font-size:12px;line-height:1.6;color:#374151;resize:vertical;font-family:inherit;box-sizing:border-box;outline:none;margin-top:4px}.edit-toggle-btn{width:100%;margin-top:12px;padding:10px;background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s}.edit-toggle-btn:hover{background:#dbeafe}.summary-content{padding:4px 0}.summary-icon-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:15px}.summary-icon{font-size:20px}.summary-text{margin:0;font-size:14px;color:#374151;line-height:1.7}.summary-edit-textarea{width:100%;border:1px solid #2563eb;border-radius:8px;padding:10px;font-size:14px;line-height:1.7;color:#374151;resize:vertical;font-family:inherit;box-sizing:border-box;outline:none}.audit-info{margin-top:10px;padding-top:10px;border-top:1px solid #f3f4f6;display:flex;flex-direction:column;gap:2px;font-size:12px;color:#9ca3af}.interp-actions{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.action-btn{width:100%;padding:13px;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s}.action-btn:disabled{opacity:.6;cursor:not-allowed}.action-btn-primary{background:#2563eb;color:#fff}.action-btn-primary:hover:not(:disabled){background:#1d4ed8}.action-btn-success{background:#22c55e;color:#fff}.action-btn-success:hover:not(:disabled){background:#16a34a}.action-btn-outline{background:#fff;color:#374151;border:1px solid #e5e7eb}.action-btn-outline:hover:not(:disabled){background:#f9fafb}.action-btn-ghost{background:none;color:#2563eb;font-weight:500}.success-toast{position:fixed;top:60px;left:50%;transform:translate(-50%);background:#22c55e;color:#fff;padding:10px 20px;border-radius:20px;font-size:13px;font-weight:600;z-index:300;box-shadow:0 4px 12px #00000026;animation:toastIn .3s ease}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.disclaimer-box{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:14px 16px;margin-bottom:16px;display:flex;flex-direction:column;align-items:center;text-align:center}.disclaimer-icon{font-size:20px;margin-bottom:6px}.disclaimer-text{margin:0 0 4px;font-size:12px;color:#92400e;line-height:1.6;font-weight:500}.disclaimer-sub{margin:0;font-size:11px;color:#a16207;line-height:1.5}.action-btn-regenerate{background:linear-gradient(135deg,#7c3aed,#8b5cf6);color:#fff}.action-btn-regenerate:hover:not(:disabled){background:linear-gradient(135deg,#6d28d9,#7c3aed)}.print-toggle-bar{display:flex;align-items:center;justify-content:flex-end;margin-bottom:8px;padding:6px 0}.print-toggle-bar.print-mode-active{justify-content:center;gap:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:8px 12px;margin-bottom:12px}.print-toggle-btn{background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;color:#2563eb;font-size:12px;font-weight:500;padding:6px 12px;cursor:pointer;transition:background .15s}.print-toggle-btn:hover{background:#dbeafe}.interpretation-page.print-friendly .interp-actions,.interpretation-page.print-friendly .print-toggle-bar:not(.print-mode-active),.interpretation-page.print-friendly .draft-banner,.interpretation-page.print-friendly .edit-toggle-btn,.interpretation-page.print-friendly .offline-notice,.interpretation-page.print-friendly .upload-error{display:none}.interpretation-page.print-friendly .interp-card{box-shadow:none;border:1px solid #e5e7eb}.interpretation-page.print-friendly .disclaimer-box{margin-top:8px}.doctor-note-area{margin-top:8px;padding-top:6px;border-top:1px dashed #e5e7eb}.doctor-note-display{display:flex;gap:6px;align-items:flex-start;padding:6px 8px;background:#fefce8;border-radius:6px;cursor:pointer;transition:background .15s;font-size:12px}.doctor-note-display:hover{background:#fef08a}.note-label{font-weight:700;color:#a16207;flex-shrink:0}.note-text{color:#713f12;line-height:1.5;flex:1;word-break:break-word}.note-placeholder{color:#9ca3af;font-style:italic}.print-note{background:#fefce8;border:1px solid #fde68a;margin-top:4px}.doctor-note-editor{display:flex;flex-direction:column;gap:4px}.doctor-note-textarea{width:100%;border:1px solid #f59e0b;border-radius:6px;padding:6px 8px;font-size:12px;line-height:1.5;color:#374151;resize:vertical;font-family:inherit;box-sizing:border-box;outline:none;background:#fffbeb}.doctor-note-textarea:focus{border-color:#d97706;box-shadow:0 0 0 2px #f59e0b26}.doctor-note-actions{display:flex;gap:6px;justify-content:flex-end}.note-btn{padding:3px 10px;border-radius:4px;font-size:11px;font-weight:500;cursor:pointer;border:none;transition:background .15s}.note-btn-save{background:#f59e0b;color:#fff}.note-btn-save:hover{background:#d97706}.note-btn-cancel{background:#f3f4f6;color:#6b7280}.note-btn-cancel:hover{background:#e5e7eb}.upload-error{background:#fef2f2;color:#ef4444;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px;text-align:center}@media print{.app-header,.app-tabbar,.interp-actions,.print-toggle-bar,.draft-banner,.edit-toggle-btn,.offline-notice,.upload-error,.success-toast,.tab-switch,.action-btn-regenerate{display:none!important}.app-shell{max-width:100%!important}.interpretation-page{padding:8px 16px}.interp-card{box-shadow:none;border:1px solid #e5e7eb;break-inside:avoid}body,.lab-item-value,.value-abnormal{color:#000}}.advice-page{padding:16px}.advice-report-mini{display:flex;align-items:center;gap:8px;background:#eff6ff;border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:13px}.advice-report-name{font-weight:600;color:#1e40af}.advice-report-meta{color:#6b7280;flex:1}.advice-back-btn{background:none;border:none;color:#2563eb;font-size:12px;cursor:pointer;white-space:nowrap}.advice-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.advice-count{font-size:13px;color:#6b7280;font-weight:500}.advice-toolbar-actions{display:flex;gap:8px}.advice-btn{padding:7px 14px;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.advice-btn:disabled{opacity:.6;cursor:not-allowed}.advice-btn-add{background:#2563eb;color:#fff}.advice-btn-add:hover:not(:disabled){background:#1d4ed8}.advice-btn-generate{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.advice-btn-generate:hover:not(:disabled){background:#fef9c3}.advice-form-card{background:#fff;border:2px solid #2563eb;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 2px 8px #2563eb1a}.advice-form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.advice-form-header h4{margin:0;font-size:15px;color:#111827}.form-close-btn{background:none;border:none;color:#9ca3af;font-size:13px;cursor:pointer}.advice-form-field{margin-bottom:14px}.advice-form-field label{display:block;font-size:12px;font-weight:600;color:#6b7280;margin-bottom:6px}.advice-form-input,.advice-form-select,.advice-form-textarea{width:100%;border:1px solid #e5e7eb;border-radius:8px;padding:8px 12px;font-size:14px;color:#374151;outline:none;font-family:inherit;box-sizing:border-box;transition:border-color .2s}.advice-form-input:focus,.advice-form-select:focus,.advice-form-textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.advice-form-textarea{resize:vertical;line-height:1.6}.category-select{display:grid;grid-template-columns:1fr 1fr;gap:8px}.cat-option{padding:8px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:12px;cursor:pointer;transition:all .15s;text-align:center;display:flex;align-items:center;justify-content:center;gap:4px}.cat-option.cat-active{font-weight:600}.advice-form-submit{width:100%;padding:12px;background:#2563eb;color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s}.advice-form-submit:disabled{background:#9ca3af;cursor:not-allowed}.advice-groups{display:flex;flex-direction:column;gap:12px}.advice-group-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.advice-group-header{display:flex;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;border-left:3px solid #2563eb;background:#fafafa;-webkit-user-select:none;user-select:none}.group-header-icon{font-size:18px}.group-header-label{font-size:14px;font-weight:600;color:#111827;flex:1}.group-header-count{font-size:12px;color:#9ca3af;background:#f3f4f6;padding:2px 8px;border-radius:10px}.group-collapse-icon{font-size:10px;color:#9ca3af;transition:transform .2s}.group-collapse-icon.collapsed{transform:rotate(0)}.advice-group-items{padding:8px 14px 12px}.advice-group-item{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:10px 0;border-bottom:1px solid #f3f4f6}.advice-group-item:last-child{border-bottom:none}.advice-item-content{flex:1;min-width:0}.advice-item-target{display:inline-block;font-size:11px;padding:2px 8px;background:#eff6ff;color:#2563eb;border-radius:8px;margin-bottom:6px;font-weight:500}.advice-item-text{margin:0 0 6px;font-size:13px;color:#374151;line-height:1.6}.advice-item-meta{display:flex;gap:12px;font-size:11px;color:#9ca3af;flex-wrap:wrap}.advice-item-source{color:#6b7280}.advice-item-author{color:#9ca3af}.advice-item-actions{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.item-action-btn{padding:3px 10px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;font-size:11px;cursor:pointer;transition:all .15s}.edit-btn{color:#2563eb}.edit-btn:hover{background:#eff6ff;border-color:#2563eb}.delete-btn{color:#ef4444}.delete-btn:hover{background:#fef2f2;border-color:#ef4444}.history-page{padding:16px}.history-search{margin-bottom:16px}.search-input-row{display:flex;gap:8px}.history-search-input{flex:1;height:44px;border:1px solid #e5e7eb;border-radius:10px;padding:0 14px;font-size:14px;color:#374151;outline:none;background:#fff;box-sizing:border-box;transition:border-color .2s}.history-search-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.history-search-btn{height:44px;padding:0 20px;background:#2563eb;color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;flex-shrink:0}.history-search-btn:hover{background:#1d4ed8}.search-status{text-align:center;padding:16px 0;font-size:13px;color:#9ca3af}.patient-results{background:#fff;border-radius:12px;margin-top:8px;box-shadow:0 2px 8px #00000014;overflow:hidden}.patient-result-item{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:background .15s}.patient-result-item:last-child{border-bottom:none}.patient-result-item:hover{background:#f9fafb}.patient-result-info{display:flex;flex-direction:column;gap:2px}.patient-result-name{font-size:15px;font-weight:600;color:#111827}.patient-result-meta{font-size:12px;color:#9ca3af}.patient-result-phone{font-size:13px;color:#6b7280}.selected-patient-card{display:flex;justify-content:space-between;align-items:center;background:#eff6ff;border-radius:10px;padding:12px 14px;margin-bottom:16px}.selected-patient-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.selected-patient-name{font-size:16px;font-weight:700;color:#1e40af}.selected-patient-meta{font-size:13px;color:#6b7280}.selected-patient-phone{font-size:12px;color:#9ca3af}.clear-patient-btn{background:none;border:1px solid #bfdbfe;border-radius:8px;padding:5px 12px;color:#2563eb;font-size:12px;cursor:pointer;white-space:nowrap;flex-shrink:0}.history-section{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000f}.section-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.section-heading{margin:0 0 14px;font-size:15px;font-weight:600;color:#111827}.section-header-row .section-heading{margin-bottom:0}.compare-toggle-btn{background:none;border:1px solid #2563eb;border-radius:8px;padding:5px 12px;color:#2563eb;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}.compare-toggle-btn:hover{background:#eff6ff}.no-data-hint{color:#9ca3af;font-size:13px;text-align:center;padding:20px 0}.report-timeline{padding-left:8px}.timeline-item{display:flex;gap:12px;cursor:pointer;transition:background .1s}.timeline-item:hover .timeline-card{box-shadow:0 2px 6px #00000014}.timeline-line{display:flex;flex-direction:column;align-items:center;width:20px;flex-shrink:0}.timeline-dot{width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px currentColor;flex-shrink:0;margin-top:4px}.timeline-connector{flex:1;width:2px;background:#e5e7eb;min-height:20px}.timeline-card{flex:1;background:#fafafa;border:1px solid #f3f4f6;border-radius:10px;padding:12px;margin-bottom:12px;transition:box-shadow .15s}.timeline-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.timeline-date{font-size:14px;font-weight:600;color:#111827}.timeline-badges{display:flex;gap:6px}.timeline-risk,.timeline-status{font-size:10px;padding:2px 8px;border-radius:8px;font-weight:500}.timeline-card-stats{font-size:12px;color:#6b7280;display:flex;gap:6px;align-items:center}.stat-sep{color:#e5e7eb}.compare-tag{margin-top:6px;font-size:11px;padding:2px 10px;border-radius:8px;background:#dbeafe;color:#2563eb;font-weight:600;text-align:center}.trend-list{display:flex;flex-direction:column;gap:8px}.trend-item{border:1px solid #f3f4f6;border-radius:10px;overflow:hidden;cursor:pointer;transition:background .15s}.trend-item:hover{background:#f9fafb}.trend-item-header{display:flex;align-items:center;padding:10px 12px;gap:8px}.trend-item-info{display:flex;flex-direction:column;gap:2px;flex:1}.trend-item-name{font-size:14px;font-weight:600;color:#111827}.trend-item-ref{font-size:11px;color:#9ca3af}.trend-sparkline-wrapper{flex-shrink:0}.trend-collapse-icon{font-size:10px;color:#9ca3af;flex-shrink:0;transition:transform .2s}.trend-collapse-icon.expanded{transform:rotate(0)}.trend-detail{padding:8px 12px 12px;border-top:1px solid #f3f4f6}.trend-table{width:100%;border-collapse:collapse;font-size:12px}.trend-table th{text-align:left;padding:6px 8px;font-weight:500;color:#9ca3af;font-size:11px;border-bottom:1px solid #f3f4f6}.trend-table td{padding:6px 8px;color:#374151;border-bottom:1px solid #fafafa}.offline-notice{background:#fef3c7;color:#92400e;padding:8px 12px;border-radius:8px;font-size:12px;margin-bottom:12px;text-align:center}.upload-error{background:#fef2f2;color:#ef4444;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px;text-align:center;cursor:pointer}.disclaimer{font-size:11px;color:#9ca3af;text-align:center;padding:8px 0 16px;margin:0;line-height:1.6}.trend-compare-page{padding:12px 16px 24px}.tc-patient-header{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border-radius:12px;padding:16px;margin-bottom:16px}.tc-patient-info{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.tc-patient-name{font-size:18px;font-weight:700}.tc-patient-meta{font-size:13px;opacity:.85}.tc-patient-summary{font-size:12px;opacity:.7}.tc-section{margin-bottom:20px}.tc-section-title{font-size:15px;font-weight:600;color:#111827;margin:0 0 4px}.tc-section-desc{font-size:12px;color:#9ca3af;margin:0 0 12px;line-height:1.4}.tc-report-list{display:flex;overflow-x:auto;gap:0;-webkit-overflow-scrolling:touch;padding:8px 0;position:relative}.tc-report-item{position:relative;flex-shrink:0;width:120px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px;cursor:pointer;transition:box-shadow .15s;margin-right:24px}.tc-report-item:last-child{margin-right:0}.tc-report-item:hover{box-shadow:0 2px 8px #00000014}.tc-report-connector{position:absolute;right:-24px;top:50%;width:24px;height:2px;background:#e5e7eb}.tc-report-date{font-size:13px;font-weight:600;color:#111827;margin-bottom:4px}.tc-report-stats{font-size:12px;color:#6b7280;margin-bottom:8px}.tc-report-sep{margin:0 4px;color:#d1d5db}.tc-report-badges{display:flex;gap:4px}.tc-report-risk,.tc-report-status{font-size:10px;padding:1px 6px;border-radius:8px;font-weight:500}.tc-indicator-tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0 10px;-webkit-overflow-scrolling:touch}.tc-indicator-tab{flex-shrink:0;padding:5px 12px;border:1px solid #e5e7eb;border-radius:16px;background:#fff;font-size:12px;color:#6b7280;cursor:pointer;transition:all .15s}.tc-indicator-tab.active{background:#2563eb;color:#fff;border-color:#2563eb;font-weight:600}.tc-chart-container{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:12px 8px;overflow-x:auto}.tc-chart-legend{display:flex;gap:12px;margin-top:8px;font-size:11px;color:#6b7280;flex-wrap:wrap}.tc-legend-item{display:flex;align-items:center;gap:4px}.tc-legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.tc-toggle-all-btn{display:block;width:100%;padding:8px;margin-top:10px;background:#f9fafb;border:1px dashed #d1d5db;border-radius:8px;font-size:12px;color:#6b7280;cursor:pointer}.tc-all-charts{margin-top:12px}.tc-mini-chart{margin-bottom:12px}.tc-mini-chart-title{font-size:12px;font-weight:600;color:#374151;margin-bottom:4px;padding-left:4px}.tc-heatmap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #e5e7eb;border-radius:10px;background:#fff}.tc-heatmap-table{width:100%;border-collapse:collapse;font-size:12px}.tc-heatmap-table th,.tc-heatmap-table td{padding:8px 6px;text-align:center;border-bottom:1px solid #f3f4f6;white-space:nowrap}.tc-heatmap-table thead th{background:#f9fafb;font-weight:500;color:#6b7280;font-size:11px;position:sticky;top:0}.tc-heatmap-table thead th:first-child,.tc-heatmap-table thead th:nth-child(2){text-align:left}.tc-heatmap-indicator{font-weight:600;color:#111827;text-align:left!important}.tc-heatmap-ref{color:#9ca3af;font-size:11px;text-align:left!important}.tc-heatmap-cell{font-weight:500;transition:all .2s}.cell-normal{background:#f0fdf4;color:#16a34a}.cell-borderline{background:#fffbeb;color:#d97706}.cell-abnormal{background:#fef2f2;color:#dc2626}.cell-severely_abnormal{background:#fecaca;color:#991b1b;font-weight:700}.tc-heatmap-legend{display:flex;gap:12px;margin-top:10px;font-size:11px;color:#6b7280;flex-wrap:wrap}.tc-heatmap-swatch{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:4px;vertical-align:middle}.swatch-normal{background:#f0fdf4;border:1px solid #bbf7d0}.swatch-borderline{background:#fffbeb;border:1px solid #fde68a}.swatch-abnormal{background:#fef2f2;border:1px solid #fecaca}.swatch-severe{background:#fecaca;border:1px solid #fca5a5}.tc-changes-list{display:flex;flex-direction:column;gap:10px}.tc-change-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px;border-left:4px solid #e5e7eb}.tc-change-card.change-improved{border-left-color:#22c55e}.tc-change-card.change-worsened{border-left-color:#ef4444}.tc-change-card.change-stable{border-left-color:#3b82f6}.tc-change-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.tc-change-indicator{font-size:14px;font-weight:600;color:#111827}.tc-change-badge{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600}.badge-improved{background:#f0fdf4;color:#16a34a}.badge-worsened{background:#fef2f2;color:#dc2626}.badge-stable{background:#eff6ff;color:#2563eb}.tc-change-body{display:flex;flex-direction:column;gap:6px}.tc-change-values{display:flex;align-items:center;gap:6px;font-size:16px}.tc-change-from{font-weight:600;color:#9ca3af;text-decoration:line-through}.tc-change-arrow{color:#d1d5db}.tc-change-to{font-weight:700;color:#111827;font-size:18px}.tc-change-unit{font-size:12px;color:#9ca3af;font-weight:400}.tc-change-pct{font-size:13px;font-weight:700;padding:2px 6px;border-radius:6px}.tc-change-pct.improved{background:#f0fdf4;color:#16a34a}.tc-change-pct.worsened{background:#fef2f2;color:#dc2626}.tc-change-message{font-size:12px;color:#6b7280;line-height:1.6;margin:0}.tc-risk-chart-container{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:12px 8px;overflow-x:auto}.tc-risk-summary{margin-top:12px;padding:12px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;font-size:13px;color:#16a34a;line-height:1.6}.risk-high{color:#dc2626;font-weight:600}.risk-low{color:#16a34a;font-weight:600}.tc-peer-list{display:flex;flex-direction:column;gap:14px}.tc-peer-item{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px}.tc-peer-header{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.tc-peer-name{font-size:13px;font-weight:600;color:#111827;flex:1}.tc-peer-value{font-size:14px;font-weight:700;color:#2563eb}.tc-peer-pctl{font-size:11px;background:#eff6ff;color:#2563eb;padding:2px 8px;border-radius:10px;font-weight:600}.tc-peer-bar-track{position:relative;height:8px;background:#f3f4f6;border-radius:4px;margin-bottom:6px}.tc-peer-bar-fill{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;opacity:.3}.tc-peer-bar-marker{position:absolute;top:-3px;width:2px;height:14px;background:#9ca3af;border-radius:1px}.tc-peer-bar-patient{position:absolute;top:-6px;transform:translate(-50%)}.tc-peer-bar-diamond{width:12px;height:12px;background:#2563eb;border:2px solid #fff;border-radius:2px;transform:rotate(45deg);box-shadow:0 0 4px #2563eb80}.tc-peer-bar-labels{display:flex;justify-content:space-between;font-size:10px;color:#9ca3af;margin-bottom:6px}.tc-peer-interpretation{font-size:12px;color:#6b7280;margin:0;line-height:1.5}.tc-predictions-list{display:flex;flex-direction:column;gap:12px}.tc-prediction-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px}.tc-prediction-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.tc-prediction-indicator{font-size:14px;font-weight:600;color:#111827}.tc-prediction-confidence{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:500}.conf-high{background:#f0fdf4;color:#16a34a}.conf-medium{background:#fffbeb;color:#d97706}.conf-low{background:#fef2f2;color:#dc2626}.tc-prediction-values{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:10px;padding:10px;background:#f9fafb;border-radius:8px}.tc-prediction-current,.tc-prediction-future{text-align:center}.tc-prediction-label{display:block;font-size:11px;color:#9ca3af;margin-bottom:4px}.tc-prediction-num{font-size:24px;font-weight:700;color:#374151}.tc-prediction-num.predicted{color:#7c3aed}.tc-prediction-unit{font-size:12px;color:#9ca3af;margin-left:2px}.tc-prediction-arrow-big{font-size:20px;color:#d1d5db}.tc-prediction-message{font-size:12px;color:#6b7280;line-height:1.6;margin:0}.disclaimer{font-size:11px;color:#9ca3af;text-align:center;margin-top:24px;padding:12px;background:#fefce8;border:1px solid #fef08a;border-radius:8px;line-height:1.5}.batch-compare-page{padding-bottom:24px}.bc-header{margin-bottom:16px}.bc-title{font-size:18px;font-weight:700;color:#1f2937;margin:0 0 4px}.bc-subtitle{font-size:13px;color:#9ca3af;margin:0}.bc-section{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 1px 3px #0000000d}.bc-section-title{font-size:15px;font-weight:600;color:#1f2937;margin:0 0 12px}.bc-section-desc{font-size:12px;color:#9ca3af;margin:0 0 12px;line-height:1.5}.bc-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.bc-filter-item{display:flex;flex-direction:column;gap:4px}.bc-filter-label{font-size:11px;color:#6b7280;font-weight:500}.bc-filter-input{width:100%;padding:7px 10px;border:1px solid #e5e7eb;border-radius:8px;font-size:13px;color:#374151;background:#fff;outline:none;transition:border-color .2s}.bc-filter-input:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.bc-filter-range{display:flex;align-items:center;gap:6px}.bc-filter-num{flex:1;min-width:0}.bc-filter-sep{font-size:13px;color:#9ca3af;flex-shrink:0}.bc-filter-result{font-size:12px;color:#6b7280;padding:8px 12px;background:#f9fafb;border-radius:8px}.bc-filter-result strong{color:#2563eb;font-weight:600}.bc-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.bc-kpi-card{background:#f9fafb;border-radius:10px;padding:12px 10px;text-align:center;border-top:3px solid #e5e7eb}.bc-kpi-value{font-size:22px;font-weight:700;line-height:1.2}.bc-kpi-unit{font-size:12px;font-weight:400;margin-left:2px;opacity:.7}.bc-kpi-label{font-size:11px;color:#6b7280;margin-top:4px}.bc-indicator-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.bc-indicator-tab{padding:5px 10px;border:1px solid #e5e7eb;border-radius:16px;background:#fff;font-size:12px;color:#6b7280;cursor:pointer;transition:all .2s;white-space:nowrap}.bc-indicator-tab:hover{border-color:#2563eb;color:#2563eb}.bc-indicator-tab.active{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:500}.bc-chart-container{display:flex;justify-content:center;margin-bottom:12px;overflow-x:auto}.bc-stat-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.bc-stat-item{background:#f9fafb;border-radius:8px;padding:8px 12px;display:flex;flex-direction:column;min-width:62px;flex:1}.bc-stat-label{font-size:10px;color:#9ca3af;margin-bottom:2px}.bc-stat-value{font-size:14px;font-weight:700;color:#374151}.bc-stat-unit{font-size:10px;color:#9ca3af;font-weight:400;margin-left:2px}.bc-chart-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11px}.bc-legend-item{display:flex;align-items:center;gap:4px;color:#6b7280}.bc-legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}.bc-heatmap-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:12px}.bc-heatmap-table{width:100%;border-collapse:collapse;font-size:12px;min-width:520px}.bc-heatmap-th{padding:8px 6px;text-align:center;font-size:10px;font-weight:600;color:#6b7280;border-bottom:2px solid #e5e7eb;white-space:nowrap}.bc-heatmap-indicator{padding:8px 6px;font-weight:600;color:#374151;white-space:nowrap;border-bottom:1px solid #f3f4f6}.bc-heatmap-cell{padding:6px 4px;text-align:center;font-weight:600;font-size:12px;border-radius:4px;border-bottom:1px solid #f3f4f6;cursor:default}.bc-heatmap-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:#6b7280;align-items:center}.bc-heatmap-swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid #e5e7eb;vertical-align:middle;margin-right:4px}.bc-top-list{display:flex;flex-direction:column;gap:8px}.bc-top-item{padding:8px 0;border-bottom:1px solid #f3f4f6}.bc-top-item:last-child{border-bottom:none}.bc-top-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.bc-top-rank{font-size:12px;font-weight:700;color:#9ca3af;width:24px}.bc-top-rank.top{color:#f59e0b}.bc-top-name{flex:1;font-size:13px;font-weight:500;color:#374151}.bc-top-count{font-size:12px;color:#6b7280;font-weight:600}.bc-top-bar-track{height:6px;background:#f3f4f6;border-radius:3px;overflow:hidden;margin:0 0 4px 32px}.bc-top-bar-fill{height:100%;border-radius:3px;transition:width .4s ease}.bc-top-detail{display:flex;gap:8px;font-size:11px;margin-left:32px}.bc-top-rate{font-weight:700;color:#374151}.bc-top-total,.bc-top-unit{color:#9ca3af}.bc-outlier-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.bc-outlier-table{width:100%;border-collapse:collapse;font-size:12px;min-width:600px}.bc-outlier-table th{padding:8px 6px;text-align:left;font-size:10px;font-weight:600;color:#6b7280;border-bottom:2px solid #e5e7eb;white-space:nowrap}.bc-outlier-table td{padding:8px 6px;border-bottom:1px solid #f3f4f6;white-space:nowrap}.bc-outlier-row:hover{background:#f9fafb}.bc-outlier-row td:first-child{font-weight:500}.bc-outlier-name{color:#374151}.bc-outlier-indicator{color:#6b7280}.bc-outlier-value{font-weight:700}.bc-outlier-ref{color:#9ca3af;font-size:11px}.bc-zscore-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:700}.bc-toggle-group{display:flex;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;margin-bottom:12px}.bc-toggle-btn{flex:1;padding:8px 12px;border:none;background:#fff;font-size:13px;color:#6b7280;cursor:pointer;transition:all .2s}.bc-toggle-btn.active{background:#2563eb;color:#fff;font-weight:500}.bc-demo-list{display:flex;flex-direction:column;gap:10px}.bc-demo-card{background:#f9fafb;border-radius:10px;padding:12px;border:1px solid #f3f4f6}.bc-demo-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.bc-demo-group{font-size:14px;font-weight:600;color:#1f2937}.bc-demo-count{font-size:12px;color:#6b7280;background:#e5e7eb;padding:2px 8px;border-radius:10px}.bc-demo-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px}.bc-demo-stat{display:flex;flex-direction:column;gap:2px}.bc-demo-stat-label{font-size:10px;color:#9ca3af}.bc-demo-stat-value{font-size:13px;font-weight:600;color:#374151}.bc-export-buttons{display:flex;gap:10px;margin-bottom:12px}.bc-export-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 16px;border-radius:10px;border:none;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .2s}.bc-export-btn:hover{opacity:.9}.bc-export-pdf{background:#fee2e2;color:#991b1b}.bc-export-csv{background:#eff6ff;color:#1e40af}.bc-export-icon{font-size:18px}.bc-export-info{font-size:11px;color:#9ca3af;line-height:1.5;padding:8px;background:#f9fafb;border-radius:8px}.disclaimer{font-size:11px;color:#9ca3af;text-align:center;line-height:1.6;margin:0;padding:0 8px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:#374151;background:#f3f4f6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:2px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.5}}.anim-fade-in{animation:fade-in .25s cubic-bezier(.4,0,.2,1) both}.anim-slide-up{animation:slide-up .25s cubic-bezier(.4,0,.2,1) both}.anim-slide-in-right{animation:slide-in-right .25s cubic-bezier(.4,0,.2,1) both}.anim-scale-in{animation:scale-in .25s cubic-bezier(.34,1.56,.64,1) both}.anim-delay-1{animation-delay:.05s}.anim-delay-2{animation-delay:.1s}.anim-delay-3{animation-delay:.15s}.anim-delay-4{animation-delay:.2s}.anim-delay-5{animation-delay:.25s}.anim-delay-6{animation-delay:.3s}.anim-delay-7{animation-delay:.35s}.anim-delay-8{animation-delay:.4s}.card-hover-lift{transition:transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}.card-hover-lift:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000014}.card-hover-lift:active{transform:translateY(0) scale(.98)}.btn-press:active{transform:scale(.97);transition:transform .1s cubic-bezier(.4,0,.2,1)}.skeleton-shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:6px}.skeleton-text{height:14px;margin-bottom:8px}.skeleton-text.short{width:60%}.skeleton-card{height:80px;margin-bottom:12px}.page-enter{animation:fade-in .25s cubic-bezier(.4,0,.2,1) both,slide-up .4s cubic-bezier(.16,1,.3,1) both}@keyframes toast-in{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-8px) scale(.95)}}a{color:inherit;text-decoration:none}button,input{font-family:inherit}
