:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--bg-primary: #f8fafc;--bg-secondary: #f1f5f9;--card-bg: #ffffff;--border-light: #e2e8f0;--border-medium: #cbd5e1;--text-primary: #1e293b;--text-secondary: #475569;--text-muted: #64748b;--accent: #3b82f6;--accent-light: #dbeafe;--accent-hover: #2563eb;--success: #10b981;--warning: #f59e0b;--danger: #dc2626;--danger-light: #fee2e2;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--radius: 12px;--transition: all .2s ease}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;width:100%;overflow-x:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6}.app{height:100vh;width:100vw;display:flex;flex-direction:column;overflow:hidden}.app-header{background:linear-gradient(135deg,#93c5fd,#60a5fa);color:#fff;padding:1rem 1.5rem;box-shadow:var(--shadow-md);display:flex;justify-content:space-between;align-items:center;flex-shrink:0;height:auto;min-height:80px;max-width:100vw;overflow:hidden}.header-content{display:flex;flex-direction:column;gap:.5rem;min-width:0;flex:1}.app-header h1{font-size:1.3rem;font-weight:600;letter-spacing:-.025em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-status{min-height:18px;overflow:hidden}.refresh-indicator{display:flex;align-items:center;gap:.5rem;font-size:.8rem;opacity:.9;font-weight:400}.spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.last-update{font-size:.9em;opacity:.8;font-weight:400;color:#d1fae5}.header-error{background:#ef444433;color:#fecaca;padding:.5rem 1rem;border-radius:6px;font-size:.75rem;margin-top:.5rem;border:1px solid rgba(239,68,68,.3)}.app-stats{display:flex;gap:.5rem;font-size:.8rem;opacity:.9;flex-shrink:0;flex-wrap:wrap}.app-main{flex:1;display:grid;grid-template-columns:300px 1fr;gap:0;height:calc(100vh - 80px);max-width:100vw;overflow:hidden}.selection-panel{display:flex;flex-direction:column;gap:1rem;height:100%;overflow:hidden;background:var(--bg-secondary);border-right:1px solid var(--border-light);padding:1rem}.audiologist-selector{background:var(--card-bg);padding:1rem;border-radius:var(--radius);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);flex-shrink:0}.audiologist-selector h2{font-size:1rem;margin-bottom:1rem;color:var(--text-primary);font-weight:600}.select-input{width:100%;padding:.75rem;border:2px solid var(--border-light);border-radius:8px;font-size:.85rem;background:var(--card-bg);color:var(--text-primary);transition:var(--transition)}.select-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.audiologist-info{margin-top:1rem;padding:1rem;background:var(--bg-secondary);border-radius:8px;display:flex;flex-direction:column;gap:.5rem}.info-item{display:flex;justify-content:space-between;font-size:.85rem}.label{color:var(--text-muted)}.value{font-weight:600;color:var(--text-primary)}.patient-list{background:var(--card-bg);border-radius:var(--radius);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.patient-list h3{font-size:1rem;margin-bottom:.75rem;color:var(--text-primary);font-weight:600;flex-shrink:0;padding:1rem 1rem 0}.patient-cards{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 1rem 1rem;display:flex;flex-direction:column;gap:.75rem}.patient-cards::-webkit-scrollbar{width:6px}.patient-cards::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:3px}.patient-cards::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px;transition:var(--transition)}.patient-card{padding:.75rem;border:2px solid var(--border-light);border-radius:8px;cursor:pointer;transition:var(--transition);background:var(--card-bg);flex-shrink:0}.patient-card:hover{border-color:var(--accent);background-color:var(--accent-light);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.patient-card.selected{border-color:var(--accent);background-color:var(--accent-light);box-shadow:var(--shadow-md)}.patient-name{font-weight:600;color:var(--text-primary);margin-bottom:.5rem;font-size:.9rem;word-break:break-word;overflow-wrap:break-word}.patient-info{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--text-muted)}.file-panel{background:var(--bg-secondary);height:100%;overflow:hidden;display:flex;flex-direction:column;padding:1rem}.breadcrumb{background:var(--card-bg);padding:.75rem 1.5rem;font-size:.85rem;color:var(--text-secondary);border-bottom:1px solid var(--border-light);flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breadcrumb .separator{margin:0 .5rem;color:var(--text-muted)}.file-manager{flex:1;display:flex;flex-direction:column;background:var(--card-bg);overflow:hidden;padding:1rem}.patient-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-shrink:0}.patient-header h2{color:var(--text-primary);font-size:1.2rem;font-weight:600;word-break:break-word;overflow-wrap:break-word;min-width:0}.file-stats{background:var(--accent-light);color:var(--accent);padding:.5rem 1rem;border-radius:20px;font-size:.8rem;font-weight:500;flex-shrink:0;white-space:nowrap}.file-content-grid{flex:1;display:grid;grid-template-columns:1fr 380px;gap:1rem;overflow:hidden;min-height:0}.modelisation-column,.upload-column{min-width:0;overflow:hidden;display:flex;flex-direction:column}.modelisation-section{background:var(--card-bg);border:1px solid var(--border-light);border-radius:var(--radius);box-shadow:var(--shadow-sm);height:100%;display:flex;flex-direction:column;overflow:hidden}.section-header{padding:1rem;border-bottom:1px solid var(--border-light);flex-shrink:0}.section-header h3{color:var(--text-primary);font-size:1rem;font-weight:600;margin:0}.modelisation-cards{flex:1;overflow-y:auto;overflow-x:hidden;padding:1rem;display:flex;flex-direction:column;gap:1rem}.modelisation-cards::-webkit-scrollbar{width:6px}.modelisation-cards::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}.modelisation-card{background:var(--card-bg);border:1px solid var(--border-light);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow-sm);flex-shrink:0}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:.5rem}.file-info{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.file-icon{font-size:1.2rem;flex-shrink:0}.file-name{font-weight:600;color:var(--text-primary);font-size:.85rem;word-break:break-word;overflow-wrap:break-word;min-width:0;line-height:1.3}.file-meta{color:var(--text-muted);font-size:.75rem;margin-top:.25rem}.download-btn-small{background:var(--accent);color:#fff;border:none;padding:.4rem;border-radius:6px;cursor:pointer;font-size:.9rem;transition:var(--transition);min-width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.download-btn-small:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.download-btn-small:disabled{opacity:.7;cursor:wait}.modelisation-details h4{color:var(--text-primary);font-size:.85rem;margin-bottom:.75rem;font-weight:600}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.75rem}.detail-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem;background:var(--bg-secondary);border-radius:6px;min-width:0}.detail-item .label{font-size:.75rem;color:var(--text-muted);font-weight:500}.detail-item .value{font-size:.75rem;color:var(--text-primary);font-weight:600;word-break:break-word;overflow-wrap:break-word;text-align:right}.badge{background:var(--accent-light);color:var(--accent);padding:.2rem .4rem;border-radius:10px;font-size:.7rem!important;font-weight:600!important}.creation-info{padding:.5rem;background:var(--bg-secondary);border-radius:6px;margin-bottom:.5rem}.creation-info small{color:var(--text-muted);font-size:.75rem;line-height:1.3}.status-warning{background:#fef3cd;color:#856404;padding:.4rem .6rem;border-radius:6px;font-size:.75rem;font-weight:500;border:1px solid #ffeaa7}.no-modelisation{background:var(--card-bg);border:2px dashed var(--border-medium);border-radius:var(--radius);height:100%;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-state{text-align:center;color:var(--text-muted)}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.6}.empty-state h3{font-size:1rem;margin-bottom:.5rem;color:var(--text-secondary)}.empty-state p{font-size:.85rem;line-height:1.5}.file-upload-card{background:var(--card-bg);border:1px solid var(--border-light);border-radius:var(--radius);box-shadow:var(--shadow-sm);height:100%;display:flex;flex-direction:column;overflow:hidden}.upload-header{background:var(--bg-secondary);padding:1rem;border-bottom:1px solid var(--border-light);flex-shrink:0}.upload-header h3{color:var(--text-primary);font-size:1rem;font-weight:600;margin:0 0 .75rem}.ear-indicator{display:flex;align-items:center;gap:.75rem;background:var(--success);color:#fff;padding:.6rem .8rem;border-radius:8px;margin-top:.75rem}.ear-icon{font-size:1.2rem;flex-shrink:0}.ear-text strong{display:block;font-size:.85rem;margin-bottom:.2rem}.ear-text small{opacity:.9;font-size:.75rem}.upload-main{flex:1;padding:1rem;display:flex;flex-direction:column;gap:1rem;overflow:hidden}.upload-zone{border:2px dashed var(--border-medium);border-radius:var(--radius);padding:1.5rem 1rem;text-align:center;cursor:pointer;transition:var(--transition);background:var(--bg-primary);flex:1;display:flex;align-items:center;justify-content:center;min-height:120px}.upload-zone:hover{border-color:var(--accent);background:var(--accent-light);transform:scale(1.02)}.upload-content{max-width:250px}.upload-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.8}.upload-content p{font-weight:600;color:var(--text-primary);margin-bottom:.4rem;font-size:.9rem}.upload-content small{color:var(--text-muted);font-size:.8rem;display:block;margin-bottom:.75rem}.upload-specs{background:var(--bg-secondary);color:var(--text-muted);padding:.4rem .8rem;border-radius:15px;font-size:.75rem;display:inline-block}.file-preview{background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius);padding:1rem;border-left:4px solid var(--accent);flex-shrink:0}.file-preview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.file-preview-header h4{font-size:.85rem;font-weight:600;color:var(--text-primary);margin:0}.remove-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.2rem;border-radius:4px;transition:var(--transition);font-size:1rem;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.remove-btn:hover:not(:disabled){background:var(--danger-light);color:var(--danger)}.file-details{margin-bottom:1rem}.file-name{font-weight:600;color:var(--text-primary);font-size:.85rem;margin-bottom:.4rem;word-break:break-word;overflow-wrap:break-word;line-height:1.3}.file-meta{display:flex;gap:.75rem;margin-bottom:.5rem;flex-wrap:wrap}.file-size{color:var(--text-muted);font-size:.8rem}.file-ear{color:var(--accent);font-weight:500;font-size:.8rem}.patient-id{font-size:.75rem;color:var(--text-muted);font-family:Courier New,monospace;background:var(--card-bg);padding:.2rem .4rem;border-radius:4px;display:inline-block;word-break:break-all}.send-btn{width:100%;background:var(--accent);color:#fff;border:none;padding:.75rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;transition:var(--transition);font-size:.85rem}.send-btn:disabled{opacity:.6;cursor:not-allowed}.send-btn:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.upload-empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:1.5rem}.empty-state-content{text-align:center;max-width:280px}.upload-empty-state .empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.6}.upload-empty-state h4{color:var(--text-primary);font-size:1rem;margin-bottom:.75rem;font-weight:600}.upload-empty-state p{color:var(--text-secondary);font-size:.85rem;line-height:1.5;margin-bottom:1rem}.empty-help{background:var(--accent-light);border:1px solid var(--accent);border-radius:8px;padding:.75rem}.empty-help small{color:var(--accent);font-size:.8rem;line-height:1.4;display:block}.upload-complete{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;text-align:center}.complete-icon{font-size:3rem;margin-bottom:1rem}.upload-complete h4{color:var(--text-primary);margin-bottom:.5rem;font-size:1rem;font-weight:600}.upload-complete p{color:var(--text-muted);margin-bottom:1.5rem;font-size:.85rem}.complete-details{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.ear-badge{padding:.4rem .8rem;border-radius:15px;font-size:.8rem;font-weight:500;color:#fff}.ear-badge.droite{background:var(--success)}.ear-badge.gauche{background:var(--warning)}.upload-progress{background:var(--bg-secondary);border-top:1px solid var(--border-light);padding:1rem;margin-top:auto;flex-shrink:0}.upload-progress h4{margin-bottom:.75rem;color:var(--text-primary);font-size:.85rem;font-weight:600}.progress-item{margin-bottom:.4rem}.progress-info{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.8rem;color:var(--text-secondary)}.progress-bar{height:4px;background:var(--border-light);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease;border-radius:2px}.loading-container,.error-container{display:flex;justify-content:center;align-items:center;min-height:50vh}.error-message{background:var(--danger-light);border:1px solid #fecaca;color:var(--danger);padding:1rem;border-radius:8px;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center}.retry-btn{background:var(--danger);color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.8rem}.retry-btn:hover{background:#b91c1c}@media (max-width: 1024px){.app-main{grid-template-columns:1fr;height:calc(100vh - 80px)}.selection-panel{height:50vh;border-right:none;border-bottom:1px solid var(--border-light)}.file-content-grid{grid-template-columns:1fr;gap:1rem}.upload-column{order:-1}}@media (max-width: 768px){.app-header{flex-direction:column;gap:.75rem;text-align:center;padding:.75rem 1rem;min-height:70px}.app-main{height:calc(100vh - 70px)}.app-stats{justify-content:center;font-size:.75rem}.app-header h1{font-size:1.1rem}.selection-panel,.file-manager{padding:.75rem}.details-grid{grid-template-columns:1fr}.card-header{flex-direction:column;gap:.75rem;align-items:stretch}.download-btn-small{align-self:flex-end}.patient-header{flex-direction:column;gap:.75rem;align-items:flex-start}.ear-indicator{flex-direction:column;text-align:center;gap:.4rem}.complete-details{flex-direction:column;gap:.5rem}.file-meta{flex-direction:column;gap:.4rem}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.patient-card,.file-panel,.upload-progress,.modelisation-card,.ear-indicator,.file-upload-card{animation:fadeIn .3s ease-out}.refresh-indicator,.last-update{transition:opacity .3s ease}
