        :root {
            --or: #d4af37; --noir: #110f19; --sarcelle: #508289;
            --vert: #059669; --rouge: #ef4444; --bleu: #3b82f6;
            --blanc: #ffffff; --violet: #8b5cf6;
        }
        html, body { margin:0; padding:0; background:transparent; font-family:'Segoe UI',sans-serif; height:100%; width:100%; overflow:hidden; }

        .lab-header { background:var(--noir); color:var(--blanc); padding:8px 12px; display:flex; justify-content:space-between; align-items:center; border-bottom:2px solid var(--or); flex-shrink:0; z-index:1000; }
        .curseur-item { display:flex; align-items:center; gap:4px; color:var(--or); font-size:0.82rem; font-weight:bold; flex-shrink:0; }
        .curseur-item input[type=text] { width:52px; background:#110f19; color:white; border:1px solid var(--sarcelle); border-radius:4px; padding:2px 4px; font-size:0.8rem; text-align:center; }
        .curseur-item button { background:#334155; color:white; border:none; border-radius:4px; width:22px; height:22px; cursor:pointer; font-size:0.78rem; line-height:1; }
        .curseur-item button:hover { background:var(--sarcelle); }
        .curseur-item button:disabled { opacity:0.4; cursor:default; }
        .header-left, .header-right { display:flex; align-items:center; gap:10px; }
        .header-right { min-width:0; overflow-x:auto; overflow-y:hidden; flex-wrap:nowrap; white-space:nowrap; scrollbar-width:thin; scrollbar-color:var(--or) transparent; padding-bottom:2px; }
        .header-right::-webkit-scrollbar { height:5px; }
        .header-right::-webkit-scrollbar-track { background:transparent; }
        .header-right::-webkit-scrollbar-thumb { background:var(--or); border-radius:3px; }
        .titre-studio { font-weight:900; font-size:0.95rem; color:var(--or); display:flex; align-items:center; gap:6px; }
        .separateur-v { width:1px; height:20px; background:#334155; }
        .btn-action { padding:4px 12px; border-radius:4px; font-weight:bold; cursor:pointer; display:flex; align-items:center; gap:6px; border:none; font-size:0.85rem; transition:all 0.2s; }
        .btn-action:hover { filter:brightness(1.15); transform:translateY(-1px); }
        .btn-fermer { background:transparent; border:1px solid var(--rouge); color:var(--rouge); width:28px; height:28px; padding:0; display:flex; align-items:center; justify-content:center; border-radius:4px; cursor:pointer; }
        .btn-fermer:hover { background:var(--rouge); color:white; }
        .discipline-selector { background:#334155; color:var(--blanc); border:1px solid var(--or); padding:2px 8px; border-radius:12px; font-weight:bold; cursor:pointer; outline:none; font-size:0.85rem; }
        .input-nom { background:#1e1b2e; border:1px solid var(--sarcelle); color:var(--or); padding:2px 8px; border-radius:4px; font-weight:bold; outline:none; width:130px; font-size:0.85rem; }

        .app-body { position:relative; flex:1; background:var(--noir); overflow:hidden; display:flex; width:100%; }

        /* SIDEBAR */
        .sidebar { width:340px; background:var(--noir); border-right:1px solid var(--sarcelle); display:flex; flex-direction:column; overflow-y:hidden; z-index:500; flex-shrink:0; }
        .tabs-header { display:flex; border-bottom:1px solid var(--sarcelle); background:#1a1829; flex-shrink:0; }
        .tab-btn { flex:1; padding:10px; background:transparent; color:#94a3b8; border:none; cursor:pointer; font-weight:bold; transition:0.2s; font-size:0.8rem; }
        .tab-btn.active { color:var(--or); border-bottom:3px solid var(--or); background:rgba(212,175,55,0.1); }
        .sidebar-content { flex:1; overflow-y:auto; padding:10px; display:flex; flex-direction:column; gap:8px; }

        /* TOOLS */
        .section-label { color:var(--sarcelle); font-size:0.7rem; font-weight:bold; text-transform:uppercase; letter-spacing:0.08em; margin:6px 0 4px; }
        .toolbar-3d { display:flex; flex-wrap:wrap; gap:4px; background:#1a1829; padding:6px; border-radius:6px; border:1px solid var(--sarcelle); }
        .tool-btn { background:transparent; color:#94a3b8; border:1px solid transparent; width:34px; height:34px; border-radius:4px; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:0.95rem; transition:0.2s; position:relative; }
        .tool-btn:hover { color:var(--blanc); background:rgba(255,255,255,0.1); }
        .tool-btn.active { color:var(--or); border-color:var(--or); background:rgba(212,175,55,0.2); }
        .tool-btn[title]:hover::after { content:attr(title); position:absolute; left:38px; top:50%; transform:translateY(-50%); background:#1e1b2e; color:white; border:1px solid var(--sarcelle); padding:3px 8px; border-radius:4px; white-space:nowrap; font-size:0.75rem; z-index:999; pointer-events:none; }

        /* OBJECT CARDS */
        .obj-card { background:#1a1829; border:1px solid var(--sarcelle); border-radius:4px; padding:8px; display:flex; justify-content:space-between; align-items:center; font-size:0.8rem; color:white; }
        .obj-card:hover { border-color:var(--or); }
        .obj-label { display:flex; align-items:center; gap:6px; }
        .color-dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }
        .color-dot-input { -webkit-appearance:none; appearance:none; width:14px; height:14px; border-radius:50%; border:1px solid rgba(255,255,255,0.3); padding:0; background:none; cursor:pointer; flex-shrink:0; }
        .color-dot-input::-webkit-color-swatch-wrapper { padding:0; border-radius:50%; }
        .color-dot-input::-webkit-color-swatch { border:none; border-radius:50%; }
        .color-dot-input::-moz-color-swatch { border:none; border-radius:50%; }
        .obj-actions { display:flex; gap:4px; }
        .obj-actions button { background:none; border:none; cursor:pointer; font-size:0.85rem; padding:2px 4px; }

        /* INPUTS */
        .input-3d { background:#110f19; color:var(--or); border:1px solid var(--sarcelle); padding:4px 6px; border-radius:4px; font-family:monospace; font-size:0.9rem; width:100%; box-sizing:border-box; }
        .input-3d:focus { border-color:var(--or); outline:none; }
        .input-group { display:flex; gap:5px; margin-top:4px; }
        .input-group input { flex:1; }
        .input-label { color:#94a3b8; font-size:0.7rem; text-align:center; margin-top:1px; }

        /* CANVAS ZONE */
        .zone-3d { position:absolute; top:0; left:340px; right:0; bottom:0; background:#0a0a12; overflow:hidden; }
        #threejs-canvas { width:100%; height:100%; display:block; }

        /* HUD */
        .hud-coords { position:absolute; top:10px; right:10px; background:rgba(17,15,25,0.9); border:1px solid var(--sarcelle); border-radius:6px; padding:8px 12px; font-family:monospace; font-size:0.8rem; color:var(--or); z-index:100; }
        .hud-mode { position:absolute; bottom:10px; right:10px; background:rgba(17,15,25,0.9); border:1px solid var(--or); border-radius:6px; padding:6px 12px; font-size:0.8rem; color:white; z-index:100; }
        .hud-view { position:absolute; bottom:10px; left:10px; display:flex; gap:5px; z-index:100; }
        .view-btn { background:rgba(17,15,25,0.9); border:1px solid var(--sarcelle); color:white; padding:4px 10px; border-radius:4px; cursor:pointer; font-size:0.75rem; font-weight:bold; transition:0.2s; }
        .view-btn:hover { border-color:var(--or); color:var(--or); }

        /* TOAST */
        .toast-notif { position:fixed; bottom:20px; right:20px; z-index:99999; background:#1a1829; color:var(--blanc); border-left:4px solid var(--vert); padding:12px 18px; border-radius:6px; font-size:0.9rem; font-weight:bold; box-shadow:0 4px 15px rgba(0,0,0,0.5); max-width:300px; }
        .toast-notif.toast-err { border-left-color:var(--rouge); }
        .toast-notif.toast-info { border-left-color:var(--bleu); }

        /* MODAL COORDS */
        .modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.8); z-index:9999; display:flex; align-items:center; justify-content:center; }
        .modal-box { background:var(--noir); border:2px solid var(--or); border-radius:10px; padding:24px; width:360px; color:white; }
        .modal-box h3 { color:var(--or); margin:0 0 16px; font-size:1.1rem; }
        .modal-box label { font-size:0.8rem; color:#94a3b8; display:block; margin-bottom:2px; margin-top:10px; }
        .modal-actions { display:flex; gap:8px; margin-top:18px; }
        .modal-actions button { flex:1; padding:8px; border-radius:6px; border:none; font-weight:bold; cursor:pointer; font-size:0.9rem; }
        .btn-confirm { background:var(--vert); color:white; }
        .btn-cancel { background:transparent; border:1px solid var(--rouge)!important; color:var(--rouge); }

        /* PINS VOCAUX — mise en évidence pilotée par la voix */
        .pins-panel { position:fixed; background:rgba(17,15,25,0.97); color:var(--or); border-radius:8px; pointer-events:auto; border:1px solid var(--or); width:280px; box-shadow:0 8px 25px rgba(0,0,0,0.7); z-index:5000; display:flex; flex-direction:column; overflow:hidden; max-height:460px; }
        .pins-panel-hdr { background:#000; padding:7px 12px; font-weight:bold; cursor:move; border-bottom:1px solid var(--or); display:flex; justify-content:space-between; align-items:center; user-select:none; font-size:0.85rem; }
        .pins-panel-body { padding:10px; overflow-y:auto; flex:1; }
        .pin-card { background:rgba(255,255,255,0.05); border-radius:5px; padding:8px; margin-bottom:8px; border:1px solid #334155; }
        .pin-card.actif { border-color:var(--or); }
        .pin-card textarea { width:100%; background:#110f19; color:white; border:1px solid var(--sarcelle); border-radius:4px; padding:5px; font-size:0.78rem; resize:vertical; min-height:44px; box-sizing:border-box; }
        .pin-marker { position:absolute; width:26px; height:26px; margin-left:-13px; margin-top:-13px; border-radius:50%; background:var(--or); color:var(--noir); display:flex; align-items:center; justify-content:center; font-size:0.75rem; font-weight:900; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,0.6); border:2px solid var(--noir); z-index:400; transition:transform 0.15s; }
        .pin-marker:hover { transform:scale(1.15); }
        .pin-marker.pin-selectionne { background:var(--bleu); }
        .vocal-texte-bar { position:absolute; left:50%; bottom:64px; transform:translateX(-50%); max-width:80%; background:rgba(10,10,18,0.92); border:1.5px solid var(--or); border-radius:8px; padding:10px 18px; color:white; font-size:0.95rem; text-align:center; z-index:500; pointer-events:none; }
        @keyframes bmEvidencePulse3D { 0%,100% { filter:drop-shadow(0 0 3px rgba(212,175,55,0.55)); } 50% { filter:drop-shadow(0 0 14px #d4af37); } }
        .btn-visite.actif { animation:bmEvidencePulse3D 1s ease-in-out infinite; }

        /* EXAMEN PANEL */
        .carte-question { background:rgba(255,255,255,0.05); border:1px solid var(--sarcelle); border-radius:6px; padding:10px; }
        .score-bar { height:14px; border-radius:8px; overflow:hidden; background:#334155; margin:8px 0; position:relative; }
        .score-fill { height:100%; border-radius:8px; transition:width 0.8s ease; }
        .score-pct { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); font-size:0.7rem; font-weight:bold; color:white; }

        /* BIBLIO */
        .bib-modal { position:fixed; inset:0; background:rgba(0,0,0,0.85); z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
        .bib-box { background:var(--noir); width:100%; max-width:860px; height:75vh; border-radius:10px; border:2px solid var(--or); display:flex; flex-direction:column; padding:20px; }

        /* PANEL VARIABLES FLOTTANT */
        .var-panel { position:fixed; background:rgba(17,15,25,0.97); color:var(--or); border-radius:8px; pointer-events:auto; border:1px solid var(--or); width:240px; box-shadow:0 8px 25px rgba(0,0,0,0.7); z-index:5000; display:flex; flex-direction:column; overflow:hidden; max-height:420px; }
        .var-panel-hdr { background:#000; padding:7px 12px; font-weight:bold; cursor:move; border-bottom:1px solid var(--or); display:flex; justify-content:space-between; align-items:center; user-select:none; font-size:0.85rem; }
        .var-panel-body { padding:10px; overflow-y:auto; flex:1; }
        .var-card { background:rgba(255,255,255,0.05); border-radius:5px; padding:8px; margin-bottom:8px; border:1px solid #334155; }
        .var-card:hover { border-color:var(--sarcelle); }
        .badge-type { font-size:0.65rem; padding:1px 5px; border-radius:99px; font-weight:bold; }
        .badge-reel { background:rgba(59,130,246,0.2); color:var(--bleu); border:1px solid var(--bleu); }
        .badge-entier { background:rgba(5,150,105,0.2); color:var(--vert); border:1px solid var(--vert); }
        [v-cloak] { display:none!important; }

        /* AXES HELPER style */
        .axes-legend { position:absolute; top:10px; left:10px; background:rgba(17,15,25,0.85); border-radius:6px; padding:6px 10px; font-size:0.75rem; z-index:100; display:flex; gap:10px; }
        .axes-legend span { font-weight:bold; }

/* ── Images (étapes de construction) ── */
.bm-scn-barre { position:fixed; bottom:10px; left:50%; transform:translateX(-50%); z-index:100000; display:flex; align-items:center; gap:8px; background:rgba(17,15,25,0.94); border:1px solid rgba(212,175,55,0.5); border-radius:12px; padding:4px 8px; box-shadow:0 4px 14px rgba(0,0,0,0.45); max-width:96vw; flex-wrap:wrap; justify-content:center; }
.bm-scn-nav { display:flex; align-items:center; gap:4px; background:rgba(212,175,55,0.1); border:1px solid rgba(212,175,55,0.4); border-radius:8px; padding:3px 6px; }
.bm-scn-nav button { background:none; border:1px solid #d4af37; color:#d4af37; border-radius:6px; padding:2px 8px; cursor:pointer; font-size:0.74rem; font-weight:bold; white-space:nowrap; }
.bm-scn-nav button:disabled { opacity:0.35; cursor:default; }
.bm-scn-nav button.actif { background:#d4af37; color:#110f19; }
.bm-scn-compteur { color:#f5deb3; font-size:0.78rem; font-weight:bold; white-space:nowrap; }
.bm-scn-titre { position:fixed; top:70px; left:50%; transform:translateX(-50%); max-width:80%; background:rgba(17,15,25,0.9); border:2px solid #d4af37; color:#f5deb3; border-radius:10px; padding:8px 18px; font-weight:bold; font-size:1.15rem; text-align:center; pointer-events:none; z-index:20; }
.bm-scn-panneau { border:1px solid rgba(212,175,55,0.45); border-radius:8px; padding:8px; margin-top:8px; margin-bottom:8px; background:rgba(212,175,55,0.05); }
.bm-scn-panneau .rang { display:flex; gap:4px; align-items:center; flex-wrap:wrap; margin-top:5px; }
.bm-scn-panneau button.petit { background:transparent; border:1px solid #d4af37; color:#d4af37; border-radius:5px; padding:2px 7px; cursor:pointer; font-size:0.74rem; font-weight:bold; }
.bm-scn-panneau button.petit.rouge { border-color:#ef4444; color:#ef4444; }
.bm-scn-panneau button.petit:disabled { opacity:0.35; cursor:default; }
