:root{--bg-primary: hsl(222, 28%, 10%);--bg-secondary: hsl(222, 25%, 14%);--bg-tertiary: hsl(222, 20%, 20%);--border-color: hsl(222, 15%, 26%);--text-primary: hsl(210, 30%, 98%);--text-secondary: hsl(215, 16%, 76%);--text-muted: hsl(215, 12%, 55%);--accent-color: hsl(245, 82%, 67%);--accent-hover: hsl(245, 85%, 72%);--accent-light: rgba(99, 102, 241, .15);--warning-color: hsl(38, 92%, 50%);--warning-light: rgba(245, 158, 11, .15);--success-color: hsl(142, 70%, 45%);--success-light: rgba(16, 185, 129, .15);--error-color: hsl(350, 75%, 55%);--error-light: rgba(239, 68, 68, .15);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .15);--shadow-md: 0 4px 12px rgba(0, 0, 0, .25);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .4);--border-radius-sm: 6px;--border-radius-md: 10px;--border-radius-lg: 16px;--border-radius-circle: 50%;--font-sans: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "Fira Code", Consolas, monospace;--viewport-bg: #0b0f19;--grid-dot-color: rgba(255, 255, 255, .15);--cad-stroke-color: var(--text-secondary);--log-bg: #090d16;--log-system: #60a5fa;--log-helper: #fbbf24;--log-measurement: #34d399;--log-action: #f472b6;--dmm-bg: hsl(0, 0%, 8%);--dmm-border: hsl(0, 0%, 20%);--dmm-text: #ffffff;--dmm-screen-bg: #064e3b;--dmm-screen-border: #047857;--dmm-screen-text: #34d399;--dmm-screen-shadow: 0 0 4px rgba(52, 211, 153, .6);--dmm-btn-bg: #1f2937;--dmm-btn-border: #374151;--dmm-btn-text: #ffffff;--dmm-btn-active-bg: #ef4444;--dmm-btn-active-border: #ef4444;--dmm-btn-active-text: #000000}html[data-theme=light]{--bg-primary: hsl(210, 25%, 98%);--bg-secondary: hsl(210, 20%, 94%);--bg-tertiary: hsl(0, 0%, 100%);--border-color: hsl(210, 16%, 86%);--text-primary: hsl(222, 25%, 15%);--text-secondary: hsl(215, 16%, 42%);--text-muted: hsl(215, 12%, 60%);--accent-color: hsl(245, 75%, 58%);--accent-hover: hsl(245, 75%, 48%);--accent-light: rgba(99, 102, 241, .1);--warning-color: hsl(38, 90%, 42%);--warning-light: rgba(245, 158, 11, .1);--success-color: hsl(142, 65%, 38%);--success-light: rgba(16, 185, 129, .1);--error-color: hsl(350, 70%, 48%);--error-light: rgba(239, 68, 68, .1);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .1);--viewport-bg: #ffffff;--grid-dot-color: rgba(0, 0, 0, .15);--cad-stroke-color: #000000;--log-bg: #ffffff;--log-system: #1d4ed8;--log-helper: #b45309;--log-measurement: #047857;--log-action: #db2777;--dmm-bg: #fbbf24;--dmm-border: #d97706;--dmm-text: #1e293b;--dmm-screen-bg: #e2e8f0;--dmm-screen-border: #cbd5e1;--dmm-screen-text: #0f172a;--dmm-screen-shadow: none;--dmm-btn-bg: #475569;--dmm-btn-border: #334155;--dmm-btn-text: #ffffff;--dmm-btn-active-bg: #b91c1c;--dmm-btn-active-border: #b91c1c;--dmm-btn-active-text: #ffffff}*{box-sizing:border-box;margin:0;padding:0;transition:background-color .25s ease,border-color .25s ease}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden;position:relative}.circuit-grid-bg{position:absolute;inset:0;background-size:40px 40px;background-image:linear-gradient(to right,rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(to bottom,rgba(99,102,241,.03) 1px,transparent 1px);z-index:-1;pointer-events:none}.hidden{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;font-family:var(--font-sans);font-size:14px;font-weight:600;border-radius:var(--border-radius-md);border:none;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);gap:8px;text-decoration:none}.btn-primary{background-color:var(--accent-color);color:#fff;box-shadow:0 4px 10px #6366f14d}.btn-primary:hover{background-color:var(--accent-hover);transform:translateY(-1px);box-shadow:0 6px 14px #6366f166}.btn-outline{background-color:transparent;color:var(--text-primary);border:1px solid var(--border-color)}.btn-outline:hover{background-color:var(--bg-tertiary);border-color:var(--text-muted)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed!important;background-color:var(--bg-tertiary)!important;color:var(--text-muted)!important;border-color:var(--border-color)!important;box-shadow:none!important;transform:none!important}.btn-success{background-color:var(--success-color);color:#fff;box-shadow:0 4px 10px #10b9814d}.btn-success:hover{background-color:#1fad53;transform:translateY(-1px)}.btn-block{display:flex;width:100%}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--border-radius-md);background-color:var(--bg-tertiary);border:1px solid var(--border-color);cursor:pointer;color:var(--text-primary)}.btn-icon:hover{background-color:var(--border-color)}.text-amber{color:var(--warning-color)!important}.text-red{color:var(--error-color)!important}.btn-xs{font-size:9px;padding:4px 8px;border-radius:4px}.app-header{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;background-color:rgba(var(--bg-secondary),.7);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:50}.header-brand{display:flex;align-items:center;gap:12px}.brand-logo{font-size:28px;background:linear-gradient(135deg,var(--warning-color),var(--accent-color));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:pulse 3s infinite alternate}.brand-text h1{font-size:20px;font-weight:700;letter-spacing:-.5px}.brand-text p{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-weight:500}.header-actions{display:flex;align-items:center;gap:16px}.user-profile{display:flex;align-items:center;gap:10px;background-color:var(--bg-tertiary);padding:6px 14px;border-radius:var(--border-radius-md);border:1px solid var(--border-color)}.user-badge{font-size:11px;font-weight:600;text-transform:uppercase;background-color:var(--accent-light);color:var(--accent-color);padding:2px 8px;border-radius:4px}.user-badge.teacher{background-color:var(--warning-light);color:var(--warning-color)}.user-name{font-size:14px;font-weight:500}.main-container{flex-grow:1;padding:32px;max-width:1400px;width:100%;margin:0 auto;display:flex;flex-direction:column}.view-panel{display:flex;flex-direction:column;width:100%;animation:fadeIn .3s cubic-bezier(.4,0,.2,1)}.dashboard-banner{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#1d2230,#1d1943);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:32px 40px;margin-bottom:40px;box-shadow:var(--shadow-md);position:relative;overflow:hidden}.dashboard-banner:after{content:"⚡";position:absolute;right:5%;top:10%;font-size:120px;opacity:.04;pointer-events:none}.banner-welcome h2{font-size:28px;font-weight:700;margin-bottom:8px}.banner-welcome p{font-size:15px;color:var(--text-secondary);max-width:600px;line-height:1.5}.banner-stats{display:flex;gap:24px}.stat-mini{background-color:#00000040;border:1px solid rgba(255,255,255,.05);padding:14px 22px;border-radius:var(--border-radius-md);text-align:center;min-width:110px}.stat-val{display:block;font-size:28px;font-weight:700;color:var(--warning-color);margin-bottom:2px}.stat-lbl{font-size:11px;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;font-weight:600}.section-header{margin-bottom:24px}.section-header h3{font-size:20px;font-weight:600;margin-bottom:4px}.section-header p{font-size:14px;color:var(--text-muted)}.teacher-dashboard-layout{display:grid;grid-template-columns:240px 1fr;gap:32px;min-height:calc(100vh - 150px)}.teacher-sidebar{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:20px;display:flex;flex-direction:column}.sidebar-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:1px;margin-bottom:16px;padding-left:8px}.sidebar-nav{display:flex;flex-direction:column;gap:8px}.nav-link{font-family:var(--font-sans);text-align:left;font-size:14px;font-weight:500;padding:12px 16px;border-radius:var(--border-radius-md);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.nav-link:hover,#open-config-btn:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.nav-link.active{background-color:var(--accent-light);color:var(--accent-color);font-weight:600}.teacher-content{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:32px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.teacher-tab-panel{display:flex;flex-direction:column;gap:24px;animation:fadeIn .2s ease}.tab-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--border-color)}.tab-header h2{font-size:22px;font-weight:700;margin-bottom:4px}.tab-header p{font-size:14px;color:var(--text-muted)}.workbench-header{display:flex;align-items:center;justify-content:space-between;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:18px 24px;margin-bottom:24px;box-shadow:var(--shadow-sm);flex-wrap:wrap;gap:16px}.workbench-title-area{display:flex;flex-direction:column;gap:4px}.active-badge{font-size:9px;font-weight:700;text-transform:uppercase;background-color:var(--warning-light);color:var(--warning-color);padding:1px 6px;border-radius:3px;width:max-content;letter-spacing:1px}.workbench-title-area h2{font-size:20px;font-weight:700}.workbench-title-area p{font-size:12px;color:var(--text-muted)}.workbench-actions{display:flex;gap:12px}.workbench-grid-layout{display:grid;grid-template-columns:320px 1fr;gap:24px;align-items:stretch}.workbench-toolbox{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:20px;display:flex;flex-direction:column;gap:24px;height:100%;min-height:0;box-sizing:border-box;overflow-y:auto}.workbench-toolbox::-webkit-scrollbar{width:6px}.workbench-toolbox::-webkit-scrollbar-track{background:transparent}.workbench-toolbox::-webkit-scrollbar-thumb{background-color:#ffffff1a;border-radius:3px;border:none}.workbench-toolbox::-webkit-scrollbar-thumb:hover{background-color:#fff3}.workbench-workspace{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:24px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-sm)}.workspace-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.workspace-header h3{font-size:16px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.workbench-sidebar{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:20px;display:flex;flex-direction:column;gap:24px}#editor-view,#workbench-view{width:100vw!important;position:relative;left:50%;right:50%;margin-left:-50vw!important;margin-right:-50vw!important;padding:0 40px;box-sizing:border-box}#workbench-view .workbench-grid-layout{max-width:none!important;width:100%!important}#workbench-view .workbench-log-full-width{width:100%!important;box-sizing:border-box}#editor-view .editor-layout-container{max-width:100%!important;width:100%!important}#student-view,#teacher-view{width:100vw!important;position:relative;left:50%;right:50%;margin-left:-50vw!important;margin-right:-50vw!important;padding:20px 40px;box-sizing:border-box}#teacher-view .teacher-dashboard-layout,#student-view .exercise-grid{width:100%;max-width:none!important}.workbench-container,.editor-canvas-wrapper{width:100%;max-width:100%;padding-left:1.5rem;padding-right:1.5rem;box-sizing:border-box}#circuit-board-area,.cad-canvas-container{width:100%;height:650px;overflow:hidden;position:relative;border-radius:var(--border-radius-md, 8px)}body>#student-view,body>#teacher-view,body>#workbench-view,body>#editor-view,body>#config-view,body>#theory-view{width:100%!important;max-width:100vw!important;box-sizing:border-box;padding-left:2vw;padding-right:2vw}#student-view .container,#teacher-view .container,#workbench-view .workbench-container,#editor-view .editor-container,#theory-view .container{width:100%!important;max-width:100%!important}.cad-canvas-wrapper{width:100%;height:100%;min-height:600px;overflow:hidden}.login-card-container{max-width:420px;width:100%;margin:60px auto;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:38px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden;backdrop-filter:blur(10px)}.login-card-container:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--accent-color),var(--warning-color))}.login-header{text-align:center;margin-bottom:28px}.lock-icon{font-size:32px;margin-bottom:12px;display:inline-block}.login-header h2{font-size:24px;font-weight:800;margin-top:8px;margin-bottom:6px;letter-spacing:2px;color:var(--text-primary)}.login-header p{text-transform:uppercase;font-size:10px;letter-spacing:1.5px;color:var(--text-muted);margin-top:6px;margin-bottom:0}.login-form .form-group{margin-bottom:20px}.form-group label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.input-wrapper{position:relative}.input-wrapper input,.form-control{width:100%;padding:12px 16px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;outline:none;transition:all .2s ease}.input-wrapper input{padding-left:44px}.input-wrapper input:focus,.form-control:focus{border-color:var(--accent-color);box-shadow:0 0 0 3px #6366f140;background-color:var(--bg-primary)}.input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--text-muted)}#login-error-msg{margin-top:16px;padding:10px;background-color:var(--error-light);border:1px solid rgba(239,68,68,.25);border-radius:var(--border-radius-md);color:var(--error-color);font-size:12.5px;text-align:center;font-weight:500}.credentials-tip{margin-top:24px;border:1px solid rgba(245,158,11,.15);background-color:var(--warning-light);border-radius:var(--border-radius-md);padding:12px;text-align:center}.credentials-tip p{font-size:11.5px;color:var(--text-secondary);line-height:1.6;margin:0}.credentials-tip code{font-family:var(--font-mono);background-color:#0003;padding:1px 4px;border-radius:3px;color:var(--warning-color)}.login-form button[type=submit]{margin-top:24px;font-weight:700;letter-spacing:1px;padding:12px}.exercise-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:24px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.exercise-card:hover{transform:translateY(-3px);border-color:var(--accent-color);box-shadow:var(--shadow-md)}.card-cat{font-size:11px;text-transform:uppercase;font-weight:600;color:var(--accent-color);letter-spacing:.5px;margin-bottom:10px}.exercise-card h4{font-size:17px;font-weight:600;margin-bottom:10px;line-height:1.3}.exercise-card p{font-size:13px;color:var(--text-secondary);line-height:1.5;margin-bottom:20px;flex-grow:1}.card-footer{display:flex;align-items:center;justify-content:space-between;padding-top:14px;border-top:1px solid rgba(255,255,255,.05)}.diff-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;text-transform:uppercase}.diff-badge.facile{background-color:var(--success-light);color:var(--success-color)}.diff-badge.moyen{background-color:var(--warning-light);color:var(--warning-color)}.diff-badge.difficile{background-color:var(--error-light);color:var(--error-color)}.status-badge{font-size:12px;font-weight:500;display:flex;align-items:center;gap:5px}.status-badge.completed{color:var(--success-color)}.status-badge.not-started{color:var(--text-muted)}.exercise-group-section{margin-bottom:45px;background-color:#ffffff03;padding:20px;border-radius:var(--border-radius-lg);border:1px solid rgba(255,255,255,.02)}.group-section-title{font-size:18px;font-weight:600;color:var(--warning-color);margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;gap:12px}.group-section-desc{font-size:13px;color:var(--text-muted);font-weight:400;margin-bottom:18px;line-height:1.4}.table-container{overflow-x:auto;border-radius:var(--border-radius-md);border:1px solid var(--border-color)}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{background-color:var(--bg-tertiary);padding:14px 18px;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-color);font-size:13px;text-transform:uppercase;letter-spacing:.5px}td{padding:16px 18px;border-bottom:1px solid var(--border-color);color:var(--text-primary)}tr:last-child td{border-bottom:none}tr:hover td{background-color:#ffffff04}.score-badge{font-weight:700;color:var(--success-color)}.attempts-badge{font-family:var(--font-mono);background-color:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px}.exercise-instructions-card{background-color:#00000026;border:1px solid var(--border-color);padding:14px;border-radius:var(--border-radius-md);font-size:13px;line-height:1.5}.exercise-instructions-card h4{font-weight:600;margin-bottom:6px;color:var(--warning-color)}.log-console{background-color:var(--log-bg);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:12px;font-family:var(--font-mono);font-size:11px;line-height:1.5;height:170px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.log-entry{color:var(--text-secondary)}.log-entry.system{color:var(--log-system)}.log-entry.helper{color:var(--log-helper)}.log-entry.measurement{color:var(--log-measurement)}.log-entry.action{color:var(--log-action)}.diagnostic-form{display:flex;flex-direction:column;gap:8px}.diagnostic-form label{font-size:11px;font-weight:500;color:var(--text-secondary)}.mt-2{margin-top:10px}.custom-context-menu{position:absolute;background-color:var(--bg-secondary);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);border-radius:var(--border-radius-md);width:220px;z-index:1000;overflow:hidden;animation:scaleIn .15s ease-out}.context-header{padding:10px 14px;background-color:var(--bg-tertiary);font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border-color);letter-spacing:.5px}.custom-context-menu ul{list-style:none}.custom-context-menu li{padding:10px 14px;font-size:13px;cursor:pointer;color:var(--text-secondary);transition:all .15s ease}.custom-context-menu li:hover{background-color:var(--accent-light);color:var(--accent-color);padding-left:18px}.modal{position:fixed;inset:0;background-color:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .25s ease}.modal-content{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);max-width:500px;width:90%;padding:28px;box-shadow:var(--shadow-lg);animation:slideDown .3s cubic-bezier(.18,.89,.32,1.15)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h3{font-size:18px;font-weight:600}.modal-close{background:transparent;border:none;font-size:24px;cursor:pointer;color:var(--text-muted)}.modal-close:hover{color:var(--text-primary)}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.premium-modal-card{position:relative;overflow:hidden;max-width:480px!important;border-radius:var(--border-radius-lg)!important;padding:30px!important}.premium-modal-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--accent-color),var(--warning-color))}.modal-header-premium{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.modal-header-branding{display:flex;align-items:center;gap:14px}.modal-header-icon-circle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--border-radius-circle);background-color:var(--accent-light);color:var(--accent-color);font-size:20px;border:1px solid rgba(99,102,241,.2)}.modal-header-premium h3{font-size:18px;font-weight:700;letter-spacing:-.5px;color:var(--text-primary)}.modal-header-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}.role-segmented-control{display:flex;gap:12px;margin-top:8px}.role-option{flex:1;cursor:pointer}.role-option input[type=radio]{display:none}.role-card{display:flex;align-items:center;justify-content:center;gap:8px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:12px;color:var(--text-secondary);font-weight:600;font-size:13.5px;transition:all .2s cubic-bezier(.4,0,.2,1);text-align:center}.role-option input[type=radio]:checked+.role-card{border-color:var(--accent-color);background-color:var(--accent-light);color:var(--accent-color);box-shadow:0 0 0 3px #6366f126}.role-card:hover{border-color:var(--text-muted);color:var(--text-primary)}.role-icon{font-size:18px}.role-title{margin-top:1px}.modal-content .form-group{margin-bottom:25px!important}.modal-content .form-group label{margin-bottom:4px!important;font-size:12.5px!important;font-weight:500;color:var(--text-secondary)}.modal-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 600px){.modal-form-grid{grid-template-columns:1fr;gap:15px}}.impersonation-banner{display:flex;align-items:center;justify-content:space-between;padding:12px 32px;background-color:var(--warning-light);border-bottom:2px solid var(--warning-color);color:var(--warning-color);font-size:13px;font-weight:600;z-index:1001;position:relative}.impersonation-banner-content{display:flex;align-items:center;gap:10px}.impersonation-banner-icon{font-size:18px;animation:pulse 1.5s infinite alternate}.impersonation-banner strong{color:var(--text-primary);font-weight:700}.toast-container{position:fixed;top:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:10px}.toast{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-left:4px solid var(--accent-color);border-radius:var(--border-radius-md);padding:12px 20px;color:var(--text-primary);box-shadow:var(--shadow-md);font-size:13px;display:flex;align-items:center;gap:10px;min-width:250px;animation:slideInLeft .3s cubic-bezier(.18,.89,.32,1.25)}.toast.success{border-left-color:var(--success-color)}.toast.error{border-left-color:var(--error-color)}.toast.warning{border-left-color:var(--warning-color)}.builder-section{background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:18px;margin-top:14px}.question-builder-card{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:16px;display:flex;flex-direction:column;gap:12px;position:relative;margin-top:12px}.question-builder-card .remove-q-btn{position:absolute;top:12px;right:12px;cursor:pointer;background:transparent;border:none;color:var(--error-color);font-size:16px;font-weight:700}.student-question-card{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:20px 24px;display:flex;flex-direction:column;gap:14px}.question-card-header{font-size:13px;font-weight:700;color:var(--warning-color);text-transform:uppercase;letter-spacing:.5px}.question-card-text{font-size:15px;font-weight:500;line-height:1.5;color:var(--text-primary)}.qcm-options-list{display:flex;flex-direction:column;gap:10px}.qcm-option-item{display:flex;align-items:center;gap:12px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:12px 16px;cursor:pointer;transition:all .2s ease}.qcm-option-item:hover{border-color:var(--text-muted)}.qcm-option-item input[type=radio]{accent-color:var(--accent-color);width:16px;height:16px}.association-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:10px}.association-left,.association-right{display:flex;flex-direction:column;gap:12px}.drag-item-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:12px;cursor:grab;user-select:none;font-size:13.5px;font-weight:500;transition:all .15s ease;display:flex;align-items:center;gap:8px}.drag-item-card:hover{border-color:var(--accent-color);background-color:var(--accent-light)}.drag-item-card:active{cursor:grabbing}.drop-item-zone{background-color:var(--bg-tertiary);border:1px dashed var(--border-color);border-radius:var(--border-radius-md);padding:12px;min-height:48px;font-size:13.5px;display:flex;align-items:center;justify-content:space-between;gap:10px;transition:all .2s ease}.drop-item-zone.drag-over{border-color:var(--accent-color);background-color:var(--accent-light)}.dropped-label{background-color:var(--accent-color);color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600}.inline-select{display:inline-block;font-family:var(--font-sans);font-size:14px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--warning-color);padding:2px 6px;border-radius:4px;outline:none;cursor:pointer;margin:0 4px;font-weight:600}.inline-select:hover{border-color:var(--warning-color)}.unified-modules-container{display:flex;flex-direction:column;gap:32px;margin-top:24px}.teacher-module-card{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:24px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:16px}.teacher-module-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;padding-bottom:14px;border-bottom:1px dashed var(--border-color)}.module-header-info{display:flex;flex-direction:column;gap:4px;max-width:70%}.module-header-info h3{font-size:18px;font-weight:600;color:var(--warning-color);display:flex;align-items:center;gap:8px}.module-header-info p{font-size:13px;color:var(--text-secondary);line-height:1.4}.module-header-actions{display:flex;gap:10px}.select-transfer{font-family:var(--font-sans);font-size:12px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:4px 8px;border-radius:4px;outline:none;cursor:pointer;max-width:160px;transition:all .15s ease}.select-transfer:hover{border-color:var(--accent-color)}.select-transfer:focus{border-color:var(--accent-color)}.module-exercises-table,#progress-table,#users-table{font-size:12.5px!important;width:100%}.module-exercises-table th,#progress-table th,#users-table th{padding:10px 12px!important;font-size:11px!important;font-weight:600}.module-exercises-table td,#progress-table td,#users-table td{padding:8px 12px!important}.module-exercises-table select.select-transfer{font-size:11px!important;padding:3px 6px!important;max-width:140px}.module-exercises-table .diff-badge,#progress-table .diff-badge,#users-table .diff-badge{font-size:9px!important;padding:1px 6px!important}.module-exercises-table .btn-xs,#progress-table .btn-xs,#users-table .btn-xs{font-size:11px!important;padding:4px 8px!important}#progress-table .status-badge{font-size:11px!important;padding:2px 6px!important}#progress-table .attempts-badge{font-size:11px!important;padding:1px 4px!important}#progress-table .score-badge{font-size:12px!important}select.form-control option{background-color:var(--bg-secondary);color:var(--text-primary);font-size:13px;padding:6px}body.loading-cursor,body.loading-cursor *{cursor:wait!important}.server-loading-overlay{position:fixed;inset:0;background-color:#0f172ad9;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:100000;opacity:0;pointer-events:none;transition:opacity .3s ease}.server-loading-overlay.active{opacity:1;pointer-events:auto}.server-loading-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:24px 40px 40px;width:90%;max-width:440px;text-align:center;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #00000080;position:relative;overflow:hidden;animation:slideDown .3s cubic-bezier(.18,.89,.32,1.15)}.server-loading-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--accent-color),var(--warning-color))}.gear-animation-container{display:flex;justify-content:center;align-items:center;height:90px;position:relative;margin-bottom:24px}.gear{position:absolute;transform-origin:center}.gear-large{width:80px;height:80px;fill:var(--accent-color);animation:rotateClockwise 10s linear infinite;left:calc(50% - 52px);top:calc(50% - 40px)}.gear-small{width:50px;height:50px;fill:var(--warning-color);animation:rotateCounterClockwise 6.25s linear infinite;left:calc(50% + 12px);top:calc(50% - 15px)}@keyframes rotateClockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotateCounterClockwise{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.server-loading-title{font-size:19px;font-weight:700;color:var(--text-primary);margin-bottom:12px}.server-loading-desc{font-size:13.5px;color:var(--text-secondary);line-height:1.6;margin-bottom:20px}.server-loading-timer{font-family:var(--font-mono);font-size:12px;color:var(--warning-color);background-color:#f59e0b1a;padding:6px 12px;border-radius:var(--border-radius-md);border:1px solid rgba(245,158,11,.2);display:inline-block}.cancel-loading-btn{display:inline-block;margin-top:16px;background-color:transparent;color:var(--error-color);border:1px solid var(--error-color);border-radius:var(--border-radius-md);padding:8px 16px;font-family:var(--font-sans);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease;outline:none}.cancel-loading-btn:hover{background-color:#ef44441a;box-shadow:0 0 8px #ef444433}.cancel-loading-btn.hidden{display:none!important}.db-status-badge{display:flex;align-items:center;gap:8px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:6px 12px;font-size:12.5px;font-weight:500;color:var(--text-secondary);height:36px;box-sizing:border-box;user-select:none;transition:all .3s ease}.db-status-dot{width:8px;height:8px;border-radius:50%;position:relative}.db-status-badge.connected{border-color:#10b9814d;color:var(--text-primary)}.db-status-badge.connected .db-status-dot{background-color:var(--success-color);box-shadow:0 0 8px var(--success-color);animation:pulse-green 2s infinite}.db-status-badge.offline{border-color:#ef44444d;background-color:#ef44440d}.db-status-badge.offline .db-status-dot{background-color:var(--error-color);box-shadow:0 0 8px var(--error-color)}@keyframes pulse-green{0%{box-shadow:0 0 #10b981b3}70%{box-shadow:0 0 0 6px #10b98100}to{box-shadow:0 0 #10b98100}}.cad-editor-grid{display:grid;grid-template-columns:260px 1fr 280px;gap:20px;min-height:600px;height:680px;background-color:var(--bg-primary);border-radius:var(--border-radius-lg);padding:10px}.cad-sidebar{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}.cad-sidebar-title{font-size:13px;font-weight:700;color:var(--warning-color);letter-spacing:.5px;text-transform:uppercase;margin-bottom:4px}.cad-category-accordion{display:flex;flex-direction:column;gap:8px}.cad-category-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:10px;border-bottom:1px solid var(--border-color);padding-bottom:4px}.cad-palette-item{display:flex;align-items:center;gap:12px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);padding:8px 12px;cursor:grab;user-select:none;transition:all .2s ease;font-size:12.5px;color:var(--text-secondary)}.cad-palette-item:hover{border-color:var(--accent-color);color:var(--text-primary);background-color:var(--accent-light);transform:translateY(-1px)}.cad-palette-item-icon{font-size:18px;width:24px;text-align:center}.cad-canvas-container{position:relative;background-color:var(--viewport-bg);border:2px solid var(--border-color);border-radius:var(--border-radius-md);overflow:hidden;display:flex;flex-direction:column}.cad-canvas-toolbar{display:flex;justify-content:space-between;align-items:center;background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);padding:8px 16px;z-index:10}.cad-canvas-toolbar-btn{display:flex;align-items:center;gap:6px;font-size:11px}.cad-canvas-viewport{flex-grow:1;width:100%;height:100%;position:relative;cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMnYyME0yIDEyaDIwIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTEyIDJ2MjBNMiAxMmgyMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==) 12 12,crosshair;overflow:hidden;touch-action:none}.cad-svg-canvas{width:100%;height:auto;min-height:100%;display:block;overflow:visible!important;touch-action:none}.cad-properties-panel{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}.cad-properties-title{font-size:13px;font-weight:700;color:var(--warning-color);letter-spacing:.5px;text-transform:uppercase;border-bottom:1px solid var(--border-color);padding-bottom:8px}.cad-comp-group{cursor:pointer;pointer-events:bounding-box;color:var(--cad-stroke-color)}.cad-comp-selection-box{fill:none;stroke:transparent;stroke-width:2;stroke-dasharray:4;transition:stroke .2s ease}.cad-comp-group:hover .cad-comp-selection-box{stroke:#6366f166}.cad-comp-group.selected .cad-comp-selection-box{stroke:transparent!important;stroke-width:2;filter:none!important}.cad-selection-adornments{display:none;pointer-events:none!important}.cad-resize-handle{pointer-events:auto!important}#cad-canvas .cad-comp-group:hover .cad-selection-adornments{display:block}#cad-canvas .cad-comp-group:hover .cad-selection-outline{stroke:#6366f166}#cad-canvas .cad-comp-group.selected .cad-selection-adornments{display:block}#cad-canvas .cad-comp-group.selected .cad-selection-outline{stroke:var(--accent-color);filter:drop-shadow(0 0 2px var(--accent-color))}#cad-canvas .cad-comp-group:hover .cad-comp-selection-box{stroke:transparent!important}.cad-comp-label{font-size:11px;font-weight:700;fill:var(--accent-color);font-family:var(--font-sans)}.cad-comp-value{font-size:10px;fill:var(--text-muted);font-family:var(--font-sans)}.cad-comp-symbol{fill:none;stroke:var(--cad-stroke-color);stroke-width:2;transition:stroke .25s ease,fill .25s ease}.cad-comp-group.active .cad-comp-symbol{stroke:var(--success-color);filter:drop-shadow(0 0 3px rgba(52,211,153,.5))}.cad-comp-group.active[data-type=thermal_overload] .cad-comp-symbol,.cad-comp-group.active[data-type=thermal_overload_3p] .cad-comp-symbol{stroke:var(--error-color);filter:drop-shadow(0 0 3px rgba(239,68,68,.5))}.cad-comp-group.active[data-type=thermal_overload] .cad-comp-text,.cad-comp-group.active[data-type=thermal_overload] .cad-comp-label,.cad-comp-group.active[data-type=thermal_overload_3p] .cad-comp-text,.cad-comp-group.active[data-type=thermal_overload_3p] .cad-comp-label{fill:var(--error-color)}.cad-comp-group.faulty .cad-comp-symbol{stroke:var(--error-color)!important}.cad-comp-symbol-filled{fill:var(--bg-tertiary);stroke:var(--cad-stroke-color);stroke-width:2}.cad-comp-group.active .cad-comp-symbol-filled{fill:var(--success-light);stroke:var(--success-color)}.cad-comp-text{font-family:var(--font-sans);font-size:11px;font-weight:600;fill:var(--cad-stroke-color);text-anchor:middle}.cad-comp-group.active .cad-comp-text,.cad-comp-group.active .pilot-light-bulb{fill:var(--success-color)}.power-supply-led{fill:#6b7280;transition:fill .25s ease}.cad-comp-group.active .power-supply-led{fill:#22c55e}.cad-comp-group.dragging{opacity:.5;filter:drop-shadow(0 0 8px rgba(99,102,241,.4));cursor:grabbing!important}.cad-wire-path{fill:none;stroke:var(--cad-stroke-color);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;transition:stroke .2s ease,stroke-width .2s ease}.cad-wire-path:hover{stroke:var(--warning-color);stroke-width:4}.cad-wire-path.selected{stroke:var(--error-color);stroke-width:4;stroke-dasharray:4 2}.cad-wire-path.live-high{stroke:#f59e0b;stroke-width:3;filter:drop-shadow(0 0 3px rgba(245,158,11,.6))}.cad-wire-path.live-neutral{stroke:#3b82f6;stroke-width:2.5}.cad-wire-path.faulty-open{stroke:#f59e0b!important;stroke-dasharray:4 4}.cad-wire-path.faulty-grounded{stroke:#10b981!important;stroke-width:3px!important}.cad-terminal-point{fill:var(--bg-secondary);stroke:var(--cad-stroke-color);stroke-width:1.5;transition:all .2s ease;cursor:pointer;r:5px;touch-action:none}.cad-terminal-point:hover{fill:var(--accent-color);stroke:#fff;r:6px}.cad-terminal-point.connected{fill:var(--success-color);stroke:var(--cad-stroke-color)}.cad-terminal-point.unscrewed-terminal{fill:var(--bg-secondary);stroke:var(--cad-stroke-color);r:10px}.cad-terminal-point.connecting-source{fill:var(--warning-color);stroke:#fff;r:7;animation:pulse 1s infinite alternate}.cad-terminal-point.loose-terminal{fill:#f59e0b!important;stroke:#f59e0b!important;stroke-width:2px!important;stroke-dasharray:2 2;r:6!important;animation:pulse-loose-terminal 1.2s ease-in-out infinite}@keyframes pulse-loose-terminal{0%,to{opacity:1}50%{opacity:.4}}.cad-terminal-visible-marker{fill:var(--bg-secondary);stroke:var(--border-color);stroke-width:1.5;transition:all .2s ease}.cad-terminal-point:hover+.cad-terminal-visible-marker{fill:var(--accent-color)!important;stroke:#fff!important;r:6!important}.cad-terminal-visible-marker.connected{fill:var(--success-color)!important;stroke:var(--border-color)!important}.cad-terminal-visible-marker.connecting-source{fill:var(--warning-color)!important;stroke:#fff!important;r:7!important;animation:pulse 1s infinite alternate}.cad-terminal-visible-marker.probe-red-attached{fill:#ef4444!important;stroke:#fff!important;r:8!important}.cad-terminal-visible-marker.probe-black-attached{fill:#1f2937!important;stroke:#fff!important;r:8!important}.cad-terminal-visible-marker.loose-terminal{fill:#f59e0b!important;stroke:#f59e0b!important}.cad-terminal-visible-marker.unscrewed-terminal{stroke:var(--warning-color)!important;stroke-width:1.8px!important;fill:#0b0f19!important;r:5px!important}body.dragging-active .cad-comp-group{pointer-events:visiblePainted!important}body.dragging-active .cad-comp-selection-box,body.dragging-active .cad-comp-symbol,body.dragging-active .cad-comp-symbol-filled,body.dragging-active .cad-comp-text,body.dragging-active .cad-comp-label,body.dragging-active .cad-comp-value,body.dragging-active .cad-wire-path,body.dragging-active .attached-probe-stylus{pointer-events:none!important}body.dragging-active .cad-terminal-point{pointer-events:all!important}#circuit-board-area.screwdriver-active-cursor .cad-comp-selection-box,body.screwdriver-active-cursor .cad-comp-selection-box,body.screwdriver-active-cursor .cad-comp-symbol,body.screwdriver-active-cursor .cad-comp-symbol-filled,body.screwdriver-active-cursor .cad-comp-text,body.screwdriver-active-cursor .cad-comp-label,body.screwdriver-active-cursor .cad-comp-value,body.screwdriver-active-cursor .cad-wire-path,body.screwdriver-active-cursor .attached-probe-stylus{pointer-events:none!important}body.screwdriver-active-cursor .cad-terminal-point{pointer-events:all!important}.cad-selection-box{fill:#6366f114;stroke:var(--accent-color);stroke-width:1.5px;stroke-dasharray:4 4;pointer-events:none}.cad-grid-pattern{fill:url(#cad-grid-mesh)}.cad-grid-pattern{width:20px;height:20px}[style*=col-resize],body.dragging-wire-v,body.dragging-wire-v *{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNIDMgMTIgTCA4IDcgTCA4IDEwIEwgMTYgMTAgTCAxNiA3IEwgMjEgMTIgTCAxNiAxNyBMIDE2IDE0IEwgOCAxNCBMIDggMTcgWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNIDQuNSAxMiBMIDggOC41IEwgOCAxMSBMIDE2IDExIEwgMTYgOC41IEwgMTkuNSAxMiBMIDE2IDE1LjUgTCAxNiAxMyBMIDggMTMgTCA4IDE1LjUgWiIgZmlsbD0iIzAwMDAwMCIvPjwvc3ZnPg==) 12 12,col-resize!important}[style*=row-resize],body.dragging-wire-h,body.dragging-wire-h *{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNIDEyIDMgTCA3IDggTCAxMCA4IEwgMTAgMTYgTCA3IDE2IEwgMTIgMjEgTCAxNyAxNiBMIDE0IDE2IEwgMTQgOCBMIDE3IDggWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNIDEyIDQuNSBMIDguNSA4IEwgMTEgOCBMIDExIDE2IEwgOC41IDE2IEwgMTIgMTkuNSBMIDE1LjUgMTYgTCAxMyAxNiBMIDEzIDggTCAxNS41IDggWiIgZmlsbD0iIzAwMDAwMCIvPjwvc3ZnPg==) 12 12,row-resize!important}.toolbox-header,.sidebar-section-title{font-size:13px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.toolbox-section{display:flex;flex-direction:column;gap:10px}.toolbox-section-title{font-size:13px;font-weight:500;color:var(--text-secondary)}.toolbox-helper{font-size:11px;color:var(--text-muted);line-height:1.4}.toolbox-items{display:flex;flex-direction:column;gap:12px}.toolbox-item{display:flex;align-items:center;gap:12px;background-color:var(--bg-tertiary);border:1px dashed var(--border-color);padding:12px;border-radius:var(--border-radius-md);user-select:none}.toolbox-item.drag-tool{cursor:grab;border:1px solid var(--accent-light);background-color:#6366f10d;box-shadow:var(--shadow-sm);transition:all .2s ease;touch-action:none}.toolbox-item.drag-tool:active{cursor:grabbing}.toolbox-item.drag-tool:hover{border-color:var(--accent-color);background-color:var(--accent-light)}.toolbox-item.active-tool{border:2px solid var(--warning-color)!important;background-color:#f59e0b1a!important;box-shadow:0 0 10px #f59e0b4d!important}.tool-icon{font-size:24px}.tool-details h4{font-size:13px;font-weight:600;color:var(--text-primary)}.tool-details p{font-size:10px;color:var(--text-muted);margin-top:1px}.test-point-node{cursor:pointer}.tp-circle{fill:var(--bg-secondary);stroke:var(--border-color);stroke-width:2px;transition:all .2s ease}.tp-lbl{font-size:9px;font-family:var(--font-mono);font-weight:700;fill:var(--warning-color)}.test-point-node:hover .tp-circle{fill:var(--warning-color);stroke:#fff;r:10}.test-point-node.active .tp-circle{fill:var(--error-color);stroke:#fff;r:10;animation:probePulse 1s infinite}.circuit-board-wrapper{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:16px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:480px}.circuit-board-wrapper.drag-hover{border-color:var(--accent-color);background-color:#6366f105}.virtual-multimeter-overlay{position:absolute;bottom:16px;right:16px;width:220px;background-color:var(--dmm-bg);border:2px solid var(--dmm-border);border-radius:var(--border-radius-md);padding:12px;color:var(--dmm-text);box-shadow:var(--shadow-lg);font-family:var(--font-mono);z-index:20;animation:slideUp .3s cubic-bezier(.18,.89,.32,1.28);touch-action:none}#multimeter-readout-panel{position:fixed;z-index:9999}.multimeter-title{font-size:9px;font-weight:700;color:#ef4444;margin-bottom:6px;letter-spacing:.5px}.multimeter-screen{background-color:var(--dmm-screen-bg);border:1px solid var(--dmm-screen-border);padding:8px 12px;border-radius:4px;text-align:right;margin-bottom:8px;box-shadow:inset 0 2px 4px #0006}.dmm-value{font-size:24px;font-weight:700;color:var(--dmm-screen-text);text-shadow:var(--dmm-screen-shadow);font-variant-numeric:tabular-nums;font-family:Roboto Mono,monospace;display:inline-block;min-width:65px;text-align:right}.dmm-unit{font-size:12px;color:var(--dmm-screen-text);margin-left:4px}.multimeter-mode-btn{background-color:var(--dmm-btn-bg)!important;border:1px solid var(--dmm-btn-border)!important;color:var(--dmm-btn-text)!important}.multimeter-mode-btn.active{background-color:var(--dmm-btn-active-bg)!important;border-color:var(--dmm-btn-active-border)!important;color:var(--dmm-btn-active-text)!important}.multimeter-probes-info,.clampmeter-probes-info{font-size:9px;color:var(--text-secondary);line-height:1.4;margin-bottom:8px;border-top:1px solid var(--border-color);padding-top:8px;margin-top:8px}.multimeter-probes-info strong,.clampmeter-probes-info strong{color:var(--text-primary)}.virtual-scope-overlay{position:absolute;bottom:16px;left:16px;width:190px;background-color:#0e141b;border:2px solid hsl(210,20%,25%);border-radius:var(--border-radius-md);padding:10px;color:#fff;box-shadow:var(--shadow-lg);font-family:var(--font-mono);z-index:20}.scope-title{font-size:8px;font-weight:700;color:#3b82f6;margin-bottom:6px}.scope-screen{background-color:#0c1e1a;border:1px solid #14532d;height:70px;border-radius:4px;margin-bottom:6px;overflow:hidden;position:relative}.scope-info{font-size:8px;color:#9ca3af}.drag-probe{background-color:var(--accent-light)!important;border:1px solid var(--border-color)!important;touch-action:none}.drag-probe:hover{transform:scale(1.05);background-color:#ffffff0d!important;border-color:var(--accent-color)!important}.drag-probe:active{cursor:grabbing!important;transform:scale(.95)}.cad-terminal-point.probe-red-attached{fill:#ef4444!important;stroke:#fff!important;r:8!important}.cad-terminal-point.probe-black-attached{fill:#1f2937!important;stroke:#fff!important;r:8!important}body.dragging-probe-red,body.dragging-probe-red *{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZyBzdHlsZT0iZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMS41cHggM3B4IHJnYmEoMCwwLDAsMC4zNSkpOyI+PGxpbmUgeDE9IjMzLjExIiB5MT0iMzMuMTEiIHgyPSI0MCIgeTI9IjQwIiBzdHJva2U9IiNlNWU3ZWIiIHN0cm9rZS13aWR0aD0iMS42OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNDAiIHI9IjEuMDQiIGZpbGw9IiNlNWU3ZWIiIC8+PHBvbHlnb24gcG9pbnRzPSIzMC41MSwzNS43MSAzNS43MSwzMC41MSAzMi4yMCwzMi4yMCIgZmlsbD0iIzk5MWIxYiIgLz48cGF0aCBkPSJNIDMxLjI5IDMzLjUwIEwgMTQuMDAgMTYuMjEgQyAxMi43MCAxNC45MSwgMTQuOTEgMTIuNzAsIDE2LjIxIDE0LjAwIEwgMzMuNTAgMzEuMjkgWiIgZmlsbD0iI2VmNDQ0NCIgc3Ryb2tlPSIjOTkxYjFiIiBzdHJva2Utd2lkdGg9IjAuNjUiIC8+PGxpbmUgeDE9IjI5LjYwIiB5MT0iMzEuMjkiIHgyPSIzMS4yOSIgeTI9IjI5LjYwIiBzdHJva2U9IiM5OTFiMWIiIHN0cm9rZS13aWR0aD0iMS4wNCIgLz48bGluZSB4MT0iMjcuMDAiIHkxPSIyOC42OSIgeDI9IjI4LjY5IiB5Mj0iMjcuMDAiIHN0cm9rZT0iIzk5MWIxYiIgc3Ryb2tlLXdpZHRoPSIxLjA0IiAvPjxsaW5lIHgxPSIyNC40MCIgeTE9IjI2LjA5IiB4Mj0iMjYuMDkiIHkyPSIyNC40MCIgc3Ryb2tlPSIjOTkxYjFiIiBzdHJva2Utd2lkdGg9IjEuMDQiIC8+PGxpbmUgeDE9IjMyLjIwIiB5MT0iMzIuNTkiIHgyPSIxNS42OSIgeTI9IjE2LjIxIiBzdHJva2U9IiNmY2E1YTUiIHN0cm9rZS13aWR0aD0iMC42NSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBvcGFjaXR5PSIwLjYiIC8+PHBhdGggZD0iTSAxNSAxNSBDIDggOCwgMTAgMTgsIDIgMTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VmNDQ0NCIgc3Ryb2tlLXdpZHRoPSIxLjY5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIG9wYWNpdHk9IjAuODUiIC8+PC9nPjwvc3ZnPg==) 40 40,pointer!important}body.dragging-probe-black,body.dragging-probe-black *{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZyBzdHlsZT0iZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMS41cHggM3B4IHJnYmEoMCwwLDAsMC4zNSkpOyI+PGxpbmUgeDE9IjMzLjExIiB5MT0iMzMuMTEiIHgyPSI0MCIgeTI9IjQwIiBzdHJva2U9IiNlNWU3ZWIiIHN0cm9rZS13aWR0aD0iMS42OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNDAiIHI9IjEuMDQiIGZpbGw9IiNlNWU3ZWIiIC8+PHBvbHlnb24gcG9pbnRzPSIzMC41MSwzNS43MSAzNS43MSwzMC41MSAzMi4yMCwzMi4yMCIgZmlsbD0iIzAwMDAwMCIgLz48cGF0aCBkPSJNIDMxLjI5IDMzLjUwIEwgMTQuMDAgMTYuMjEgQyAxMi43MCAxNC45MSwgMTQuOTEgMTIuNzAsIDE2LjIxIDE0LjAwIEwgMzMuNTAgMzEuMjkgWiIgZmlsbD0iIzFmMjkzNyIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNjUiIC8+PGxpbmUgeDE9IjI5LjYwIiB5MT0iMzEuMjkiIHgyPSIzMS4yOSIgeTI9IjI5LjYwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMS4wNCIgLz48bGluZSB4MT0iMjcuMDAiIHkxPSIyOC42OSIgeDI9IjI4LjY5IiB5Mj0iMjcuMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxLjA0IiAvPjxsaW5lIHgxPSIyNC40MCIgeTE9IjI2LjA5IiB4Mj0iMjYuMDkiIHkyPSIyNC40MCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjEuMDQiIC8+PGxpbmUgeDE9IjMyLjIwIiB5MT0iMzIuNTkiIHgyPSIxNS42OSIgeTI9IjE2LjIxIiBzdHJva2U9IiM2YjcyODAiIHN0cm9rZS13aWR0aD0iMC42NSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBvcGFjaXR5PSIwLjYiIC8+PHBhdGggZD0iTSAxNSAxNSBDIDggOCwgMTAgMTgsIDIgMTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFmMjkzNyIgc3Ryb2tlLXdpZHRoPSIxLjY5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIG9wYWNpdHk9IjAuODUiIC8+PC9nPjwvc3ZnPg==) 40 40,pointer!important}body.dragging-probe-forbidden,body.dragging-probe-forbidden *{cursor:not-allowed!important}body.screwdriver-active-cursor,body.screwdriver-active-cursor *{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g transform="rotate(45 0 0)"><line x1="0" y1="0" x2="5" y2="0" stroke="%23cbd5e1" stroke-width="1.5" stroke-linecap="butt"/><line x1="5" y1="0" x2="17" y2="0" stroke="%2394a3b8" stroke-width="2" stroke-linecap="butt"/><rect x="16" y="-1.5" width="2" height="3" fill="%23cbd5e1"/><rect x="18" y="-2.5" width="20" height="5" rx="1.5" fill="%23f59e0b"/><line x1="22" y1="-2" x2="22" y2="2" stroke="%23d97706" stroke-width="1"/><line x1="26" y1="-2" x2="26" y2="2" stroke="%23d97706" stroke-width="1"/><line x1="30" y1="-2" x2="30" y2="2" stroke="%23d97706" stroke-width="1"/><rect x="35" y="-2.5" width="3" height="5" rx="1" fill="%23b45309"/></g></svg>') 0 0,crosshair!important}body.screwdriver-active-cursor .cad-terminal-point:hover+.cad-terminal-visible-marker{r:7px!important;stroke:#f59e0b!important;stroke-width:1.5px!important;fill:#f59e0b26!important}.virtual-clampmeter-overlay{position:absolute;bottom:16px;right:16px;width:220px;background-color:var(--dmm-bg);border:2px solid var(--dmm-border);border-radius:var(--border-radius-md);padding:12px;color:var(--dmm-text);box-shadow:var(--shadow-lg);font-family:var(--font-mono);z-index:20;animation:slideUp .3s cubic-bezier(.18,.89,.32,1.28);touch-action:none}#clampmeter-readout-panel{position:fixed;z-index:9999}.clampmeter-title{font-size:9px;font-weight:700;color:#ef4444;margin-bottom:6px;letter-spacing:.5px}.clampmeter-screen{background-color:var(--dmm-screen-bg);border:1px solid var(--dmm-screen-border);padding:8px 12px;border-radius:4px;text-align:right;margin-bottom:8px;box-shadow:inset 0 2px 4px #0006}.cad-wire-path.clamp-hover{stroke:var(--warning-color)!important;stroke-width:5px!important;filter:drop-shadow(0 0 5px var(--warning-color))!important;cursor:pointer}body.dragging-clamp,body.dragging-clamp *{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48ZyBzdHlsZT0iZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMS41cHggM3B4IHJnYmEoMCwwLDAsMC4zNSkpOyIgdHJhbnNmb3JtPSJzY2FsZSgwLjYyNSkgcm90YXRlKDQ1IDMyIDIyKSI+PHBhdGggZD0iTSAyMyAzOCBMIDE3IDQ1IEwgMTcgNTAgTCAyMyA1NCBaIiBmaWxsPSIjZGMyNjI2IiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMC44Ii8+PHBhdGggZD0iTSAzMiA4IEMgMjQgOCAyMCAxNCAyMCAyMiBDIDIwIDMwIDI0IDM2IDMyIDM2IEMgNDAgMzYgNDQgMzAgNDQgMjIgQyA0NCAxNCA0MCA4IDMyIDggWiIgc3Ryb2tlPSIjZGMyNjI2IiBzdHJva2Utd2lkdGg9IjUiIGZpbGw9Im5vbmUiLz48cmVjdCB4PSIzMC41IiB5PSI2IiB3aWR0aD0iMyIgaGVpZ2h0PSI0IiBmaWxsPSIjYjkxYzFjIiByeD0iMC41Ii8+PHBhdGggZD0iTSAyNyAyOCBMIDM3IDI4IEwgNDEgMzggTCA0MSA2MiBDIDQxIDYzLjUgNDAgNjQgMzkgNjQgTCAyNSA2NCBDIDI0IDY0IDIzIDYzLjUgMjMgNjIgTCAyMyAzOCBaIiBmaWxsPSIjZWFiMzA4IiBzdHJva2U9IiNjYThhMDQiIHN0cm9rZS13aWR0aD0iMS4yIi8+PHJlY3QgeD0iMjUuNSIgeT0iMzYiIHdpZHRoPSIxMyIgaGVpZ2h0PSIyNiIgcng9IjIiIGZpbGw9IiMxZTI5M2IiLz48Y2lyY2xlIGN4PSIzMiIgY3k9IjQzIiByPSI0LjUiIGZpbGw9IiNlYWIzMDgiLz48bGluZSB4MT0iMzIiIHkxPSI0MyIgeDI9IjMyIiB5Mj0iMzkuNSIgc3Ryb2tlPSIjMWUyOTNiIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIyNyIgeT0iNTAiIHdpZHRoPSIxMCIgaGVpZ2h0PSI2IiByeD0iMC41IiBmaWxsPSIjY2JkNWUxIi8+PGNpcmNsZSBjeD0iMjkiIGN5PSI1OSIgcj0iMC44IiBmaWxsPSIjZWE1ODBjIi8+PGNpcmNsZSBjeD0iMzIiIGN5PSI1OSIgcj0iMC44IiBmaWxsPSIjZWFiMzA4Ii8+PGNpcmNsZSBjeD0iMzUiIGN5PSI1OSIgcj0iMC44IiBmaWxsPSIjMTZhMzRhIi8+PC9nPjwvc3ZnPg==) 20 14,pointer!important}body.dragging-active.dragging-clamp .cad-wire-path{pointer-events:stroke!important}.cad-wire-hitbox{pointer-events:none!important}body.dragging-active.dragging-clamp .cad-wire-hitbox{pointer-events:stroke!important}
