@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap);body{-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--sidebar-w:220px;--nav-bg:#0f172a;--nav-text:#94a3b8;--nav-text-active:#f8fafc;--nav-active-bg:#ffffff14;--nav-accent:#3b82f6;--bg:#f1f5f9;--surface:#fff;--surface-alt:#f8fafc;--border:#e2e8f0;--border-focus:#3b82f6;--text-1:#0f172a;--text-2:#475569;--text-3:#94a3b8;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#dbeafe;--success:#059669;--success-bg:#d1fae5;--success-text:#065f46;--warning:#d97706;--warning-bg:#fef3c7;--warning-text:#92400e;--danger:#dc2626;--danger-bg:#fee2e2;--danger-text:#991b1b;--radius:10px;--radius-sm:6px;--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #00000014,0 1px 2px #0000000a;--shadow-md:0 4px 8px #0000000f,0 2px 4px #0000000a;--shadow-lg:0 10px 25px #0000001a,0 4px 10px #0000000d}*{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{-webkit-font-smoothing:antialiased;background:#f1f5f9;background:var(--bg);color:#0f172a;color:var(--text-1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}.app-layout{display:flex;min-height:100vh}.sidebar{background:#0f172a;background:var(--nav-bg);display:flex;flex-direction:column;flex-shrink:0;height:100vh;left:0;position:fixed;top:0;width:220px;width:var(--sidebar-w);z-index:100}.sidebar-brand{border-bottom:1px solid #ffffff0f;padding:1.5rem 1.25rem 1.25rem}.sidebar-brand-name{color:#f8fafc;font-size:1rem;font-weight:700;letter-spacing:-.3px;line-height:1.2}.sidebar-brand-sub{color:#94a3b8;color:var(--nav-text);font-size:.72rem;font-weight:400;letter-spacing:.3px;margin-top:2px}.sidebar-nav{display:flex;flex:1 1;flex-direction:column;gap:2px;padding:1rem .75rem}.sidebar-section-label{color:#475569;font-size:.65rem;font-weight:600;letter-spacing:.08em;padding:.5rem .5rem .25rem;text-transform:uppercase}.nav-item{align-items:center;background:#0000;border:none;border-radius:6px;border-radius:var(--radius-sm);color:#94a3b8;color:var(--nav-text);cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:.6rem;padding:.55rem .75rem;text-align:left;transition:background .15s,color .15s;width:100%}.nav-item.active,.nav-item:hover{background:#ffffff14;background:var(--nav-active-bg);color:#f8fafc;color:var(--nav-text-active)}.nav-item.active{position:relative}.nav-item.active:before{background:#3b82f6;background:var(--nav-accent);border-radius:0 3px 3px 0;content:"";height:60%;left:0;position:absolute;top:50%;transform:translateY(-50%);width:3px}.nav-icon{flex-shrink:0;height:16px;opacity:.75;width:16px}.nav-item.active .nav-icon{opacity:1}.sidebar-footer{border-top:1px solid #ffffff0f;padding:1rem 1.25rem}.sidebar-footer-text{color:#334155;font-size:.7rem}.main-area{display:flex;flex:1 1;flex-direction:column;margin-left:220px;margin-left:var(--sidebar-w);min-width:0}.page-header{align-items:center;background:#fff;background:var(--surface);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;padding:1.25rem 2rem}.page-title{color:#0f172a;color:var(--text-1);font-size:1.15rem;font-weight:700;letter-spacing:-.3px}.page-subtitle{color:#94a3b8;color:var(--text-3);font-size:.8rem;margin-top:1px}.page-body{flex:1 1;padding:1.75rem 2rem}.card{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius);box-shadow:0 1px 3px #00000014,0 1px 2px #0000000a;box-shadow:var(--shadow)}.card-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;padding:1.1rem 1.25rem}.card-title{color:#0f172a;color:var(--text-1);font-size:.9rem;font-weight:600}.card-body{padding:1.25rem}.card+.card{margin-top:1.25rem}.stats-row{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.stat-chip{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius);box-shadow:0 1px 2px #0000000d;box-shadow:var(--shadow-sm);min-width:110px;padding:.9rem 1.25rem}.stat-chip-value{color:#0f172a;color:var(--text-1);font-size:1.75rem;font-weight:700;line-height:1}.stat-chip-label{color:#94a3b8;color:var(--text-3);font-size:.72rem;font-weight:500;letter-spacing:.04em;margin-top:4px;text-transform:uppercase}.stat-chip.warning .stat-chip-value{color:#d97706;color:var(--warning)}.stat-chip.success .stat-chip-value{color:#059669;color:var(--success)}.stat-chip.primary .stat-chip-value{color:#2563eb;color:var(--primary)}.btn{align-items:center;border:none;border-radius:6px;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.825rem;font-weight:500;gap:.4rem;justify-content:center;padding:.5rem 1rem;text-decoration:none;transition:background .15s,box-shadow .15s,opacity .15s;white-space:nowrap}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{background:#2563eb;background:var(--primary);box-shadow:0 1px 2px #2563eb40;color:#fff}.btn-primary:hover:not(:disabled){background:#1d4ed8;background:var(--primary-hover)}.btn-secondary{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);box-shadow:0 1px 2px #0000000d;box-shadow:var(--shadow-sm);color:#0f172a;color:var(--text-1)}.btn-secondary:hover:not(:disabled){background:#f8fafc;background:var(--surface-alt)}.btn-success{background:#d1fae5;background:var(--success-bg);color:#065f46;color:var(--success-text)}.btn-success:hover:not(:disabled){filter:brightness(.95)}.btn-danger{background:#fee2e2;background:var(--danger-bg);color:#991b1b;color:var(--danger-text)}.btn-danger:hover:not(:disabled){filter:brightness(.95)}.btn-ghost{background:#0000;border:none;color:#475569;color:var(--text-2);padding:.35rem .5rem}.btn-ghost:hover:not(:disabled){background:#f1f5f9;background:var(--bg);color:#0f172a;color:var(--text-1)}.btn-sm{font-size:.75rem;padding:.3rem .65rem}.btn-lg{font-size:.9rem;padding:.65rem 1.4rem}.form-group{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.form-label{color:#475569;color:var(--text-2);font-size:.8rem;font-weight:500}.form-input{background:#fff;background:var(--surface);border:1.5px solid #e2e8f0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text-1);font-family:inherit;font-size:.875rem;padding:.55rem .85rem;transition:border-color .15s,box-shadow .15s;width:100%}.form-input:focus{border-color:#3b82f6;border-color:var(--border-focus);box-shadow:0 0 0 3px #3b82f61a;outline:none}input[type=text],input[type=text].form-input{background:#fff;background:var(--surface);border:1.5px solid #e2e8f0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text-1);font-family:inherit;font-size:.875rem;padding:.55rem .85rem;transition:border-color .15s,box-shadow .15s;width:100%}input[type=text]:focus{border-color:#3b82f6;border-color:var(--border-focus);box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-check{align-items:center;cursor:pointer;display:flex;gap:.6rem}.form-check input[type=checkbox]{accent-color:#2563eb;accent-color:var(--primary);cursor:pointer;height:16px;width:16px}.form-check-label{color:#0f172a;color:var(--text-1);cursor:pointer;font-size:.875rem;font-weight:500}.drop-zone{background:#f8fafc;background:var(--surface-alt);border:2px dashed #e2e8f0;border:2px dashed var(--border);border-radius:10px;border-radius:var(--radius);cursor:pointer;padding:2.5rem 2rem;position:relative;text-align:center;transition:border-color .15s,background .15s}.drop-zone.dragover,.drop-zone:hover{background:#dbeafe;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary)}.drop-zone input[type=file]{cursor:pointer;height:100%;inset:0;opacity:0;position:absolute;width:100%}.drop-zone-icon{color:#94a3b8;color:var(--text-3);height:40px;margin:0 auto .75rem;width:40px}.drop-zone-text{color:#475569;color:var(--text-2);font-size:.875rem;font-weight:500}.drop-zone-hint{color:#94a3b8;color:var(--text-3);font-size:.75rem;margin-top:.25rem}.drop-zone-file-name{align-items:center;background:#dbeafe;background:var(--primary-light);border-radius:999px;color:#2563eb;color:var(--primary);display:inline-flex;font-size:.8rem;font-weight:500;gap:.4rem;margin-top:.75rem;padding:.3rem .75rem}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.table{border-collapse:collapse;font-size:.85rem;width:100%}.table th{background:#f8fafc;background:var(--surface-alt);color:#94a3b8;color:var(--text-3);font-size:.72rem;font-weight:600;letter-spacing:.05em;padding:.65rem 1rem;text-align:left;text-transform:uppercase;white-space:nowrap}.table td,.table th{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border)}.table td{color:#0f172a;color:var(--text-1);padding:.75rem 1rem;vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:#f8fafc;background:var(--surface-alt)}.table-clickable tbody tr{cursor:pointer;transition:background .1s}.badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.7rem;font-weight:600;gap:.25rem;padding:.2rem .55rem;white-space:nowrap}.badge-success{background:#d1fae5;background:var(--success-bg);color:#065f46;color:var(--success-text)}.badge-warning{background:#fef3c7;background:var(--warning-bg);color:#92400e;color:var(--warning-text)}.badge-error{background:#fee2e2;background:var(--danger-bg);color:#991b1b;color:var(--danger-text)}.badge-info{background:#dbeafe;background:var(--primary-light);color:#2563eb;color:var(--primary)}.badge-neutral{background:#f1f5f9;color:#475569;color:var(--text-2)}.alert{border:1px solid;border-radius:6px;border-radius:var(--radius-sm);font-size:.85rem;margin-bottom:1rem;padding:.75rem 1rem}.alert-error{background:#fee2e2;background:var(--danger-bg);border-color:#fca5a5;color:#991b1b;color:var(--danger-text)}.alert-success{background:#d1fae5;background:var(--success-bg);border-color:#6ee7b7;color:#065f46;color:var(--success-text)}.alert-info{background:#dbeafe;background:var(--primary-light);border-color:#bfdbfe;color:#2563eb;color:var(--primary)}.spinner{animation:spin .7s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;flex-shrink:0;height:16px;width:16px}.spinner-dark{border:2px solid #e2e8f0;border-top-color:#2563eb;border:2px solid var(--border);border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(1turn)}}.processing-card{padding:3rem 2rem;text-align:center}.processing-spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-top-color:#2563eb;border:3px solid var(--border);border-radius:50%;border-top-color:var(--primary);height:44px;margin:0 auto 1.25rem;width:44px}.processing-title{color:#0f172a;color:var(--text-1);font-size:1rem;font-weight:600;margin-bottom:.35rem}.processing-subtitle{color:#94a3b8;color:var(--text-3);font-size:.825rem}.empty-state{padding:3rem 2rem;text-align:center}.empty-icon{color:#94a3b8;color:var(--text-3);height:48px;margin:0 auto 1rem;width:48px}.empty-title{color:#475569;color:var(--text-2);font-size:.95rem;font-weight:600;margin-bottom:.25rem}.empty-text{color:#94a3b8;color:var(--text-3);font-size:.825rem}.download-row{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.batch-split{grid-gap:1.25rem;align-items:start;display:grid;gap:1.25rem;grid-template-columns:1fr 380px}.batch-preview-panel{position:sticky;top:1.75rem}.preview-placeholder{align-items:center;color:#94a3b8;color:var(--text-3);display:flex;flex-direction:column;gap:.75rem;justify-content:center;padding:3rem 1.5rem}.preview-placeholder svg{height:40px;opacity:.4;width:40px}.preview-img{border-radius:6px;display:block;width:100%}.preview-loading{justify-content:center;padding:3rem}.patient-row,.preview-loading{align-items:center;display:flex}.patient-row{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);cursor:pointer;gap:.75rem;padding:.65rem 1rem;transition:background .1s;-webkit-user-select:none;user-select:none}.patient-row:last-child{border-bottom:none}.patient-row:hover{background:#f8fafc;background:var(--surface-alt)}.patient-row.selected{background:#eff6ff}.patient-row.dragging{opacity:.4}.patient-row.drag-over{border-top:2px solid #2563eb;border-top:2px solid var(--primary)}.drag-handle{align-items:center;color:#94a3b8;color:var(--text-3);cursor:grab;display:flex;flex-shrink:0;padding:2px}.drag-handle:active{cursor:grabbing}.patient-row-info{flex:1 1;min-width:0}.patient-row-name{color:#0f172a;color:var(--text-1);font-size:.875rem;font-weight:600}.patient-row-meta,.patient-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.patient-row-meta{color:#94a3b8;color:var(--text-3);font-size:.72rem;margin-top:1px}.patient-row-actions{align-items:center;display:flex;flex-shrink:0;gap:.35rem}.patient-row-edit{display:flex;flex:1 1;gap:.4rem;min-width:0}.patient-row-edit input{background:#fff;background:var(--surface);border:1.5px solid #3b82f6;border:1.5px solid var(--border-focus);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text-1);font-family:inherit;font-size:.8rem;min-width:0;padding:.3rem .5rem;width:100%}.patient-row-edit input:focus{box-shadow:0 0 0 2px #3b82f626;outline:none}.batch-row-date{color:#94a3b8;color:var(--text-3);font-size:.8rem;margin-top:1px}.divider{background:#e2e8f0;background:var(--border);height:1px;margin:1.25rem 0}.reorder-banner{background:#fef3c7;background:var(--warning-bg);border:1px solid #fde68a;border-radius:6px;border-radius:var(--radius-sm);color:#92400e;color:var(--warning-text);font-size:.825rem;margin-bottom:1rem;padding:.65rem 1rem}.main-footer,.reorder-banner{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.main-footer{background:#fff;background:var(--surface);border-top:1px solid #e2e8f0;border-top:1px solid var(--border);color:#94a3b8;color:var(--text-3);font-size:.72rem;padding:.85rem 2rem}.main-footer strong{color:#475569;color:var(--text-2);font-weight:600}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a8c;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:500}.modal{animation:modal-in .15s ease;background:#fff;background:var(--surface);border-radius:10px;border-radius:var(--radius);box-shadow:0 10px 25px #0000001a,0 4px 10px #0000000d;box-shadow:var(--shadow-lg);max-height:90vh;max-width:480px;overflow-y:auto;width:100%}@keyframes modal-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}.modal-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:1.1rem 1.25rem}.modal-title{color:#0f172a;color:var(--text-1);font-size:.95rem;font-weight:600}.modal-body{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.modal-footer{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;gap:.6rem;justify-content:flex-end;padding:.9rem 1.25rem}.modal-row{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr 1fr}.form-select{appearance:none;background:#fff;background:var(--surface);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;border:1.5px solid #e2e8f0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text-1);cursor:pointer;font-family:inherit;font-size:.875rem;padding:.55rem 2rem .55rem .85rem;width:100%}.form-select:focus{border-color:#3b82f6;border-color:var(--border-focus);box-shadow:0 0 0 3px #3b82f61a;outline:none}.date-list{display:flex;flex-direction:column;gap:.4rem}.date-list-item{align-items:center;display:flex;gap:.4rem}.date-list-item input{background:#fff;background:var(--surface);border:1.5px solid #e2e8f0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text-1);flex:1 1;font-family:inherit;font-size:.8rem;padding:.4rem .65rem}.date-list-item input:focus{border-color:#3b82f6;border-color:var(--border-focus);box-shadow:0 0 0 2px #3b82f61a;outline:none}.lightbox-overlay{align-items:center;animation:fade-in .15s ease;background:#000000e0;cursor:zoom-out;display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:600}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.lightbox-img{border-radius:8px;box-shadow:0 25px 60px #0009;max-height:90vh;max-width:100%;object-fit:contain}.lightbox-close{align-items:center;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.1rem;height:36px;justify-content:center;position:fixed;right:1rem;top:1rem;transition:background .15s;width:36px}.lightbox-close:hover{background:#fff3}.preview-actions{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;gap:.5rem;padding:.6rem .75rem}.preview-img-clickable{border-radius:6px;cursor:zoom-in;display:block;transition:opacity .15s;width:100%}.preview-img-clickable:hover{opacity:.9}@media (max-width:900px){.batch-split{grid-template-columns:1fr}.batch-preview-panel{position:static}}@media (max-width:768px){:root{--sidebar-w:0px}.sidebar{border-top:1px solid #ffffff14;bottom:0;flex-direction:row;height:auto;left:0;position:fixed;top:auto;width:100%;z-index:200}.sidebar-brand,.sidebar-footer,.sidebar-section-label{display:none}.sidebar-nav{flex-direction:row;gap:0;justify-content:space-around;padding:.4rem;width:100%}.nav-item{align-items:center;flex:1 1;flex-direction:column;font-size:.65rem;gap:.2rem;padding:.5rem .75rem;text-align:center}.nav-item.active:before{display:none}.nav-item.active{background:#0000;color:#3b82f6;color:var(--nav-accent)}.main-area{margin-bottom:64px;margin-left:0}.page-body,.page-header{padding:1rem}.stats-row{gap:.75rem}.stat-chip{flex:1 1;min-width:80px;padding:.75rem 1rem}.stat-chip-value{font-size:1.4rem}}@media (max-width:480px){.download-row{flex-direction:column}.download-row .btn{width:100%}.card-header{align-items:flex-start;flex-direction:column}}
/*# sourceMappingURL=main.52385a6d.css.map*/