@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Fira+Code:wght@400;500;600&display=swap";:root{--bg-app: #0f172a;--bg-panel: #1e293b;--bg-card: #334155;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-tertiary: #64748b;--border-primary: #334155;--border-secondary: #1e293b;--border-color: #334155;--bg-skeleton: #334155;--bg-secondary: #1e293b;--bg-tertiary: #0f172a;--bg-primary: #1e293b;--accent-color: #6366f1}.light{--bg-app: #f8fafc;--bg-panel: #ffffff;--bg-card: #e2e8f0;--text-primary: #0f172a;--text-secondary: #64748b;--text-tertiary: #94a3b8;--border-primary: #e2e8f0;--border-secondary: #cbd5e1;--border-color: #e2e8f0;--bg-skeleton: #cbd5e1;--bg-secondary: #f1f5f9;--bg-tertiary: #e2e8f0;--bg-primary: #ffffff;--accent-color: #6366f1}body{font-family:Inter,sans-serif;background-color:var(--bg-app);color:var(--text-primary);transition:background-color .3s,color .3s}.code-font{font-family:Fira Code,monospace;font-variant-ligatures:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-app)}::-webkit-scrollbar-thumb{background:var(--border-primary);border:2px solid var(--bg-app);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.token-keyword{color:#c678dd;font-weight:700}.token-string{color:#98c379}.token-number{color:#d19a66}.token-comment{color:#5c6370;font-style:italic}.token-function{color:#61afef}.token-operator{color:#56b6c2}.token-class{color:#e5c07b}.cm-page{padding:24px;max-width:1400px;margin:0 auto}.cm-loading,.cm-error{text-align:center;padding:40px;color:var(--text-secondary, #666)}.cm-error button{margin-top:16px;padding:8px 24px;background:var(--primary, #4f46e5);color:#fff;border:none;border-radius:6px;cursor:pointer}.cm-toast-container{position:fixed;top:80px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px}.cm-toast{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;animation:slideIn .3s ease;min-width:280px;max-width:400px}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.cm-toast-success{background:#10b981;color:#fff}.cm-toast-error{background:#ef4444;color:#fff}.cm-toast-info{background:#3b82f6;color:#fff}.cm-toast-close{background:none;border:none;color:inherit;font-size:18px;cursor:pointer;opacity:.8;padding:0;line-height:1}.cm-toast-close:hover{opacity:1}.cm-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px}.cm-header-left h1{font-size:24px;font-weight:600;margin:0 0 8px;color:var(--text-primary, #1a1a1a)}.cm-stats{display:flex;gap:8px;color:var(--text-secondary, #666);font-size:14px}.cm-stat-divider{color:var(--border, #ddd)}.cm-header-actions{display:flex;gap:12px}.cm-tabs{display:flex;gap:4px;margin-bottom:24px;background:var(--bg-secondary, #f3f4f6);padding:4px;border-radius:10px;width:fit-content}.cm-tab{padding:8px 16px;border:none;border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.cm-tab:hover{color:var(--text-primary, #1a1a1a);background:#0000000d}.cm-tab.active{background:var(--bg-primary, white);color:var(--primary, #4f46e5);box-shadow:0 1px 3px #0000001a;font-weight:600}[data-theme=dark] .cm-tabs{background:var(--bg-secondary, #1f2937)}[data-theme=dark] .cm-tab:hover{background:#ffffff0d}[data-theme=dark] .cm-tab.active{background:var(--bg-primary, #374151);color:#818cf8}.cm-btn-primary{background:var(--primary, #4f46e5);color:#fff;border:none;padding:10px 20px;border-radius:8px;font-weight:500;cursor:pointer;font-size:14px;transition:background .2s}.cm-btn-primary:hover:not(:disabled){background:var(--primary-hover, #4338ca)}.cm-btn-primary:disabled{opacity:.5;cursor:not-allowed}.cm-btn-secondary{background:var(--bg-secondary, #f3f4f6);color:var(--text-primary, #1a1a1a);border:1px solid var(--border, #e5e7eb);padding:10px 20px;border-radius:8px;font-weight:500;cursor:pointer;font-size:14px;transition:background .2s}.cm-btn-secondary:hover{background:var(--bg-hover, #e5e7eb)}.cm-btn-danger{background:#ef4444;color:#fff;border:none;padding:10px 20px;border-radius:8px;font-weight:500;cursor:pointer;font-size:14px}.cm-btn-danger:hover{background:#dc2626}.cm-btn-import{display:flex;align-items:center;gap:6px}.cm-btn-clear{background:none;border:none;color:var(--primary, #4f46e5);font-size:14px;cursor:pointer;padding:8px 12px}.cm-btn-clear:hover{text-decoration:underline}.cm-info-banner{display:flex;align-items:center;gap:10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:14px;color:#1e40af}[data-theme=dark] .cm-info-banner{background:#3b82f61a;border-color:#3b82f64d;color:#93c5fd}.cm-info-icon{font-size:18px}.cm-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px;align-items:center}.cm-filter-group{display:flex;flex-direction:column}.cm-search{padding:10px 14px;border:1px solid var(--border, #e5e7eb);border-radius:8px;font-size:14px;width:220px;background:var(--bg-primary, white);color:var(--text-primary, #1a1a1a)}.cm-select{padding:10px 14px;border:1px solid var(--border, #e5e7eb);border-radius:8px;font-size:14px;min-width:160px;background:var(--bg-primary, white);color:var(--text-primary, #1a1a1a);cursor:pointer}.cm-select:disabled{opacity:.5;cursor:not-allowed}.cm-table-wrap{background:var(--bg-primary, white);border-radius:12px;border:1px solid var(--border, #e5e7eb);overflow:hidden}.cm-table{width:100%;border-collapse:collapse;font-size:14px}.cm-table th{text-align:left;padding:14px 16px;background:var(--bg-secondary, #f9fafb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border, #e5e7eb)}.cm-table td{padding:14px 16px;border-bottom:1px solid var(--border, #e5e7eb);color:var(--text-primary, #1a1a1a)}.cm-table tbody tr:hover{background:var(--bg-secondary, #f9fafb)}.cm-table tbody tr:last-child td{border-bottom:none}.cm-cell-highlight{font-weight:500}.cm-empty{text-align:center;color:var(--text-secondary, #6b7280);padding:40px!important}.cm-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.cm-badge-global{background:#dbeafe;color:#1d4ed8}.cm-badge-custom{background:#dcfce7;color:#166534}[data-theme=dark] .cm-badge-global{background:#3b82f633;color:#93c5fd}[data-theme=dark] .cm-badge-custom{background:#22c55e33;color:#86efac}.cm-badge-practice{background:#e0e7ff;color:#3730a3;margin-right:6px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:700;cursor:help}.cm-badge-theory{background:#dcfce7;color:#166534;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:700;cursor:help}[data-theme=dark] .cm-badge-practice{background:#6366f133;color:#c7d2fe}[data-theme=dark] .cm-badge-theory{background:#22c55e33;color:#86efac}.cm-actions{display:flex;gap:8px;align-items:center}.cm-action{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border-radius:6px;cursor:pointer;border:none;transition:all .2s;background:transparent}.cm-action-edit{color:var(--primary, #4f46e5);background:#4f46e50d}.cm-action-edit:hover{background:#4f46e51a}.cm-action-delete{color:#ef4444;background:#ef44440d}.cm-action-delete:hover{background:#ef444426}.cm-template-label{color:var(--text-tertiary, #9ca3af);font-size:12px;font-style:italic}.cm-footer{padding:16px;text-align:right;color:var(--text-secondary, #6b7280);font-size:13px}.cm-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;animation:fadeIn .15s ease-out}.cm-modal{background:var(--bg-primary, white);width:100%;max-width:500px;border-radius:16px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;max-height:90vh;animation:scaleIn .2s cubic-bezier(.16,1,.3,1);border:1px solid var(--border, #e5e7eb);color:var(--text-primary, #111827)}.cm-modal-header{padding:24px 24px 0;display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;border-bottom:none}.cm-modal-header h3{margin:0;font-size:20px;font-weight:600;color:var(--text-primary, #111827);letter-spacing:-.01em}.cm-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary, #9ca3af);line-height:1;padding:4px;border-radius:6px;transition:all .2s}.cm-modal-close:hover{color:var(--text-primary, #1a1a1a);background:var(--bg-secondary, #f3f4f6)}.cm-modal-body{padding:0 24px 24px;overflow-y:auto;flex:1}.cm-modal-desc{color:var(--text-secondary, #6b7280);margin:0 0 20px;font-size:14px}.cm-modal-footer{padding:20px 24px;border-top:1px solid var(--border, #e5e7eb);background:var(--bg-secondary, #f9fafb);display:flex;justify-content:flex-end;gap:12px;border-bottom-left-radius:16px;border-bottom-right-radius:16px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.cm-confirm-modal{max-width:400px}.cm-confirm-modal .cm-modal-body p{margin:0;font-size:14px;color:var(--text-secondary, #374151);line-height:1.5}.cm-import-modal{max-width:600px;max-height:80vh}.cm-import-desc{color:var(--text-secondary, #6b7280);margin:0 0 16px;font-size:14px}.cm-import-tree{border:1px solid var(--border, #e5e7eb);border-radius:8px;max-height:400px;overflow-y:auto}.cm-tree-field{border-bottom:1px solid var(--border, #e5e7eb)}.cm-tree-field:last-child{border-bottom:none}.cm-tree-row{display:flex;align-items:center;gap:8px;padding:10px 12px}.cm-tree-field-row{background:var(--bg-secondary, #f9fafb)}.cm-tree-tech-row{padding-left:36px}.cm-tree-skill-row{padding-left:60px;background:var(--bg-primary, white)}.cm-tree-toggle{background:none;border:none;padding:4px;cursor:pointer;font-size:12px;color:var(--text-secondary, #6b7280);width:24px;text-align:center}.cm-tree-toggle:hover{color:var(--text-primary, #1a1a1a)}.cm-tree-toggle-placeholder{width:24px}.cm-tree-checkbox{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer}.cm-tree-checkbox input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--primary, #4f46e5)}.cm-tree-icon{font-size:16px}.cm-tree-name{font-size:14px;color:var(--text-primary, #1a1a1a)}.cm-tree-select-all{background:none;border:none;color:var(--primary, #4f46e5);font-size:12px;cursor:pointer;padding:4px 8px}.cm-tree-select-all:hover{text-decoration:underline}.cm-tree-children{background:var(--bg-primary, white)}.cm-import-footer{flex-direction:column;gap:16px}.cm-import-summary{color:var(--text-secondary, #6b7280);font-size:14px}.cm-import-hint{color:var(--text-tertiary, #9ca3af);font-style:italic}.cm-import-actions{display:flex;justify-content:flex-end;gap:12px}.cm-form-group{margin-bottom:20px}.cm-form-group:last-child{margin-bottom:0}.cm-form-group label{display:block;font-size:14px;font-weight:500;color:var(--text-primary, #1a1a1a);margin-bottom:8px}.cm-form-group input,.cm-form-group select{width:100%;padding:10px 14px;border:1px solid var(--border, #e5e7eb);border-radius:8px;font-size:14px;background:var(--bg-primary, white);color:var(--text-primary, #1a1a1a);margin-bottom:8px}.cm-form-group input:focus,.cm-form-group select:focus{outline:none;border-color:var(--primary, #4f46e5);box-shadow:0 0 0 3px #4f46e51a}[data-theme=dark] .cm-modal{background:var(--bg-primary, #1f2937)}[data-theme=dark] .cm-modal-footer{background:var(--bg-secondary, #111827)}[data-theme=dark] .cm-table-wrap{background:var(--bg-primary, #1f2937)}[data-theme=dark] .cm-tree-field-row{background:var(--bg-secondary, #111827)}@media(max-width:768px){.cm-header{flex-direction:column;align-items:stretch}.cm-header-actions{flex-direction:column}.cm-filters{flex-direction:column;align-items:stretch}.cm-search,.cm-select{width:100%}.cm-table-wrap{overflow-x:auto}.cm-modal{max-width:100%;max-height:95vh}}.cm-csv-modal{max-width:540px}.cm-csv-alert-option{margin-top:12px;padding-top:12px;border-top:1px dotted var(--border, #e5e7eb)}.cm-csv-danger-label{color:#dc2626!important;font-weight:600!important}.cm-csv-danger-label input{accent-color:#dc2626!important}.cm-csv-warning-text{font-size:13px;color:#dc2626;margin:4px 0 0 24px;font-style:italic;background:#fef2f2;padding:8px;border-radius:6px;border:1px solid #fee2e2}.cm-csv-stat-deleted .cm-csv-stat-number{color:#dc2626}.cm-btn-upload{display:flex;align-items:center;gap:6px}.cm-csv-dropzone{border:2px dashed var(--border, #e5e7eb);border-radius:12px;padding:40px 24px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg-secondary, #f9fafb)}.cm-csv-dropzone:hover{border-color:var(--primary, #4f46e5);background:#4f46e50d}.cm-csv-dropzone-active{border-color:var(--primary, #4f46e5);border-style:solid;background:#4f46e50d}.cm-csv-dropzone-content{display:flex;flex-direction:column;align-items:center;gap:8px}.cm-csv-dropzone-icon{font-size:36px}.cm-csv-dropzone-content p{margin:0;font-size:14px;color:var(--text-primary, #1a1a1a)}.cm-csv-dropzone-hint{font-size:12px;color:var(--text-secondary, #6b7280)}.cm-csv-file-info{display:flex;align-items:center;gap:10px;justify-content:center}.cm-csv-file-icon{font-size:24px}.cm-csv-file-name{font-size:14px;font-weight:500;color:var(--text-primary, #1a1a1a)}.cm-csv-file-size{font-size:12px;color:var(--text-secondary, #6b7280)}.cm-csv-file-remove{background:#fee2e2;border:none;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#dc2626;font-size:16px}.cm-csv-file-remove:hover{background:#fecaca}.cm-csv-options{margin-top:16px}.cm-csv-checkbox-label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-primary, #1a1a1a);cursor:pointer}.cm-csv-checkbox-label input{width:16px;height:16px;accent-color:var(--primary, #4f46e5)}.cm-csv-format{margin-top:20px;padding:16px;background:var(--bg-secondary, #f9fafb);border-radius:8px;border:1px solid var(--border, #e5e7eb)}.cm-csv-format h4{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.5px}.cm-csv-format code{display:block;background:var(--bg-primary, white);padding:8px 12px;border-radius:6px;font-size:13px;font-family:monospace;color:var(--primary, #4f46e5);border:1px solid var(--border, #e5e7eb)}.cm-csv-format p{margin:12px 0 4px;font-size:12px;color:var(--text-secondary, #6b7280)}.cm-csv-format pre{margin:0;background:var(--bg-primary, white);padding:10px 12px;border-radius:6px;font-size:12px;font-family:monospace;color:var(--text-primary, #1a1a1a);border:1px solid var(--border, #e5e7eb);white-space:pre-wrap}.cm-csv-download-template{display:inline-block;margin-top:12px;font-size:13px;color:var(--primary, #4f46e5);text-decoration:none}.cm-csv-download-template:hover{text-decoration:underline}.cm-csv-result{text-align:center}.cm-csv-result-status{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px;border-radius:8px;font-size:14px;font-weight:500}.cm-csv-result-success{background:#dcfce7;color:#166534}.cm-csv-result-error{background:#fef2f2;color:#dc2626}.cm-csv-result-icon{font-size:20px}.cm-csv-result-stats{display:flex;justify-content:center;gap:40px;margin-top:24px}.cm-csv-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.cm-csv-stat-number{font-size:32px;font-weight:600;color:var(--text-primary, #1a1a1a)}.cm-csv-stat-label{font-size:12px;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.5px}.cm-csv-errors{margin-top:24px;text-align:left;background:#fef2f2;border-radius:8px;padding:16px;border:1px solid #fecaca}.cm-csv-errors h4{margin:0 0 12px;font-size:13px;color:#dc2626}.cm-csv-errors ul{margin:0;padding-left:20px}.cm-csv-errors li{font-size:13px;color:#dc2626;margin-bottom:4px}.cm-csv-more-errors{color:#9ca3af;font-style:italic}[data-theme=dark] .cm-csv-result-success{background:#22c55e33;color:#86efac}[data-theme=dark] .cm-csv-errors{background:#ef44441a;border-color:#ef44444d}
