.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.auth-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem;width:100%;max-width:380px}.auth-logo{height:48px;width:auto;margin-bottom:1rem;display:block}.auth-card h1{margin:0 0 .5rem;font-size:1.5rem;font-weight:700}.auth-subtitle{color:var(--text-muted);margin:0 0 1.5rem;font-size:.95rem}.auth-card form,.auth-form-email-code{display:flex;flex-direction:column;gap:1rem}.auth-card input{width:100%;padding:.75rem 1rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1rem}.auth-card input:focus{outline:none;border-color:var(--accent)}.auth-card button{padding:.85rem;background:var(--accent);color:#000;border:none;border-radius:8px;font-weight:600;font-size:1rem}.auth-card button:hover:not(:disabled){background:var(--accent-dim)}.auth-card button:disabled{opacity:.7;cursor:not-allowed}.auth-social-buttons{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.btn-social{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-dark);color:var(--text);font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-social:hover{background:var(--bg-elevated);border-color:var(--accent)}.btn-google{color:var(--text)}.btn-google svg{flex-shrink:0}.auth-divider{display:flex;align-items:center;gap:1rem;margin:1rem 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-divider span{font-size:.85rem;color:var(--text-muted)}.auth-error{color:var(--error);margin:0;font-size:.9rem}.auth-footer{margin:1.5rem 0 0;color:var(--text-muted);font-size:.9rem}.auth-footer a{color:var(--accent);text-decoration:none}.auth-footer a:hover{text-decoration:underline}.project-wall{min-height:100vh;background:var(--bg-dark)}.wall-header{background:var(--bg-card);border-bottom:1px solid var(--border)}.wall-header-inner{max-width:1200px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.wall-brand{display:flex;align-items:center;gap:1rem}.wall-logo{height:36px;width:auto;object-fit:contain}.wall-header h1{margin:0;font-size:1.15rem;font-weight:600}.wall-main{max-width:1200px;margin:0 auto;padding:2.5rem 2rem}.wall-main h2:first-of-type{margin-bottom:1.75rem}.outils-section{margin-top:4rem;padding-top:3rem;border-top:1px solid var(--border)}.outils-section h2{margin:0 0 .5rem;font-size:1.1rem;font-weight:600}.outils-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.75rem;margin-top:1.25rem}.outil-card{display:flex;flex-direction:column;align-items:stretch;padding:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:inherit;text-align:left;cursor:pointer;overflow:hidden;transition:all .2s}.outil-card:hover{border-color:var(--accent);transform:translateY(-2px)}.outil-thumb{aspect-ratio:16/10;background:var(--bg-dark);position:relative;overflow:hidden}.outil-thumb img{width:100%;height:100%;object-fit:cover}.outil-thumb-placeholder{display:none;width:100%;height:100%;align-items:center;justify-content:center;font-size:2rem;color:var(--text-muted)}.outil-thumb.fallback .outil-thumb-placeholder{display:flex}.outil-info{padding:1rem;display:flex;flex-direction:column;gap:.35rem}.outil-name{font-weight:600;font-size:.95rem}.outil-description{font-size:.85rem;color:var(--text-muted);line-height:1.4}.btn-logout{padding:.5rem 1rem;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);font-size:.9rem;transition:all .2s}.btn-logout:hover{background:var(--bg-elevated);border-color:var(--text-muted);color:var(--text)}.wall-main h2{margin:0 0 1.5rem;font-size:1.1rem;font-weight:500}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.75rem;margin-bottom:4rem}.project-card{display:flex;flex-direction:column;align-items:stretch;padding:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;text-align:left;color:inherit;transition:border-color .2s}.project-card:hover{border-color:var(--accent)}.project-thumb{aspect-ratio:16/10;background:var(--bg-dark);overflow:hidden}.project-thumb img{width:100%;height:100%;object-fit:cover}.project-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3rem;color:var(--text-muted)}.project-info{padding:1rem;display:flex;flex-direction:column;gap:.25rem}.project-name{font-weight:600;text-transform:capitalize}.project-meta{font-size:.85rem;color:var(--text-muted)}.project-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000;animation:projectModalFadeIn .2s ease-out}@keyframes projectModalFadeIn{0%{opacity:0}to{opacity:1}}.project-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:0;max-width:420px;width:100%;overflow:hidden;box-shadow:0 25px 50px -12px #00000080;animation:projectModalSlideIn .3s ease-out}@keyframes projectModalSlideIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.project-modal-thumb{aspect-ratio:16/10;background:var(--bg-dark);overflow:hidden}.project-modal-thumb img{width:100%;height:100%;object-fit:cover}.project-modal-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3rem;color:var(--text-muted)}.project-modal h3{margin:1.25rem 1.5rem .5rem;font-size:1.25rem;font-weight:600;text-transform:capitalize}.project-modal-message{margin:0 1.5rem 1.25rem;font-size:.95rem;line-height:1.5;color:var(--text-muted)}.project-modal-help{display:block;margin-top:.75rem;font-size:.9rem}.project-modal-help a{color:var(--accent);text-decoration:none}.project-modal-help a:hover{text-decoration:underline}.project-modal-form{padding:0 1.5rem 1.5rem}.project-modal-form input{width:100%;padding:.85rem 1rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:1rem;margin-bottom:.75rem}.project-modal-form input:focus{outline:none;border-color:var(--accent)}.project-modal-error{color:var(--error);margin:0 0 .75rem;font-size:.9rem}.project-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.project-modal-actions .btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.project-modal-actions .btn-ghost:hover{background:var(--bg-elevated);color:var(--text)}.project-modal-actions .btn-primary{background:var(--accent);color:#000;border:none;padding:.75rem 1.25rem;border-radius:10px;font-weight:600}.project-modal-actions .btn-primary:hover{background:var(--accent-dim)}.outil-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000;animation:projectModalFadeIn .2s ease-out}.outil-modal.outil-modal-iframe{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:0;width:95vw;max-width:1200px;height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 50px -12px #00000080;animation:projectModalSlideIn .3s ease-out}.outil-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:var(--bg-card);border-bottom:1px solid var(--border);flex-shrink:0}.outil-modal-header h3{margin:0;font-size:1.1rem;font-weight:600}.outil-modal-close{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer;transition:all .2s}.outil-modal-close:hover{background:var(--bg-dark);color:var(--text);border-color:var(--text-muted)}.outil-modal-iframe-content{flex:1;width:100%;border:none;background:#fff}.collaborative-layout{display:flex;min-height:100vh;background:var(--bg-dark)}.project-sidebar{width:260px;background:var(--bg-card);border-right:1px solid var(--border);padding:1.5rem 0;flex-shrink:0}.sidebar-thumbnail{position:relative;width:100%;aspect-ratio:16/10;background:var(--bg-dark);overflow:hidden;display:flex;align-items:center;justify-content:center}.sidebar-thumbnail img{width:100%;height:100%;object-fit:cover;display:block}.sidebar-thumbnail-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:3rem;opacity:0;background:var(--bg-dark);transition:opacity .2s}.sidebar-thumbnail-placeholder.visible{opacity:.4}.sidebar-header{padding:0 1.25rem 1.25rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.sidebar-header .btn-back{background:none;border:none;color:var(--text-muted);font-size:.9rem;padding:.5rem 0;margin-bottom:.75rem}.sidebar-header .btn-back:hover{color:var(--accent)}.project-title{margin:0;font-size:1.1rem;font-weight:600;text-transform:capitalize}.folder-nav{display:flex;flex-direction:column;gap:.25rem}.folder-nav-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:none;border:none;color:var(--text-muted);text-align:left;width:100%;font-size:.95rem;transition:all .2s}.folder-nav-item:hover{background:var(--bg-elevated);color:var(--text)}.folder-nav-item.active{background:#22c55e26;color:var(--accent);border-right:3px solid var(--accent)}.folder-icon{font-size:1.25rem}.folder-name{flex:1}.folder-count{font-size:.85rem;opacity:.8}.project-content{flex:1;padding:2rem;overflow-y:auto}.content-header{margin-bottom:1.5rem}.content-header h3{margin:0 0 .25rem;font-size:1.25rem;font-weight:600}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.file-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.25rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;color:inherit;text-align:center;transition:all .2s}.file-card:hover{border-color:var(--accent);transform:translateY(-2px)}.file-icon{font-size:2rem}.file-name{font-weight:500;font-size:.95rem;word-break:break-word}.file-ext{font-size:.8rem;color:var(--text-muted)}.file-card-orthovue .file-card-preview{width:100%;min-height:80px;aspect-ratio:4/3;max-height:120px;background:var(--bg-dark);border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.file-card-orthovue .file-card-preview img,.file-card-orthovue .file-card-preview .auth-image{width:100%;height:100%;object-fit:cover;display:block}.file-card-orthovue .file-card-preview .auth-image-loading,.file-card-orthovue .file-card-preview .auth-image-error{font-size:.75rem;color:var(--text-muted);padding:.5rem}.file-card-orthovue .file-icon{display:none}.empty-folder{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--text-muted)}.empty-icon{font-size:4rem;margin-bottom:1rem;opacity:.5}.model-viewer{display:flex;flex-direction:column;height:100vh}.viewer-toolbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--bg-card);border-bottom:1px solid var(--border);flex-wrap:wrap}.btn-back{padding:.5rem 1rem;background:transparent;border:1px solid var(--border);color:var(--text);border-radius:8px}.btn-back:hover{background:var(--bg-elevated)}.toolbar-group{display:flex;gap:.25rem}.toolbar-group button{padding:.5rem 1rem;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-muted);border-radius:6px}.toolbar-group button:hover,.toolbar-group button.active{background:var(--accent);color:#000;border-color:var(--accent)}.slice-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.slice-controls label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-muted)}.slice-controls select{padding:.35rem .5rem;background:var(--bg-dark);border:1px solid var(--border);color:var(--text);border-radius:6px}.slice-controls input[type=range]{width:100px}.slice-control-with-value{display:flex;align-items:center;gap:.5rem}.slice-value-input{width:64px;padding:.25rem .4rem;background:var(--bg-dark);border:1px solid var(--border);color:var(--text);border-radius:4px;font-size:.85rem;font-family:JetBrains Mono,monospace}.slice-value-input:focus{outline:none;border-color:var(--accent)}.btn-export{padding:.5rem 1rem;background:var(--accent);color:#000;border:none;border-radius:6px;font-weight:600}.btn-export:hover{background:var(--accent-dim)}.measure-result{color:var(--accent);font-weight:600}.btn-reset-measure{padding:.4rem .8rem;font-size:.85rem;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-muted);border-radius:6px}.btn-reset-measure:hover{color:var(--text);border-color:var(--text-muted)}.viewer-canvas-container{flex:1;position:relative;min-height:0}.viewer-canvas-container canvas{width:100%;height:100%;display:block}.viewer-loading,.viewer-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0f0f12f2;color:var(--text)}.viewer-loading-content{display:flex;flex-direction:column;align-items:center;gap:1rem;min-width:240px}.viewer-loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:viewer-spin .8s linear infinite}@keyframes viewer-spin{to{transform:rotate(360deg)}}.viewer-loading-content p{margin:0;font-size:.95rem;color:var(--text-muted)}.viewer-loading-bar{width:100%;height:6px;background:var(--bg-elevated);border-radius:3px;overflow:hidden}.viewer-loading-bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .2s ease}.viewer-loading-percent{font-family:JetBrains Mono,monospace;font-size:1.1rem;font-weight:600;color:var(--accent)}.viewer-error{color:var(--error)}.measure-hint{padding:.5rem 1rem;margin:0;font-size:.9rem;color:var(--text-muted);background:var(--bg-card);border-top:1px solid var(--border)}.measure-cote{background:#00d4fff2;color:#000;padding:4px 10px;border-radius:4px;font-family:JetBrains Mono,monospace;font-weight:600;font-size:14px;white-space:nowrap;box-shadow:0 2px 8px #0000004d}.orthovue-viewer{display:flex;flex-direction:column;height:100vh}.orthovue-viewer .viewer-toolbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--bg-card);border-bottom:1px solid var(--border);flex-wrap:wrap}.orthovue-viewer .btn-back{padding:.5rem 1rem;background:transparent;border:1px solid var(--border);color:var(--text);border-radius:8px}.orthovue-viewer .btn-back:hover{background:var(--bg-elevated)}.orthovue-viewer .btn-reset-measure{padding:.4rem .8rem;font-size:.85rem;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-muted);border-radius:6px}.orthovue-viewer .btn-reset-measure:hover{color:var(--text);border-color:var(--text-muted)}.orthovue-toolbar-info{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.orthovue-scale{font-size:.9rem;color:var(--accent)}.orthovue-no-scale{font-size:.9rem;color:var(--text-muted)}.orthovue-measure{font-weight:600;color:var(--accent)}.orthovue-canvas-container{flex:1;position:relative;min-height:0;cursor:crosshair;overflow:hidden}.orthovue-canvas-container canvas{width:100%;height:100%;display:block}.orthovue-loading,.orthovue-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#0f0f12f2;color:var(--text)}.orthovue-error{color:var(--error)}.orthovue-loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:orthovue-spin .8s linear infinite}@keyframes orthovue-spin{to{transform:rotate(360deg)}}.orthovue-hint{padding:.5rem 1rem;margin:0;font-size:.85rem;color:var(--text-muted);background:var(--bg-card);border-top:1px solid var(--border)}.dxf-viewer{display:flex;flex-direction:column;height:100vh;background:var(--bg-dark)}.dxf-viewer .viewer-toolbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:var(--bg-card);border-bottom:1px solid var(--border);flex-wrap:wrap}.dxf-viewer .btn-back{padding:.5rem 1rem;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;font-size:.9rem}.dxf-viewer .btn-back:hover{border-color:var(--accent);color:var(--accent)}.dxf-toolbar-info{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.dxf-scale{font-size:.9rem;color:var(--text-muted)}.dxf-measure-btns{display:flex;gap:.25rem}.dxf-measure-btns button{padding:.35rem .75rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-size:.85rem;cursor:pointer}.dxf-measure-btns button:hover,.dxf-measure-btns button.active{border-color:var(--accent);color:var(--accent)}.dxf-measure{font-size:.9rem;font-weight:600;color:var(--accent)}.dxf-viewer .btn-reset-measure{padding:.35rem .75rem;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-size:.85rem;cursor:pointer}.dxf-viewer .btn-reset-measure:hover{border-color:var(--accent);color:var(--accent)}.dxf-canvas-container{flex:1;position:relative;overflow:hidden;cursor:grab}.dxf-canvas-container:active{cursor:grabbing}.dxf-canvas-container canvas{width:100%;height:100%;display:block}.dxf-loading,.dxf-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:var(--bg-dark);color:var(--text-muted)}.dxf-error{color:#ef4444}.dxf-loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:dxf-spin .8s linear infinite}@keyframes dxf-spin{to{transform:rotate(360deg)}}.dxf-hint{padding:.5rem 1.5rem;font-size:.85rem;color:var(--text-muted);background:var(--bg-card);border-top:1px solid var(--border);margin:0}.admin-dashboard{min-height:100vh;background:var(--bg-dark)}.admin-header{background:var(--bg-card);border-bottom:1px solid var(--border);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.admin-header h1{margin:0;font-size:1.25rem;font-weight:600}.admin-header-actions{display:flex;gap:.75rem}.admin-header-actions .btn-outline{padding:.5rem 1rem;border-radius:8px;font-size:.9rem;text-decoration:none;color:var(--text);border:1px solid var(--border);background:transparent}.admin-header-actions .btn-outline:hover{background:var(--bg-elevated);border-color:var(--accent)}.admin-header-actions .btn-logout{padding:.5rem 1rem;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);font-size:.9rem;transition:all .2s}.admin-header-actions .btn-logout:hover{background:var(--bg-elevated);border-color:var(--text-muted);color:var(--text)}.admin-upload-banner{background:#f59e0b!important;color:#000!important;padding:.75rem 2rem;display:flex!important;flex-direction:column;gap:.5rem;position:sticky;top:0;z-index:9999;box-shadow:0 2px 8px #0000004d}.admin-upload-banner-spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(0,0,0,.3);border-top-color:#000;border-radius:50%;animation:admin-upload-spin .8s linear infinite;margin-right:.5rem;vertical-align:middle}.admin-upload-banner-text{display:flex;align-items:center;font-weight:600;font-size:.95rem}.admin-upload-banner-bar{height:4px;background:#0003;border-radius:2px;overflow:hidden}.admin-upload-banner-fill{height:100%;background:#000;border-radius:2px;transition:width .2s ease;min-width:2%}.admin-main{max-width:900px;margin:0 auto;padding:2rem}.admin-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem 2rem;margin-bottom:1.5rem}.admin-card h2{margin:0 0 .5rem;font-size:1.1rem;font-weight:600}.admin-card .muted{margin:0 0 1.25rem;font-size:.9rem;color:var(--text-muted);line-height:1.5}.admin-form{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.admin-form input{flex:1;min-width:200px;max-width:320px;padding:.75rem 1rem;background:var(--bg-dark);border:1px solid var(--border);color:var(--text);border-radius:10px;font-size:.95rem}.admin-form input:focus{outline:none;border-color:var(--accent)}.admin-form button{padding:.75rem 1.25rem;background:var(--accent);color:#000;border:none;border-radius:10px;font-weight:600;font-size:.95rem}.admin-form button:hover:not(:disabled){background:var(--accent-dim)}.admin-form button:disabled{opacity:.6;cursor:not-allowed}.configured{color:var(--accent);margin:0 0 .75rem;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.configured:before{content:"✓";display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--accent);color:#000;border-radius:50%;font-size:.75rem;font-weight:700}.upload-row{display:flex;gap:1rem;align-items:center}.upload-row input[type=text]{max-width:220px}.folder-select,.folder-select-small{padding:.75rem 1rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:.9rem}.folder-select{min-width:140px}.folder-select-small{padding:.5rem .75rem;font-size:.85rem;min-width:110px}.upload-btn{display:inline-flex;align-items:center;padding:.75rem 1.25rem;background:var(--bg-elevated);border:1px dashed var(--border);border-radius:10px;color:var(--text-muted);font-size:.9rem;cursor:pointer;transition:all .2s}.upload-btn:hover:not(.uploading){border-color:var(--accent);color:var(--accent)}.upload-btn.uploading{opacity:1;pointer-events:none;min-width:180px}.upload-btn-progress{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;min-width:140px}.upload-btn-percent{font-size:.9rem;font-weight:600;color:var(--accent)}.upload-btn-bar{height:6px;background:var(--bg-dark);border-radius:3px;overflow:hidden}.upload-btn-bar>div{height:100%;background:var(--accent);border-radius:3px;transition:width .2s ease;min-width:2%}.btn-upload.btn-small.uploading{min-width:100px;padding:.5rem .75rem}.btn-upload-progress{display:flex;flex-direction:column;align-items:stretch;gap:.2rem;font-size:.8rem}.btn-upload-progress span{font-weight:600;color:var(--accent)}.btn-upload-bar{height:4px;background:var(--bg-dark);border-radius:2px;overflow:hidden;min-width:50px}.btn-upload-bar>div{height:100%;background:var(--accent);border-radius:2px;transition:width .2s ease;min-width:2%}.upload-btn input,.project-admin-actions input[type=file]{position:absolute;width:0;height:0;opacity:0}.admin-list{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.admin-list li{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px}.admin-list li span{font-size:.95rem}.admin-btn-small{padding:.35rem .75rem;font-size:.85rem;background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:6px;cursor:pointer;transition:all .2s}.admin-btn-small:hover{border-color:var(--error);color:var(--error)}.admin-new-user-code{margin-top:1rem;padding:1rem;background:var(--bg-dark);border:1px solid var(--accent);border-radius:10px}.admin-new-user-code p{margin:0 0 .5rem;font-size:.95rem}.admin-code-display{display:block;font-size:1.5rem;font-weight:700;letter-spacing:.15em;padding:.5rem 0;color:var(--accent)}.projects-admin-list{display:flex;flex-direction:column;gap:.75rem}.project-admin-card{display:flex;align-items:center;gap:1.25rem;padding:1rem 1.25rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:12px;transition:border-color .2s}.project-admin-card:hover{border-color:var(--accent)}.project-admin-thumb{width:72px;height:48px;background:var(--bg-elevated);border-radius:8px;overflow:hidden;flex-shrink:0}.project-admin-thumb img{width:100%;height:100%;object-fit:cover}.project-admin-thumb>span:not(.outil-placeholder){width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:var(--text-muted)}.project-admin-thumb .outil-placeholder{display:none;width:100%;height:100%;align-items:center;justify-content:center;font-size:1.5rem;color:var(--text-muted)}.project-admin-thumb.no-thumb img{display:none!important}.project-admin-thumb.no-thumb .outil-placeholder{display:flex}.outil-url{font-size:.8rem;color:var(--accent);word-break:break-all}.outil-admin-desc{display:block;font-size:.85rem;color:var(--text-muted);margin:.2rem 0}.outil-form .outil-form-row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:.75rem}.outil-form .outil-description-input{width:100%;max-width:100%}.btn-danger:hover{border-color:var(--error);color:var(--error)}.project-admin-info{flex:1;min-width:0}.project-admin-info strong{display:block;text-transform:capitalize;font-size:1rem;margin-bottom:.25rem}.project-admin-meta{font-size:.85rem;color:var(--text-muted);display:flex;gap:1rem}.has-pw{color:var(--accent)}.no-pw{color:var(--text-muted)}.project-admin-actions{display:flex;flex-wrap:wrap;gap:.5rem;flex-shrink:0}.project-admin-actions .btn-small{padding:.5rem 1rem;font-size:.85rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text)}.project-admin-actions .btn-small:hover:not(.uploading){border-color:var(--accent);color:var(--accent)}.project-admin-actions .btn-small.uploading{opacity:.7;pointer-events:none}.admin-alert{padding:1rem 1.25rem;border-radius:10px;margin-bottom:1.5rem;font-size:.95rem}.error-msg{background:#ef444426;border:1px solid var(--error);color:var(--error)}.success-msg{background:#22c55e26;border:1px solid var(--accent);color:var(--accent)}.admin-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000;animation:adminModalFadeIn .2s ease-out}@keyframes adminModalFadeIn{0%{opacity:0}to{opacity:1}}.admin-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:2rem;max-width:400px;width:100%;box-shadow:0 25px 50px -12px #00000080;animation:adminModalSlideIn .3s ease-out}@keyframes adminModalSlideIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.admin-modal h3{margin:0 0 1rem;font-size:1.2rem;font-weight:600}.admin-modal p{margin:0 0 1.25rem;color:var(--text-muted);font-size:.95rem}.admin-modal input{width:100%;padding:.85rem 1rem;margin-bottom:1rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:10px;color:var(--text)}.admin-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.admin-modal-actions button{padding:.75rem 1.25rem;border-radius:10px;font-weight:600}.admin-modal-actions .btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.admin-modal-actions .btn-ghost:hover{background:var(--bg-elevated);color:var(--text)}.admin-modal-actions .btn-primary{background:var(--accent);color:#000;border:none}.admin-modal-warning h3{color:#f59e0b}.admin-delete-warning{background:#f59e0b26;border:1px solid rgba(245,158,11,.4);border-radius:10px;padding:1rem;margin-bottom:1rem!important;color:var(--text)}.admin-delete-confirm{margin-bottom:.5rem!important}.admin-delete-input{margin-bottom:1.25rem!important}.admin-modal-actions .btn-danger{background:#dc2626;color:#fff;border:none}.admin-modal-actions .btn-danger:hover:not(:disabled){background:#b91c1c}.admin-modal-actions .btn-danger:disabled{opacity:.5;cursor:not-allowed}.admin-modal-actions .btn-primary:hover:not(:disabled){background:var(--accent-dim)}.admin-inline-progress{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding:.75rem 1rem;background:var(--bg-dark);border-radius:10px;border:1px solid var(--border)}.admin-inline-progress .admin-upload-bar{flex:1;max-width:300px}.admin-inline-progress span{font-size:.9rem;font-weight:600;color:var(--accent);white-space:nowrap}.admin-upload-overlay{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:#000000e6!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex!important;align-items:center;justify-content:center;z-index:2147483647;visibility:visible!important;opacity:1!important;pointer-events:auto}.admin-upload-progress{background:var(--bg-card);border:2px solid var(--accent);border-radius:16px;padding:2rem;min-width:280px;display:flex;flex-direction:column;align-items:center;gap:1rem;box-shadow:0 25px 50px -12px #00000080}.admin-upload-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:admin-upload-spin .8s linear infinite}@keyframes admin-upload-spin{to{transform:rotate(360deg)}}.admin-upload-progress p{margin:0;font-size:.95rem;color:var(--text)}.admin-upload-count{font-size:.9rem;color:var(--text-muted)}.admin-upload-bar{width:100%;height:10px;background:var(--bg-elevated);border-radius:5px;overflow:hidden}.admin-upload-bar-fill{height:100%;background:var(--accent);border-radius:5px;transition:width .2s ease;min-width:2%}.admin-upload-percent{font-family:JetBrains Mono,monospace;font-size:1.1rem;font-weight:600;color:var(--accent)}.admin-modal-orthovues{max-width:560px}.admin-modal-orthovues .muted{margin-bottom:1rem}.orthovues-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}.orthovue-row{display:flex;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border)}.orthovue-preview{width:80px;height:60px;flex-shrink:0;background:var(--bg-dark);border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.orthovue-preview img,.orthovue-preview .auth-image{width:100%;height:100%;object-fit:cover}.orthovue-preview .auth-image-loading,.orthovue-preview .auth-image-error{font-size:.8rem;color:var(--text-muted)}.orthovue-row-main{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.orthovue-filename{font-size:.9rem;flex-shrink:0;max-width:180px;overflow:hidden;text-overflow:ellipsis}.orthovue-input-row{display:flex;align-items:center;gap:.5rem}.orthovue-input-row input{width:100px;padding:.5rem .75rem}.orthovue-unit{font-size:.85rem;color:var(--text-muted)}.btn-orthovue-measure{background:var(--accent);color:#000;border:none;padding:.4rem .75rem;font-size:.85rem;white-space:nowrap}.btn-orthovue-measure:hover{opacity:.9}.admin-orthovue-viewer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:var(--bg-dark);overflow:auto}.admin-project-detail{min-height:100vh;background:var(--bg-dark);padding:1.5rem 2rem}.admin-detail-header{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.admin-detail-header .btn-back{background:none;border:none;color:var(--text-muted);font-size:.9rem;padding:.5rem 0}.admin-detail-header .btn-back:hover{color:var(--accent)}.admin-detail-header h1{flex:1;margin:0;font-size:1.5rem;font-weight:600}.admin-detail-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.admin-detail-actions .folder-select{padding:.5rem .75rem;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.9rem}.admin-detail-actions .btn-upload{padding:.5rem 1rem;background:var(--bg-elevated);border:1px dashed var(--border);border-radius:8px;color:var(--text);font-size:.9rem;cursor:pointer}.admin-detail-actions .btn-upload:hover:not(.uploading){border-color:var(--accent);color:var(--accent)}.admin-detail-actions .btn-upload input{display:none}.admin-detail-content{display:flex;gap:2rem;margin-top:1rem}.admin-detail-nav{display:flex;flex-direction:column;gap:.25rem;min-width:200px}.admin-detail-nav-item{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;color:var(--text-muted);text-align:left;width:100%;font-size:.95rem;cursor:pointer;transition:all .2s}.admin-detail-nav-item:hover{background:var(--bg-elevated);color:var(--text)}.admin-detail-nav-item.active{background:#22c55e26;color:var(--accent);border-color:var(--accent)}.admin-detail-nav-item .folder-icon{font-size:1.2rem}.admin-detail-nav-item .file-count{margin-left:auto;font-size:.85rem;opacity:.8}.admin-detail-files{flex:1}.admin-detail-files h2{margin:0 0 1rem;font-size:1.2rem}.admin-file-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.admin-file-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.admin-file-item .file-icon{font-size:1.25rem}.admin-file-item .file-name{flex:1;font-weight:500}.admin-file-item .file-ext{font-size:.8rem;color:var(--text-muted)}.admin-file-item .btn-danger{padding:.35rem .75rem;font-size:.85rem}:root{--bg-dark: #0f0f12;--bg-card: #18181d;--bg-elevated: #222228;--accent: #22c55e;--accent-dim: #16a34a;--text: #f4f4f5;--text-muted: #a1a1aa;--border: #27272a;--error: #ef4444;--radius: 10px}*{box-sizing:border-box}body{margin:0;font-family:DM Sans,system-ui,sans-serif;background:var(--bg-dark);color:var(--text);min-height:100vh}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit}code,.mono{font-family:JetBrains Mono,monospace}
