.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);position:relative;overflow:hidden}.login-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden}.bg-shape{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5;animation:float 20s ease-in-out infinite}.shape-1{width:600px;height:600px;background:linear-gradient(135deg,var(--bleu-france) 0%,var(--bleu-clair) 100%);top:-200px;left:-100px;animation-delay:0s}.shape-2{width:500px;height:500px;background:linear-gradient(135deg,var(--rouge-france) 0%,var(--rouge-doux) 100%);bottom:-150px;right:-100px;animation-delay:-7s;opacity:.3}.shape-3{width:400px;height:400px;background:linear-gradient(135deg,var(--or-accent) 0%,#c4956a 100%);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:-14s;opacity:.2}@keyframes float{0%,to{transform:translate(0) scale(1)}25%{transform:translate(30px,-30px) scale(1.05)}50%{transform:translate(-20px,20px) scale(.95)}75%{transform:translate(-30px,-20px) scale(1.02)}}.bg-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:60px 60px;animation:gridMove 20s linear infinite}html[data-theme=light] .bg-grid{background-image:linear-gradient(rgba(0,0,0,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.03) 1px,transparent 1px)}@keyframes gridMove{0%{transform:translate(0)}to{transform:translate(60px,60px)}}.login-container{position:relative;z-index:1;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:var(--space-xl)}.login-header{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.login-logo{width:80px;height:80px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.1);padding:var(--space-md);box-shadow:0 8px 32px #0000004d,inset 0 1px #ffffff1a}html[data-theme=light] .login-logo{background:#fffc;border-color:#0000001a;box-shadow:0 8px 32px #0000001a,inset 0 1px #ffffff80}.login-logo-img{width:100%;height:100%;object-fit:contain}.login-title{font-size:1.75rem;font-weight:700;background:linear-gradient(135deg,var(--text-primary) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.login-subtitle{font-size:.9rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.15em}.login-card{width:100%;background:#1c2128cc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-xl);overflow:hidden;box-shadow:0 20px 60px #0006,0 0 1px #ffffff1a inset}html[data-theme=light] .login-card{background:#ffffffe6;box-shadow:0 20px 60px #00000026,0 0 1px #0000001a inset}.card-header-login{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-lg);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);color:var(--text-secondary);font-weight:500}.card-header-login svg{color:var(--accent)}.form-body{padding:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-lg)}.form-group{display:flex;flex-direction:column;gap:var(--space-sm)}.form-label{font-size:.875rem;font-weight:500;color:var(--text-secondary);padding-left:var(--space-xs)}.input-wrapper{display:flex;align-items:center;gap:var(--space-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-sm) var(--space-md);transition:all .2s ease}.input-wrapper:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px #d4a37326}html[data-theme=light] .input-wrapper:focus-within{box-shadow:0 0 0 4px #b5651d1a}.input-wrapper svg{color:var(--text-muted);flex-shrink:0}.form-input{flex:1;background:transparent;border:none;font-family:var(--font-display);font-size:1rem;color:var(--text-primary);outline:none;padding:var(--space-sm) 0}.form-input::placeholder{color:var(--text-muted)}.password-toggle{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);transition:all .2s ease;display:flex;align-items:center;justify-content:center}.password-toggle:hover{color:var(--accent);background:var(--bg-tertiary)}.login-button{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:linear-gradient(135deg,var(--accent) 0%,#c4956a 100%);color:var(--noir-profond);border:none;border-radius:var(--radius-lg);font-family:var(--font-display);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:var(--space-sm);min-height:52px}html[data-theme=light] .login-button{background:linear-gradient(135deg,#b5651d,#d4a373);color:#fff}.login-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px #d4a37366}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-error{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);background:#e639461a;border:1px solid rgba(230,57,70,.3);border-radius:var(--radius-md);color:var(--accent-red);font-size:.9rem}.login-error svg{flex-shrink:0}.login-footer{font-size:.8rem;color:var(--text-muted);text-align:center}.login-loading{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);color:var(--text-secondary)}.login-loading .loading-spinner.large{width:48px;height:48px;border-width:3px;border-color:transparent;border-top-color:var(--accent)}@media(max-width:480px){.login-page{padding:var(--space-md)}.login-container{gap:var(--space-lg)}.login-logo{width:64px;height:64px}.login-title{font-size:1.5rem}.form-body{padding:var(--space-lg)}}.login-button .loading-spinner{width:20px;height:20px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.app{min-height:100vh;display:flex;flex-direction:column}.header{position:sticky;top:0;z-index:100;background:#0d1117cc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);transition:background-color .3s ease,border-color .3s ease}html[data-theme=light] .header{background:#ffffffe6}.header-content{max-width:1200px;margin:0 auto;padding:var(--space-md) var(--space-xl);display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg)}.header-actions,.logo{display:flex;align-items:center;gap:var(--space-md)}.logo.clickable{cursor:pointer;transition:opacity .2s ease}.logo.clickable:hover{opacity:.9}.logo-image{height:48px;width:auto;object-fit:contain;transition:transform .2s ease}.logo.clickable:hover .logo-image{transform:scale(1.05)}.logo-text h1{font-size:1.25rem;font-weight:600;background:linear-gradient(135deg,var(--text-primary) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-subtitle{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em}.stats-badge{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-lg);font-size:.875rem;color:var(--text-secondary);transition:background-color .3s ease,border-color .3s ease}.stats-badge svg{color:var(--accent)}.stats-divider{color:var(--border-color)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.theme-toggle:hover{background:var(--bg-secondary);color:var(--accent);border-color:var(--accent)}.laureats-toggle{display:flex;align-items:center;gap:6px;padding:6px 14px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all .2s ease;font-size:.8rem;font-weight:500;white-space:nowrap}.laureats-toggle:hover{background:var(--bg-secondary);border-color:var(--accent);color:var(--accent)}.laureats-toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}.laureats-toggle.active:hover{opacity:.9}.logout-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.logout-button:hover{background:#e639461a;color:var(--accent-red);border-color:var(--accent-red)}.main{flex:1;max-width:1200px;margin:0 auto;padding:var(--space-xl) var(--space-xl) var(--space-2xl);width:100%}.privacy-warning{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:var(--radius-md);margin-bottom:var(--space-lg);font-size:.875rem;color:var(--text-secondary);line-height:1.5}.privacy-warning svg{color:var(--warning-text);flex-shrink:0;margin-top:2px}.privacy-warning strong{color:var(--warning-text)}.search-section{margin-bottom:var(--space-2xl)}.search-form{position:relative}.search-input-wrapper{display:flex;align-items:center;gap:var(--space-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-xl);padding:var(--space-sm) var(--space-sm) var(--space-sm) var(--space-lg);transition:all .2s ease;cursor:text}.search-input-wrapper:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px #d4a37326}html[data-theme=light] .search-input-wrapper:focus-within{box-shadow:0 0 0 4px #b5651d1a}.search-input-wrapper svg{color:var(--text-muted);flex-shrink:0}.search-input{flex:1;background:transparent;border:none;font-family:var(--font-display);font-size:1.125rem;color:var(--text-primary);outline:none;box-shadow:none}.search-input:focus{outline:none;box-shadow:none}.search-input:focus-visible{outline:none;box-shadow:none}.search-input::placeholder{color:var(--text-muted)}.search-button{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:linear-gradient(135deg,var(--accent) 0%,#c4956a 100%);color:var(--noir-profond);border:none;border-radius:var(--radius-lg);font-family:var(--font-display);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}html[data-theme=light] .search-button{background:linear-gradient(135deg,#b5651d,#d4a373);color:#fff}.search-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #d4a37366}.search-button:active:not(:disabled){transform:translateY(0)}.search-button:disabled{opacity:.6;cursor:not-allowed}.loading-spinner{width:20px;height:20px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.loading-spinner.large{width:40px;height:40px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.suggestions{margin-top:var(--space-lg)}.suggestions-label{font-size:.875rem;color:var(--text-secondary);margin-bottom:var(--space-md)}.suggestions-list{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.suggestion-chip{padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-secondary);font-family:var(--font-display);font-size:.875rem;cursor:pointer;transition:all .15s ease}.suggestion-chip:hover{background:var(--bg-card);border-color:var(--accent);color:var(--text-primary)}.loading-state{display:flex;justify-content:center;padding:var(--space-2xl)}.loading-content{text-align:center}.loading-content p{margin-top:var(--space-md);color:var(--text-secondary)}.loading-hint{font-size:.875rem;color:var(--text-muted);margin-top:var(--space-sm)!important}.results{display:flex;flex-direction:column;gap:var(--space-lg)}.new-query-button{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--bg-tertiary);border:2px dashed var(--border-color);border-radius:var(--radius-lg);color:var(--text-secondary);font-family:var(--font-display);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.new-query-button--inline{padding:var(--space-sm) var(--space-md);border-style:solid;background:var(--bg-secondary);font-size:.95rem}.new-query-button:hover{background:var(--bg-secondary);border-color:var(--accent);color:var(--accent)}.new-query-button svg{transition:transform .2s ease}.new-query-button:hover svg{transform:rotate(90deg)}.result-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:background-color .3s ease,border-color .3s ease}.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);transition:background-color .3s ease}.card-header.collapsible{cursor:pointer;width:100%;border:none;color:inherit;font:inherit;text-align:left;transition:background .15s ease}.card-header.collapsible:hover{background:var(--bg-secondary)}.card-title{display:flex;align-items:center;gap:var(--space-sm);font-weight:500}.card-title svg{color:var(--accent)}.code-lang,.result-count{font-size:.75rem;color:var(--text-muted);padding:2px 8px;background:var(--bg-primary);border-radius:var(--radius-sm);margin-left:var(--space-sm)}.ai-badge{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;color:var(--accent-blue);padding:2px 8px;background:#58a6ff1a;border-radius:var(--radius-sm);margin-left:var(--space-sm)}html[data-theme=light] .ai-badge{background:#0969da1a}.ai-badge svg{width:12px;height:12px;color:var(--accent-blue)}.card-content{overflow:hidden}.code-card .card-content{background:var(--code-bg)}.code-card pre{margin:0!important}html[data-theme=light] .code-card .card-content{background:#f6f8fa}.table-wrapper{overflow-x:auto;max-height:400px;overflow-y:auto}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{position:sticky;top:0;background:var(--bg-tertiary);padding:var(--space-sm) var(--space-md);text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-color);white-space:nowrap}.data-table td{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-color);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tr:hover td{background:var(--bg-tertiary)}.data-table tr:last-child td{border-bottom:none}.answer-content{padding:var(--space-lg);line-height:1.7}.answer-loading{display:flex;align-items:center;gap:var(--space-md);color:var(--text-secondary);padding:var(--space-md) 0}.answer-loading .loading-spinner{width:20px;height:20px}.streaming-indicator{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--accent);margin-left:var(--space-sm)}.streaming-dot{width:8px;height:8px;background:var(--accent);border-radius:50%;animation:pulse 1s ease-in-out infinite}.typing-cursor{display:inline-block;color:var(--accent);animation:blink 1s step-end infinite;margin-left:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.answer-content p{margin-bottom:var(--space-md)}.answer-content p:last-child{margin-bottom:0}.answer-content ul,.answer-content ol{margin:var(--space-md) 0;padding-left:var(--space-lg)}.answer-content li{margin-bottom:var(--space-sm)}.answer-content strong{color:var(--accent)}.answer-content code{font-family:var(--font-mono);font-size:.875em;padding:2px 6px;background:var(--bg-tertiary);border-radius:var(--radius-sm)}.answer-content table{width:100%;border-collapse:collapse;margin:var(--space-md) 0;font-size:.9rem}.answer-content th,.answer-content td{padding:var(--space-sm) var(--space-md);border:1px solid var(--border-color);text-align:left}.answer-content th{background:var(--bg-tertiary);font-weight:600;color:var(--text-secondary)}.answer-content tr:hover td{background:var(--bg-tertiary)}.answer-content blockquote{border-left:4px solid var(--accent);padding-left:var(--space-md);margin:var(--space-md) 0;color:var(--text-secondary);font-style:italic}.answer-content hr{border:none;border-top:1px solid var(--border-color);margin:var(--space-lg) 0}.error-card{background:#e639461a;border:1px solid var(--accent-red);border-radius:var(--radius-lg);padding:var(--space-lg)}.error-card h3{color:var(--accent-red);margin-bottom:var(--space-sm)}.footer{text-align:center;padding:var(--space-lg);color:var(--text-muted);font-size:.875rem;border-top:1px solid var(--border-color);margin-top:auto;transition:border-color .3s ease}@media(max-width:768px){.header-content{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.header-actions{width:100%;justify-content:space-between}.stats-badge{flex:1}.main{padding:var(--space-lg)}.privacy-warning{flex-direction:column;gap:var(--space-sm)}.search-input-wrapper{flex-wrap:wrap;padding:var(--space-sm)}.search-input{min-width:100%;padding:var(--space-sm)}.search-button{width:100%;justify-content:center}.suggestions-list{justify-content:center}.data-table{font-size:.75rem}}.code-card code[class*=language-],.code-card pre[class*=language-]{font-family:var(--font-mono)!important}.header-tabs{display:flex;gap:var(--space-xs);background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-lg);border:1px solid var(--border-color)}.header-tab{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-display);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.header-tab:hover{color:var(--text-primary);background:var(--bg-secondary)}.header-tab.active{background:var(--accent);color:var(--noir-profond)}html[data-theme=light] .header-tab.active{background:#b5651d;color:#fff}.header-tab svg{width:16px;height:16px}.cluster-visualization{width:100%}.viz-tabs{display:flex;gap:var(--space-sm);margin-bottom:var(--space-lg);padding:4px;background:var(--bg-tertiary);border-radius:var(--radius-lg);border:1px solid var(--border-color);width:fit-content}.viz-tab{padding:var(--space-sm) var(--space-lg);background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-display);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.viz-tab:hover{color:var(--text-primary);background:var(--bg-secondary)}.viz-tab.active{background:var(--accent);color:var(--noir-profond);box-shadow:0 2px 8px #d4a3734d}html[data-theme=light] .viz-tab.active{background:#b5651d;color:#fff}.viz-description{color:var(--text-secondary);font-size:.95rem;margin-bottom:var(--space-lg);line-height:1.5}.viz-stats{display:flex;gap:var(--space-lg);margin-bottom:var(--space-lg);flex-wrap:wrap}.viz-stat{display:flex;flex-direction:column;gap:2px;padding:var(--space-md) var(--space-lg);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md)}.viz-stat-value{font-size:1.5rem;font-weight:700;color:var(--accent)}.viz-stat-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.viz-plot-wrapper{display:flex;gap:var(--space-md);position:relative}.viz-plot-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);min-height:700px;overflow:hidden;flex:1}.viz-legend{position:relative;transition:all .3s ease}.viz-legend.collapsed{width:40px}.viz-legend.expanded{width:320px;max-width:35vw}.viz-legend-toggle{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:.75rem;cursor:pointer;transition:all .2s ease;white-space:nowrap}.viz-legend.collapsed .viz-legend-toggle{writing-mode:vertical-rl;text-orientation:mixed;padding:var(--space-md) var(--space-sm);height:auto}.viz-legend-toggle:hover{background:var(--bg-secondary);color:var(--text-primary)}.viz-legend-toggle-text{font-weight:500}.viz-legend-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);margin-top:var(--space-sm);max-height:650px;display:flex;flex-direction:column}.viz-legend-header{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-color);font-size:.8rem;color:var(--text-secondary)}.viz-legend-items{overflow-y:auto;padding:var(--space-xs);flex:1}.viz-legend-item{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease}.viz-legend-item:hover,.viz-legend-item.highlighted{background:var(--bg-secondary)}.viz-legend-item.active{background:var(--accent);color:var(--noir-profond)}.viz-legend-item.active .viz-legend-title,.viz-legend-item.active .viz-legend-count{color:var(--noir-profond)}.viz-legend-item.dimmed{opacity:.4}.viz-legend-item.hidden{opacity:.3;text-decoration:line-through}.viz-legend-reset{width:100%;padding:var(--space-xs) var(--space-sm);margin-bottom:var(--space-xs);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.7rem;cursor:pointer;transition:all .2s ease}.viz-legend-reset:hover{background:var(--accent);color:var(--noir-profond);border-color:var(--accent)}.viz-legend-color{width:10px;height:10px;border-radius:50%;flex-shrink:0}.viz-legend-title{flex:1;font-size:.7rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viz-legend-count{font-size:.65rem;color:var(--text-tertiary);flex-shrink:0}.viz-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-lg)}.viz-modal{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);max-width:600px;width:100%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;position:relative;box-shadow:0 20px 60px #0006}.viz-modal-close{position:absolute;top:var(--space-sm);right:var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);font-size:1rem;transition:all .2s ease}.viz-modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.viz-modal-header{padding:var(--space-md) var(--space-lg);padding-right:50px;border-bottom:1px solid var(--border-color)}.viz-modal-cluster{font-size:.8rem;color:var(--accent);font-weight:500}.viz-modal-title{padding:var(--space-md) var(--space-lg);margin:0;font-size:1.25rem;color:var(--text-primary);font-family:var(--font-display);line-height:1.3}.viz-modal-description{padding:0 var(--space-lg) var(--space-lg);overflow-y:auto;flex:1}.viz-modal-description p{color:var(--text-secondary);line-height:1.6;margin:0;white-space:pre-wrap}.viz-modal-clustering-section{margin-bottom:var(--space-lg);padding:var(--space-md);background:linear-gradient(135deg,#2ecc7126,#27ae601a);border-left:4px solid #2ecc71;border-radius:var(--radius-md)}.viz-modal-clustering-title{font-size:.85rem;font-weight:600;color:#2ecc71;margin:0 0 var(--space-sm) 0;text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:var(--space-xs)}.viz-modal-clustering-title:before{content:"✦";font-size:.7rem}.viz-modal-clustering-content{color:var(--text-primary);line-height:1.7;margin:0;font-size:.95rem;font-weight:500}.viz-modal-section{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-color)}.viz-modal-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.viz-modal-section-title{font-size:.85rem;font-weight:600;color:var(--accent);margin:0 0 var(--space-sm) 0;text-transform:uppercase;letter-spacing:.5px}.viz-modal-section-content{color:var(--text-secondary);line-height:1.7;margin:0;font-size:.95rem}.viz-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:700px;gap:var(--space-md);color:var(--text-secondary)}.viz-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px;gap:var(--space-sm);color:var(--text-secondary);text-align:center;padding:var(--space-lg)}.viz-error-hint{font-size:.875rem;color:var(--text-muted);max-width:400px}.viz-instructions{margin-top:var(--space-md);padding:var(--space-md);background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.viz-instructions p{color:var(--text-secondary);font-size:.875rem;margin:0}.viz-instructions strong{color:var(--accent)}.js-plotly-plot .plotly .modebar{background:var(--bg-card)!important;border-radius:var(--radius-sm)}.js-plotly-plot .plotly .modebar-btn{color:var(--text-secondary)!important}.js-plotly-plot .plotly .modebar-btn:hover{color:var(--accent)!important}@media(max-width:768px){.header-tabs{order:2;width:100%;justify-content:center}.viz-tabs{width:100%;overflow-x:auto;padding:4px}.viz-tab{white-space:nowrap;flex-shrink:0}.viz-stats{flex-direction:column;gap:var(--space-sm)}.viz-stat{flex-direction:row;align-items:center;gap:var(--space-md)}.viz-plot-container{min-height:500px}.viz-loading,.cluster-visualization .js-plotly-plot{height:500px!important}.viz-plot-wrapper{flex-direction:column}.viz-legend.expanded{width:100%;max-width:100%}.viz-legend-content{max-height:200px}}.data-explorer{width:100%}.explorer-section{margin-bottom:var(--space-xl)}.explorer-section-title{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}.explorer-section-title:before{content:"";width:4px;height:1em;background:linear-gradient(135deg,var(--accent) 0%,#c4956a 100%);border-radius:2px}.plot-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-md)}.plot-type-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-lg) var(--space-md);background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;text-align:center}.plot-type-card:hover{border-color:var(--accent);background:var(--bg-secondary)}.plot-type-card.active{border-color:var(--accent);background:linear-gradient(135deg,#d4a37326,#c4956a1a);box-shadow:0 0 0 1px var(--accent)}html[data-theme=light] .plot-type-card.active{background:linear-gradient(135deg,#b5651d1a,#d4a37314)}.plot-type-icon{font-size:2rem;margin-bottom:var(--space-xs)}.plot-type-label{font-size:.95rem;font-weight:600;color:var(--text-primary)}.plot-type-desc{font-size:.75rem;color:var(--text-muted);line-height:1.4}.column-selectors{display:flex;gap:var(--space-lg);flex-wrap:wrap}.column-select-group{flex:1;min-width:250px}.explorer-filter-bar{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);flex-wrap:wrap}.filter-bar-icon{font-size:1.1rem}.filter-bar-label{font-size:.9rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}.filter-bar-select{padding:6px 12px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.85rem;cursor:pointer;min-width:180px;transition:border-color .2s}.filter-bar-select:focus{outline:none;border-color:var(--accent-primary)}.filter-bar-reset{padding:6px 14px;background:#e74c3c26;color:#e74c3c;border:1px solid rgba(231,76,60,.3);border-radius:var(--radius-md);font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s}.filter-bar-reset:hover{background:#e74c3c40;border-color:#e74c3c}.explorer-active-filter{display:inline-flex;align-items:center;gap:var(--space-sm);padding:6px 14px;background:var(--bg-card);border:1px solid var(--accent-primary);border-radius:var(--radius-lg);font-size:.85rem;color:var(--text-primary);margin-top:var(--space-sm)}.active-filter-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-primary);flex-shrink:0}.explorer-toggle-row{display:flex;align-items:center;width:100%;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border-color)}.toggle-switch-label{display:flex;align-items:center;gap:var(--space-md);cursor:pointer;font-size:.9rem;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.toggle-switch-label:hover{color:var(--text-primary)}.toggle-switch{position:relative;width:44px;height:24px;background:var(--border-color);border-radius:12px;cursor:pointer;transition:background .3s;flex-shrink:0}.toggle-switch.active{background:var(--accent-primary)}.toggle-switch-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s;box-shadow:0 1px 3px #0000004d}.toggle-switch.active .toggle-switch-knob{transform:translate(20px)}.column-select-label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-sm)}.column-select{width:100%;padding:var(--space-md) var(--space-lg);background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-display);font-size:1rem;cursor:pointer;transition:all .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-md) center;padding-right:calc(var(--space-lg) + 24px)}.column-select:hover{border-color:var(--accent)}.column-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #d4a37326}html[data-theme=light] .column-select:focus{box-shadow:0 0 0 3px #b5651d1a}.explorer-plot-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);min-height:500px;overflow:hidden;position:relative}.explorer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;gap:var(--space-md);color:var(--text-secondary)}.explorer-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:var(--space-sm);color:var(--text-secondary);text-align:center;padding:var(--space-lg)}.explorer-error .error-icon{font-size:2.5rem}.explorer-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:var(--space-md);color:var(--text-muted);text-align:center}.explorer-empty .empty-icon{font-size:3rem;opacity:.5}.explorer-instructions{padding:var(--space-md) var(--space-lg);background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.explorer-instructions p{color:var(--text-secondary);font-size:.875rem;margin:0}.explorer-instructions strong{color:var(--accent)}@media(max-width:768px){.plot-type-grid{grid-template-columns:repeat(2,1fr)}.column-selectors{flex-direction:column;gap:var(--space-md)}.column-select-group{min-width:100%}.explorer-plot-container{min-height:400px}.explorer-loading,.explorer-error,.explorer-empty{min-height:300px}}@media(max-width:480px){.plot-type-grid{grid-template-columns:1fr}.plot-type-card{flex-direction:row;text-align:left;padding:var(--space-md)}.plot-type-icon{font-size:1.5rem;margin-bottom:0}.plot-type-card>:not(.plot-type-icon){flex:1}}:root{--bleu-france: #002654;--bleu-clair: #1a3a6c;--bleu-hover: #0a3060;--rouge-france: #CE1126;--rouge-doux: #e63946;--blanc-casse: #f8f9fa;--gris-chaud: #e9ecef;--gris-moyen: #adb5bd;--noir-profond: #0d1117;--or-accent: #d4a373;--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-card: #1c2128;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--border-color: #30363d;--accent: #d4a373;--accent-blue: #58a6ff;--accent-red: #e63946;--warning-bg: rgba(212, 163, 115, .1);--warning-border: rgba(212, 163, 115, .3);--warning-text: #d4a373;--code-bg: #0d1117;--bg-gradient: radial-gradient(ellipse at 20% 0%, rgba(0, 38, 84, .3) 0%, transparent 50%), radial-gradient(ellipse at 80% 100%, rgba(206, 17, 38, .15) 0%, transparent 50%), linear-gradient(180deg, #0d1117 0%, #0a0d12 100%)}html[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f6f8fa;--bg-tertiary: #eaeef2;--bg-card: #ffffff;--text-primary: #1f2328;--text-secondary: #59636e;--text-muted: #8b949e;--border-color: #d1d9e0;--accent: #b5651d;--accent-blue: #0969da;--accent-red: #cf222e;--warning-bg: rgba(181, 101, 29, .08);--warning-border: rgba(181, 101, 29, .25);--warning-text: #9a6700;--code-bg: #f6f8fa;--bg-gradient: radial-gradient(ellipse at 20% 0%, rgba(0, 38, 84, .06) 0%, transparent 50%), radial-gradient(ellipse at 80% 100%, rgba(206, 17, 38, .04) 0%, transparent 50%), linear-gradient(180deg, #ffffff 0%, #f0f3f6 100%)}:root{--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-display);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden;transition:background-color .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-gradient);pointer-events:none;z-index:-1;transition:background .3s ease}#root{min-height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--gris-moyen)}::selection{background:var(--accent);color:var(--noir-profond)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fade-in{animation:fadeIn .3s ease-out}.animate-slide-up{animation:slideUp .4s ease-out}.animate-pulse{animation:pulse 2s ease-in-out infinite}
