.app{flex-direction:column;min-height:100vh;display:flex}.app-nav{background:#1a1a2e;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.nav-links{gap:1.5rem;display:flex}.nav-links a{color:#a0aec0;border-bottom:2px solid #0000;padding:.5rem 0;font-size:.9rem;text-decoration:none;transition:color .15s,border-color .15s}.nav-links a:hover{color:#fff}.nav-links a.active{color:#fff;border-bottom-color:#667eea}.app-main{flex:1;overflow:auto}.courses-page{max-width:1200px;margin:0 auto;padding:1.5rem}.courses-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.courses-header h1{margin:0;font-size:1.5rem}.courses-filters{align-items:center;gap:1rem;display:flex}.courses-category-select{background:#fff;border:1px solid #ddd;border-radius:4px;min-width:180px;padding:.5rem .75rem;font-size:.9rem}.courses-category-select:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 2px #667eea33}.courses-search{gap:.5rem;display:flex}.courses-search input{border:1px solid #ddd;border-radius:4px;width:250px;padding:.5rem .75rem;font-size:.9rem}.courses-search input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 2px #667eea33}.courses-search button{color:#fff;cursor:pointer;background:#667eea;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem}.courses-search button:hover{background:#5a67d8}.courses-error{color:#dc2626;background:#fee2e2;border-radius:4px;margin-bottom:1rem;padding:1rem}.courses-loading{text-align:center;color:#666;padding:3rem}.courses-table{border-collapse:collapse;background:#fff;border-radius:8px;width:100%;overflow:hidden;box-shadow:0 1px 3px #0000001a}.courses-table th{text-align:left;color:#475569;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:.75rem 1rem;font-size:.85rem;font-weight:600}.courses-table td{border-bottom:1px solid #f1f5f9;padding:.75rem 1rem}.courses-row{cursor:pointer;transition:background .1s}.courses-row:hover{background:#f8fafc}.course-id{color:#64748b;font-family:monospace;font-size:.8rem}.no-results{text-align:center;color:#666;padding:2rem!important}.courses-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;display:flex}.courses-pagination button{cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:4px;padding:.5rem 1rem;font-size:.9rem}.courses-pagination button:hover:not(:disabled){background:#f8fafc}.courses-pagination button:disabled{opacity:.5;cursor:not-allowed}.courses-pagination span{color:#64748b;font-size:.9rem}.activity-data-modal-overlay{z-index:1100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.activity-data-modal{background:#fff;border-radius:8px;flex-direction:column;width:90vw;max-width:600px;max-height:90vh;display:flex;box-shadow:0 4px 24px #0003}.activity-data-modal .modal-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.activity-data-modal .modal-header h2{margin:0;font-size:18px}.activity-data-modal .close-btn{cursor:pointer;color:#666;background:0 0;border:none;padding:0;font-size:24px;line-height:1}.activity-data-modal .close-btn:hover{color:#000}.activity-data-modal-body{flex:1;padding:20px;overflow-y:auto}.activity-data-modal .modal-loading,.activity-data-modal .modal-error{text-align:center;padding:20px}.activity-data-modal .modal-error{color:#c00}.activity-options-form{flex-direction:column;gap:16px;display:flex}.form-row{flex-direction:column;gap:4px;display:flex}.form-row label{color:#333;font-size:14px;font-weight:500}.form-row input[type=text],.form-row input[type=number],.form-row select{border:1px solid #ccc;border-radius:4px;padding:8px 12px;font-size:14px}.form-row input[type=text]:focus,.form-row input[type=number]:focus,.form-row select:focus{border-color:#06c;outline:none;box-shadow:0 0 0 2px #06c3}.form-row input:disabled,.form-row select:disabled{cursor:not-allowed;background:#f5f5f5}.form-row.readonly{flex-direction:row;align-items:center;gap:12px}.form-row.readonly label{min-width:140px}.readonly-value{color:#666;word-break:break-all;background:#f5f5f5;border-radius:4px;padding:4px 8px;font-family:monospace;font-size:14px}.form-row.checkbox-row{flex-direction:row;align-items:center}.form-row.checkbox-row label{cursor:pointer;align-items:center;gap:8px;font-weight:400;display:flex}.form-row.checkbox-row input[type=checkbox]{cursor:pointer;width:16px;height:16px}.form-section-header{color:#333;border-bottom:1px solid #e0e0e0;margin-top:8px;padding-bottom:4px;font-size:14px;font-weight:600}.activity-data-modal .modal-footer{border-top:1px solid #e0e0e0;justify-content:flex-end;gap:12px;padding:16px 20px;display:flex}.activity-data-modal .cancel-btn,.activity-data-modal .save-btn{cursor:pointer;border-radius:4px;padding:8px 20px;font-size:14px}.activity-data-modal .cancel-btn{color:#333;background:#fff;border:1px solid #ccc}.activity-data-modal .cancel-btn:hover{background:#f5f5f5}.activity-data-modal .save-btn{color:#fff;background:#06c;border:1px solid #06c}.activity-data-modal .save-btn:hover:not(:disabled){background:#0052a3}.activity-data-modal .save-btn:disabled{opacity:.5;cursor:not-allowed}.task-editor{background:#fff;border:1px solid #ddd;border-radius:4px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.task-editor-error{text-align:center;padding:1rem}.task-editor-error .error-message{color:#c00;margin-bottom:.5rem}.task-editor-header{background:#f5f5f5;border-bottom:1px solid #ddd;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}.task-editor-meta{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.task-editor-meta label{align-items:center;gap:.25rem;font-size:.875rem;display:flex}.task-editor-meta select,.task-editor-meta input[type=number]{border:1px solid #ccc;border-radius:3px;padding:.25rem .5rem;font-size:.875rem}.task-editor-meta input[type=number]{width:60px}.toggle-raw{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:3px;padding:.25rem .75rem;font-size:.875rem}.toggle-raw:hover{background:#eee}.toggle-raw.active{color:#fff;background:#007bff;border-color:#007bff}.task-editor-raw{padding:.5rem}.task-editor-raw textarea{resize:vertical;box-sizing:border-box;border:1px solid #ccc;border-radius:3px;width:100%;min-height:300px;padding:.5rem;font-family:Consolas,Monaco,monospace;font-size:.875rem}.task-editor-raw .parse-error{color:#c00;margin-top:.25rem;font-size:.875rem}.task-editor-parts{flex-direction:column;gap:.5rem;padding:.5rem;display:flex}.part-editor{background:#fafafa;border:1px solid #e0e0e0;border-radius:4px;padding:.75rem}.part-editor label{color:#666;margin-bottom:.25rem;font-size:.75rem;display:block}.part-editor textarea,.part-editor input[type=text],.part-editor input[type=number]{box-sizing:border-box;border:1px solid #ccc;border-radius:3px;width:100%;padding:.375rem .5rem;font-size:.875rem}.part-editor textarea{resize:vertical;font-family:inherit}.part-text textarea{font-family:Consolas,Monaco,monospace}.part-choicegroup{background:#f0f7ff}.choicegroup-header{justify-content:space-between;margin-bottom:.5rem;font-size:.75rem;display:flex}.choicegroup-type{color:#06c;font-weight:600}.choicegroup-id{color:#666}.choicegroup-choices{flex-direction:column;gap:.375rem;display:flex}.choicegroup-choice{align-items:center;gap:.5rem;display:flex}.choicegroup-choice input[type=radio],.choicegroup-choice input[type=checkbox]{margin:0}.choice-content-input{flex:1}.part-choice{background:#fff9f0;align-items:center;gap:.75rem;display:flex}.part-choice.correct{background:#f0fff4;border-color:#4caf50}.part-choice>label{white-space:nowrap;align-items:center;gap:.25rem;margin-bottom:0;display:flex}.part-choice .choice-content-input{flex:1}.part-input{background:#f5f0ff}.input-meta{gap:1rem;margin-bottom:.5rem;display:flex}.input-meta label{align-items:center;gap:.25rem;margin-bottom:0;display:flex}.input-meta select{border:1px solid #ccc;border-radius:3px;padding:.25rem .5rem;font-size:.875rem}.input-dimensions{gap:1rem;margin-top:.5rem;display:flex}.input-dimensions label{align-items:center;gap:.25rem;margin-bottom:0;display:flex}.input-dimensions input{width:80px}.part-container{background:#f8f8f8;border-left:3px solid #999}.container-header{gap:.5rem;margin-bottom:.5rem;font-family:Consolas,Monaco,monospace;font-size:.75rem;display:flex}.container-tag{color:#06c;font-weight:600}.container-class{color:#808}.container-children{border-left:1px dashed #ccc;flex-direction:column;gap:.25rem;margin-left:.75rem;padding-left:.75rem;display:flex}.container-child-wrapper,.part-with-controls{flex-direction:column;gap:.25rem;display:flex}.part-header,.input-header{justify-content:space-between;align-items:center;margin-bottom:.25rem;display:flex}.part-delete-btn,.choice-delete-btn{color:#999;cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.25rem;line-height:1}.part-delete-btn:hover,.choice-delete-btn:hover{color:#c00}.add-part-button-container{justify-content:center;height:20px;display:flex;position:relative}.add-part-button{color:#999;cursor:pointer;background:#fff;border:1px dashed #ccc;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:1rem;line-height:1;display:flex}.add-part-button:hover{color:#06c;background:#f0f7ff;border-color:#06c}.add-part-menu{z-index:100;background:#fff;border:1px solid #ddd;border-radius:4px;min-width:180px;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}.add-part-option{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:.5rem .75rem;font-size:.875rem;display:block}.add-part-option:hover{background:#f0f7ff}.add-part-option:first-child{border-radius:4px 4px 0 0}.add-part-option:last-child{border-radius:0 0 4px 4px}.add-choice-btn{color:#666;cursor:pointer;background:0 0;border:1px dashed #ccc;border-radius:3px;margin-top:.25rem;padding:.25rem .5rem;font-size:.75rem}.add-choice-btn:hover{color:#06c;border-color:#06c}.container-tag-input,.container-class-input{border:1px solid #ccc;border-radius:2px;width:60px;padding:.125rem .25rem;font-family:Consolas,Monaco,monospace;font-size:.75rem}.container-header{align-items:center;gap:.5rem;margin-bottom:.5rem;font-family:Consolas,Monaco,monospace;font-size:.75rem;display:flex}.choicegroup-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.75rem;display:flex}.choicegroup-header select{border:1px solid #ccc;border-radius:2px;padding:.125rem .25rem;font-size:.75rem}.image-editor-wrapper{display:inline-block;position:relative}.image-editor-wrapper.editable{cursor:pointer}.image-editor-wrapper img{border-radius:4px;max-width:100%;height:auto;display:block}.image-editor-overlay{opacity:0;pointer-events:none;background:#00000080;border-radius:4px;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;inset:0}.image-editor-wrapper.editable:hover .image-editor-overlay{opacity:1}.image-editor-icon{color:#333;background:#fff;border-radius:4px;padding:6px 12px;font-size:14px;font-weight:500}.image-editor-modal{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.image-editor-content{background:#fff;border-radius:8px;width:90%;max-width:500px;max-height:90vh;padding:24px;overflow-y:auto;box-shadow:0 4px 20px #00000026}.image-editor-content h3{margin:0 0 16px;font-size:18px}.image-editor-preview{text-align:center;background:#f5f5f5;border-radius:4px;margin-bottom:16px;padding:16px}.image-editor-preview img{border-radius:4px;max-width:100%;max-height:200px}.image-editor-field{margin-bottom:16px}.image-editor-field label{color:#333;margin-bottom:6px;font-size:14px;font-weight:500;display:block}.image-editor-field input[type=text],.image-editor-field textarea{box-sizing:border-box;border:1px solid #ddd;border-radius:4px;width:100%;padding:8px 12px;font-family:inherit;font-size:14px}.image-editor-field textarea{resize:vertical}.image-editor-field input:focus,.image-editor-field textarea:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f633}.image-editor-src-row{gap:8px;display:flex}.image-editor-src-row input{flex:1}.image-editor-src-row button{cursor:pointer;white-space:nowrap;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;padding:8px 16px;font-size:14px}.image-editor-src-row button:hover:not(:disabled){background:#e5e5e5}.image-editor-src-row button:disabled{opacity:.6;cursor:not-allowed}.image-editor-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.image-editor-actions button{cursor:pointer;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;padding:8px 16px;font-size:14px}.image-editor-actions button:hover{background:#e5e5e5}.image-editor-actions button.primary{color:#fff;background:#3b82f6;border-color:#3b82f6}.image-editor-actions button.primary:hover{background:#2563eb}.image-editor-actions button.danger{color:#fff;background:#ef4444;border-color:#ef4444}.image-editor-actions button.danger:hover{background:#dc2626}.image-editor-spacer{flex:1}.image-editor-size-row{gap:16px;display:flex}.image-editor-size-row .image-editor-field{flex:1}.video-editor-wrapper{cursor:default;display:inline-block;position:relative}.video-editor-wrapper.editable{cursor:pointer}.video-editor-wrapper.editable:hover .video-editor-overlay{opacity:1}.video-placeholder{color:#a0aec0;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);border:2px dashed #4a5568;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;min-width:320px;min-height:180px;padding:1rem;display:flex}.video-placeholder .video-icon{color:#667eea;font-size:3rem}.video-placeholder .video-label{color:#718096;font-family:monospace;font-size:.875rem}.video-editor-overlay{opacity:0;background:#0009;border-radius:8px;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;inset:0}.video-editor-icon{color:#fff;background:#667eea;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;font-weight:500}.video-editor-modal{z-index:10001;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.video-editor-content{background:#fff;border-radius:8px;width:90%;max-width:500px;padding:1.5rem;box-shadow:0 4px 20px #0000004d}.video-editor-content h3{margin:0 0 1rem;font-size:1.125rem}.video-editor-preview{margin-bottom:1rem}.video-placeholder-large{color:#a0aec0;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;height:150px;display:flex}.video-placeholder-large .video-icon{color:#667eea;font-size:2.5rem}.video-placeholder-large .video-id{color:#718096;font-family:monospace;font-size:.875rem}.video-editor-field{margin-bottom:1rem}.video-editor-field label{color:#374151;margin-bottom:.375rem;font-size:.875rem;font-weight:500;display:block}.video-editor-field input[type=text]{border:1px solid #d1d5db;border-radius:4px;width:100%;padding:.5rem;font-family:monospace;font-size:.875rem}.video-editor-field input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 2px #667eea33}.video-editor-upload-row button{cursor:pointer;background:#f9fafb;border:1px solid #d1d5db;border-radius:4px;padding:.5rem 1rem;font-size:.875rem}.video-editor-upload-row button:hover:not(:disabled){background:#f3f4f6}.video-editor-upload-row button:disabled{opacity:.5;cursor:not-allowed}.video-editor-actions{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.video-editor-actions button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;padding:.5rem 1rem;font-size:.875rem}.video-editor-actions button:hover{background:#f9fafb}.video-editor-actions button.primary{color:#fff;background:#667eea;border-color:#667eea}.video-editor-actions button.primary:hover{background:#5a67d8}.floating-toolbar{z-index:10000;background:#333;border-radius:4px;align-items:center;gap:2px;padding:4px 6px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 2px 8px #0000004d}.floating-toolbar:after{content:"";border-top:6px solid #333;border-left:6px solid #0000;border-right:6px solid #0000;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.floating-toolbar button{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:14px;display:flex}.floating-toolbar button:hover{background:#ffffff26}.floating-toolbar button:active{background:#ffffff40}.toolbar-divider{background:#ffffff4d;width:1px;height:20px;margin:0 4px}.toolbar-link-input{align-items:center;gap:4px;display:flex}.toolbar-link-input input{color:#333;background:#fff;border:none;border-radius:3px;width:180px;padding:4px 8px;font-size:13px}.toolbar-link-input input:focus{outline:none;box-shadow:0 0 0 2px #4299e199}.toolbar-link-input button{width:24px;height:24px;font-size:12px}.frame-editor{font-family:Arial,sans-serif;line-height:1.5}.frame-editor [contenteditable=true]{border-radius:2px;outline:none;transition:background-color .15s}.frame-editor [contenteditable=true]:hover{background-color:#3b82f60d}.frame-editor [contenteditable=true]:focus{background-color:#3b82f61a;box-shadow:0 0 0 2px #3b82f64d}.frame-editor-fstack{background-color:#f8fafc;border:2px dashed #94a3b8;border-radius:4px;margin:8px 0;padding:12px;position:relative}.frame-editor-fstack:before{content:"Stack";color:#fff;text-transform:uppercase;letter-spacing:.5px;background:#64748b;border-radius:3px;padding:2px 6px;font-size:10px;font-weight:600;position:absolute;top:-10px;left:8px}.frame-editor-placeholder{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;margin:2px;padding:4px 10px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.frame-editor-qid{color:#1e40af;background-color:#dbeafe;border:1px solid #93c5fd}.frame-editor-qid:hover{background-color:#bfdbfe;border-color:#60a5fa}.frame-editor-taskid{color:#92400e;background-color:#fef3c7;border:1px solid #fcd34d}.frame-editor-taskid:hover{background-color:#fde68a;border-color:#fbbf24}.frame-editor-fdone{color:#166534;-webkit-user-select:none;user-select:none;background-color:#dcfce7;border:1px solid #86efac;border-radius:4px;align-items:center;margin:4px 0;padding:4px 10px;font-size:12px;font-weight:500;display:inline-flex}.frame-editor img{border-radius:4px;max-width:100%;height:auto}.frame-editor .left-column{float:left;width:48%;padding-right:2%}.frame-editor .right-column{float:right;width:48%;padding-left:2%}.frame-editor .content:after{content:"";clear:both;display:table}.frame-editor .title-bar{color:#fff;background:linear-gradient(135deg,#1e3a5f 0%,#2d5a87 100%);border-radius:4px;margin-bottom:16px;padding:8px 16px}.frame-editor .title-bar h1{margin:0;font-size:18px;font-weight:600}.frame-editor .content{padding:8px}.fc-editor-overlay{z-index:1100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fc-editor-panel{background:#fff;border-radius:8px;flex-direction:column;width:95vw;max-width:1400px;height:90vh;display:flex;box-shadow:0 8px 32px #0003}.fc-editor-panel.fc-editor-wide{max-width:1600px}.fc-editor-header{background:#f5f5f5;border-bottom:1px solid #ddd;border-radius:8px 8px 0 0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.fc-editor-header h3{margin:0;font-size:1.125rem}.fc-editor-tabs{gap:.25rem;display:flex}.fc-editor-tabs button{cursor:pointer;color:#555;background:#f0f0f0;border:1px solid #ccc;border-radius:4px 4px 0 0;padding:.375rem .75rem;font-size:.875rem}.fc-editor-tabs button:hover{background:#e0e0e0}.fc-editor-tabs button.active{color:#06c;background:#fff;border-bottom-color:#fff;font-weight:600}.fc-editor-actions{align-items:center;gap:.75rem;display:flex}.dirty-indicator{color:#e67e00;font-size:.875rem}.draft-indicator{color:#06c;font-size:.875rem}.publish-btn{color:#fff!important;background:#28a745!important;border-color:#28a745!important}.publish-btn:hover:not(:disabled){background:#218838!important}.publish-btn:disabled{color:#666!important;background:#ccc!important;border-color:#ccc!important}.fc-editor-actions button{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.375rem .75rem;font-size:.875rem}.fc-editor-actions button:hover:not(:disabled){background:#eee}.fc-editor-actions button:disabled{opacity:.5;cursor:not-allowed}.fc-editor-actions button:last-child{padding:.25rem .5rem;font-size:1.25rem;line-height:1}.fc-editor-body{flex:1;padding:1rem;overflow:hidden}.fc-loading,.fc-error{text-align:center;padding:2rem}.fc-error{color:#c00}.fc-editor-content{gap:1rem;height:100%;display:flex}.fc-task-list{background:#fafafa;border:1px solid #ddd;border-radius:4px;flex-shrink:0;width:280px;overflow-y:auto}.fc-frame{border-bottom:1px solid #ddd}.fc-frame:last-child{border-bottom:none}.fc-frame-header{background:#e8e8e8;padding:.5rem .75rem;font-size:.875rem;font-weight:600;position:sticky;top:0}.fc-stack{padding-left:.5rem}.fc-stack-header{color:#666;padding:.375rem .5rem;font-size:.75rem;font-weight:500}.fc-task-item{text-align:left;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;width:100%;padding:.5rem .75rem;font-size:.875rem;display:block}.fc-task-item:hover{background:#e8f0ff}.fc-task-item.selected{background:#d0e0ff;border-left-color:#06c}.fc-task-item.question .task-label{color:#333}.fc-task-item.custom .task-label{color:#888;font-style:italic}.fc-task-editor{background:#fff;border:1px solid #ddd;border-radius:4px;flex:1;overflow-y:auto}.fc-no-selection,.fc-custom-task{color:#666;text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;display:flex}.fc-custom-task p{margin:.25rem 0}.fc-editor-layout{gap:1rem;height:100%;display:flex}.fc-frame-selector{background:#fafafa;border:1px solid #ddd;border-radius:4px;flex-shrink:0;width:200px;overflow-y:auto}.fc-frame-selector h4{background:#e8e8e8;border-bottom:1px solid #ddd;margin:0;padding:.75rem;font-size:.875rem}.fc-frame-btn{text-align:left;cursor:pointer;background:0 0;border-top:none;border-bottom:1px solid #eee;border-left:3px solid #0000;border-right:none;justify-content:space-between;align-items:center;width:100%;padding:.625rem .75rem;font-size:.875rem;display:flex}.fc-frame-btn:hover{background:#e8f0ff}.fc-frame-btn.selected{background:#d0e0ff;border-left-color:#06c}.fc-frame-btn .task-count{color:#666;background:#e0e0e0;border-radius:10px;padding:2px 6px;font-size:.75rem}.fc-main-editor{flex-direction:column;flex:1;display:flex;overflow:hidden}.fc-frame-editor{flex:1;overflow-y:auto}.fc-no-content{color:#888;justify-content:center;align-items:center;height:100%;display:flex}.fc-tasks-editor{gap:1rem;height:100%;display:flex}.fc-task-selector{background:#fafafa;border:1px solid #ddd;border-radius:4px;flex-shrink:0;width:220px;overflow-y:auto}.fc-task-selector h4{background:#e8e8e8;border-bottom:1px solid #ddd;margin:0;padding:.75rem;font-size:.875rem}.fc-stack-group{border-bottom:1px solid #eee}.fc-stack-label{color:#666;background:#f0f0f0;padding:.375rem .75rem;font-size:.75rem;font-weight:500}.fc-task-btn{text-align:left;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;width:100%;padding:.5rem .75rem;font-family:monospace;font-size:.8rem;display:block}.fc-task-btn:hover{background:#e8f0ff}.fc-task-btn.selected{background:#d0e0ff;border-left-color:#06c}.fc-task-btn.question{color:#28a745}.fc-task-btn.custom{color:#6c757d}.fc-task-content{background:#fff;border:1px solid #ddd;border-radius:4px;flex:1;overflow-y:auto}.fc-custom-task-info{color:#666;padding:1rem}.fc-frame-item{border-bottom:1px solid #eee;align-items:stretch;display:flex}.fc-frame-item .fc-frame-btn{border-bottom:none;flex:1}.fc-frame-reorder{border-left:1px solid #eee;flex-direction:column;display:flex}.fc-reorder-btn{cursor:pointer;color:#666;background:0 0;border:none;flex:1;justify-content:center;align-items:center;padding:.25rem .5rem;font-size:.625rem;display:flex}.fc-reorder-btn:hover:not(:disabled){color:#06c;background:#e8f0ff}.fc-reorder-btn:disabled{opacity:.3;cursor:not-allowed}.fc-add-frame-btn{cursor:pointer;color:#666;background:0 0;border:2px dashed #ccc;border-radius:4px;width:100%;margin-top:.5rem;padding:.75rem;font-size:.875rem}.fc-add-frame-btn:hover{color:#06c;background:#f0f7ff;border-color:#06c}.fc-add-frame-modal{z-index:1200;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fc-add-frame-content{background:#fff;border-radius:8px;width:90%;max-width:400px;padding:1.5rem;box-shadow:0 4px 20px #0003}.fc-add-frame-content h4{margin:0 0 .5rem}.fc-add-frame-content p{color:#666;margin:0 0 1rem}.fc-template-list{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.fc-template-btn{cursor:pointer;text-align:left;background:#fafafa;border:1px solid #ddd;border-radius:4px;flex-direction:column;align-items:flex-start;padding:.75rem 1rem;display:flex}.fc-template-btn:hover{background:#f0f7ff;border-color:#06c}.fc-template-btn strong{color:#333;font-size:.9rem}.fc-template-btn span{color:#666;margin-top:.25rem;font-size:.8rem}.fc-cancel-btn{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.5rem 1rem}.fc-cancel-btn:hover{background:#f0f0f0}.lesson-info-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lesson-info-modal{background:#fff;border-radius:8px;flex-direction:column;width:90vw;max-width:800px;max-height:90vh;display:flex;box-shadow:0 4px 24px #0003}.lesson-info-modal .modal-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.lesson-info-modal .modal-header h2{margin:0;font-size:18px}.lesson-info-modal-body{flex:1;padding:20px;overflow-y:auto}.modal-loading,.modal-error{text-align:center;padding:40px}.modal-error{color:#c00}.lesson-not-created{color:#856404;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;padding:16px;font-size:14px}.lesson-section{margin-bottom:24px}.lesson-section h3{color:#333;border-bottom:1px solid #e0e0e0;margin:0 0 12px;padding-bottom:8px;font-size:16px}.lesson-name-display{background:#f8f9fa;border-radius:4px;margin:0;padding:12px;font-size:14px}.objectives-list{margin:0;padding:0 0 0 20px;list-style:outside}.objectives-list li{margin:8px 0;font-size:14px;line-height:1.5}.objective-code{background:#e9ecef;border-radius:3px;margin-right:8px;padding:2px 6px;font-family:monospace;font-size:12px}.modal-footer{background:#f8f9fa;border-top:1px solid #e0e0e0;justify-content:flex-end;align-items:center;gap:12px;padding:16px 20px;display:flex}.modal-footer button{cursor:pointer;border-radius:4px;padding:10px 20px;font-size:14px}.save-btn{color:#fff;background:#06c;border:none}.save-btn:hover:not(:disabled){background:#05a}.save-btn:disabled{opacity:.5;cursor:not-allowed}.cancel-btn{background:#fff;border:1px solid #ccc}.cancel-btn:hover{background:#e9ecef}.glossary-editor{border:1px solid #e0e0e0;border-radius:4px;overflow:hidden}.glossary-header{background:#f8f9fa;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.glossary-header h3{border:none;margin:0;padding:0;font-size:14px}.add-word-btn{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:4px;padding:6px 12px;font-size:13px}.add-word-btn:hover:not(:disabled){background:#218838}.add-word-btn:disabled{opacity:.5;cursor:not-allowed}.glossary-empty{text-align:center;color:#666;margin:0;padding:20px;font-style:italic}.glossary-list{margin:0;padding:0;list-style:none}.glossary-item{border-bottom:1px solid #e0e0e0}.glossary-item:last-child{border-bottom:none}.glossary-item-header{cursor:pointer;background:#fff;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.glossary-item-header:hover{background:#f8f9fa}.glossary-word-info{align-items:center;gap:8px;display:flex}.play-audio-btn{color:#fff;cursor:pointer;background:#06c;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:10px;display:flex}.play-audio-btn:hover{background:#05a}.glossary-word-text{font-weight:500}.glossary-expand-icon{color:#666;font-size:10px}.glossary-item-fields{background:#f8f9fa;border-top:1px solid #e0e0e0;padding:16px}.glossary-item-fields label{color:#555;margin-bottom:12px;font-size:13px;font-weight:500;display:block}.glossary-item-fields input,.glossary-item-fields textarea{border:1px solid #ccc;border-radius:4px;width:100%;margin-top:4px;padding:8px 10px;font-family:inherit;font-size:14px;display:block}.glossary-item-fields input:focus,.glossary-item-fields textarea:focus{border-color:#06c;outline:none;box-shadow:0 0 0 2px #06c3}.glossary-item-fields input:disabled,.glossary-item-fields textarea:disabled{cursor:not-allowed;background:#e9ecef}.glossary-item-fields textarea{resize:vertical;min-height:60px}.remove-word-btn{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:4px;margin-top:8px;padding:8px 16px;font-size:13px}.remove-word-btn:hover:not(:disabled){background:#c82333}.remove-word-btn:disabled{opacity:.5;cursor:not-allowed}.audio-field-row{gap:8px;margin-top:4px;display:flex}.audio-field-row input{flex:1;margin-top:0}.upload-audio-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#6c757d;border:none;border-radius:4px;padding:8px 12px;font-size:13px}.upload-audio-btn:hover:not(:disabled){background:#5a6268}.upload-audio-btn:disabled{opacity:.5;cursor:not-allowed}.bulk-publish-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.bulk-publish-modal{background:#fff;border-radius:8px;flex-direction:column;width:90vw;max-width:700px;max-height:90vh;display:flex;box-shadow:0 4px 24px #0003}.bulk-publish-modal .modal-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.bulk-publish-modal .modal-header h2{margin:0;font-size:18px}.bulk-publish-body{flex:1;padding:20px;overflow-y:auto}.no-items{text-align:center;color:#666;margin:0;padding:20px;font-style:italic}.bulk-publish-summary{background:#f8f9fa;border-radius:4px;margin-bottom:16px;padding:12px 16px;font-size:14px}.bulk-publish-list{border:1px solid #e0e0e0;border-radius:8px;max-height:400px;margin:0;padding:0;list-style:none;overflow-y:auto}.bulk-publish-item{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.bulk-publish-item:last-child{border-bottom:none}.bulk-publish-item.no-draft{opacity:.5}.bulk-publish-item-info{flex:1;min-width:0}.bulk-publish-item-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;display:block;overflow:hidden}.bulk-publish-item-path{color:#666;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;display:block;overflow:hidden}.bulk-publish-item-status{flex-shrink:0}.bulk-publish-item .status-badge{border-radius:4px;padding:3px 8px;font-size:11px;font-weight:500}.bulk-publish-item .status-badge.pending{color:#856404;background:#fff3cd}.bulk-publish-item .status-badge.checking{color:#495057;background:#e9ecef}.bulk-publish-item .status-badge.no-draft{color:#6c757d;background:#e9ecef}.bulk-publish-item .status-badge.publishing{color:#004085;background:#cce5ff}.bulk-publish-item .status-badge.success{color:#155724;background:#d4edda}.bulk-publish-item .status-badge.error{color:#721c24;background:#f8d7da}.bulk-publish-modal .modal-footer{background:#f8f9fa;border-top:1px solid #e0e0e0;justify-content:flex-end;align-items:center;gap:12px;padding:16px 20px;display:flex}.bulk-publish-modal .modal-footer button{cursor:pointer;border-radius:4px;padding:10px 20px;font-size:14px}.bulk-publish-modal .publish-all-btn{color:#fff;background:#28a745;border:none}.bulk-publish-modal .publish-all-btn:hover{background:#218838}.bulk-publish-modal .cancel-btn{background:#fff;border:1px solid #ccc}.bulk-publish-modal .cancel-btn:hover{background:#e9ecef}.video-upload-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.video-upload-modal{background:#fff;border-radius:8px;flex-direction:column;width:90vw;max-width:600px;max-height:90vh;display:flex;box-shadow:0 4px 24px #0003}.video-upload-modal .modal-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.video-upload-modal .modal-header h2{margin:0;font-size:18px}.video-upload-body{flex:1;padding:20px;overflow-y:auto}.drop-zone{text-align:center;cursor:pointer;background:#fafafa;border:2px dashed #ccc;border-radius:8px;padding:40px 20px;transition:all .2s}.drop-zone:hover{background:#f0f7ff;border-color:#06c}.drop-zone.dragging{background:#e6f0ff;border-style:solid;border-color:#06c}.drop-zone-content{pointer-events:none}.drop-icon{margin-bottom:12px;font-size:48px;display:block}.drop-primary{color:#333;margin:0 0 4px;font-size:16px;font-weight:500}.drop-secondary{color:#666;margin:0;font-size:14px}.upload-list{border:1px solid #e0e0e0;border-radius:8px;margin-top:20px;overflow:hidden}.upload-list-header{background:#f8f9fa;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;font-weight:500;display:flex}.upload-stats{gap:12px;font-size:12px;font-weight:400;display:flex}.stat-success{color:#28a745}.stat-error{color:#dc3545}.stat-pending{color:#6c757d}.upload-items{max-height:300px;margin:0;padding:0;list-style:none;overflow-y:auto}.upload-item{border-bottom:1px solid #e0e0e0;flex-direction:column;padding:12px 16px;display:flex}.upload-item:last-child{border-bottom:none}.upload-item-info{justify-content:space-between;align-items:center;gap:12px;display:flex}.upload-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.upload-item-size{color:#666;flex-shrink:0;font-size:12px}.upload-item-status{align-items:center;gap:8px;margin-top:8px;display:flex}.status-badge{border-radius:4px;padding:2px 8px;font-size:11px;font-weight:500}.status-badge.pending{color:#495057;background:#e9ecef}.status-badge.uploading{color:#004085;background:#cce5ff}.status-badge.success{color:#155724;background:#d4edda}.status-badge.error{color:#721c24;background:#f8d7da}.remove-item-btn{cursor:pointer;color:#666;background:#e9ecef;border:none;border-radius:50%;width:20px;height:20px;padding:0;font-size:14px;line-height:1}.remove-item-btn:hover{color:#333;background:#dee2e6}.upload-progress{background:#e9ecef;border-radius:2px;height:4px;margin-top:8px;overflow:hidden}.upload-progress-bar{background:#06c;border-radius:2px;height:100%;transition:width .3s}.upload-note{color:#856404;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin:16px 0 0;padding:12px;font-size:13px}.video-upload-modal .modal-footer{background:#f8f9fa;border-top:1px solid #e0e0e0;justify-content:flex-end;align-items:center;padding:16px 20px;display:flex}.video-upload-modal .cancel-btn{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;padding:10px 20px;font-size:14px}.video-upload-modal .cancel-btn:hover{background:#e9ecef}.course-preview{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.course-preview-loading,.course-preview-error{text-align:center;padding:40px;font-size:16px}.course-preview-error{color:#c00}.course-preview-header{align-items:center;gap:12px;margin-bottom:24px;display:flex}.course-preview-header h1{margin:0;font-size:24px}.read-only-badge{color:#fff;background:#f0ad4e;border-radius:4px;padding:4px 8px;font-size:12px;font-weight:600}.upload-videos-btn{color:#fff;cursor:pointer;background:#06c;border:none;border-radius:4px;margin-left:auto;padding:8px 16px;font-size:14px}.upload-videos-btn:hover{background:#05a}.course-preview-header .publish-all-btn{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:4px;padding:8px 16px;font-size:14px}.course-preview-header .publish-all-btn:hover{background:#218838}.course-documents{background:#f8f9fa;border-radius:8px;margin-bottom:24px;padding:16px}.course-documents h2{margin:0 0 12px;font-size:16px}.course-documents ul{margin:0;padding:0;list-style:none}.course-documents li{margin:4px 0}.course-documents a{color:#06c;text-decoration:none}.course-documents a:hover{text-decoration:underline}.course-tree{border-left:1px solid #e0e0e0}.course-tree-item{margin:4px 0}.course-tree-item-row{background:#fff;border-radius:4px;align-items:center;gap:8px;padding:8px 12px;display:flex}.course-tree-item-row:nth-child(odd){background:#f8f9fa}.item-name{flex:1;font-size:14px}.item-name.header{font-size:16px;font-weight:600}.item-name.clickable{font:inherit;color:#06c;cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.item-name.clickable:hover{text-decoration:underline}.item-type{color:#666;background:#e9ecef;border-radius:3px;padding:2px 6px;font-family:monospace;font-size:11px}.publish-section-btn{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:3px;margin-left:8px;padding:3px 8px;font-size:11px}.publish-section-btn:hover{background:#218838}.item-additional-info{color:#666;padding:4px 12px;font-size:12px;font-style:italic}.activity-preview-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.activity-preview-modal{background:#fff;border-radius:8px;flex-direction:column;width:95vw;max-width:1400px;height:90vh;display:flex;box-shadow:0 4px 24px #0003}.modal-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-header h2{align-items:center;gap:8px;margin:0;font-size:18px;display:flex}.version-badge,.mode-badge{border-radius:4px;padding:3px 8px;font-size:11px;font-weight:500}.version-badge{color:#fff;background:#28a745}.version-badge.draft{color:#000;background:#ffc107}.mode-badge{color:#fff;background:#6c757d}.close-btn{cursor:pointer;color:#666;background:0 0;border:none;padding:0;font-size:24px;line-height:1}.close-btn:hover{color:#000}.modal-controls{background:#f8f9fa;border-bottom:1px solid #e0e0e0;align-items:center;gap:12px;padding:12px 20px;display:flex}.modal-controls label{align-items:center;gap:8px;font-size:14px;display:flex}.modal-controls select{border:1px solid #ccc;border-radius:4px;padding:6px 10px;font-size:14px}.modal-controls button{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;padding:8px 16px;font-size:14px}.modal-controls button:hover:not(:disabled){background:#e9ecef}.modal-controls button:disabled{opacity:.5;cursor:not-allowed}.modal-controls .publish-btn{color:#fff;background:#28a745;border-color:#28a745}.modal-controls .publish-btn:hover:not(:disabled){background:#218838}.modal-body{flex:1;padding:0;overflow:hidden}.iframe-placeholder{text-align:center;color:#666;background:#f0f0f0;border:2px dashed #ccc;border-radius:8px;padding:40px}.iframe-placeholder p{margin:8px 0}.activity-iframe{background:#fff;border:none;width:100%;height:100%}*{box-sizing:border-box}body{background:#f5f5f5;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{min-height:100vh}.app-nav{z-index:100;background:#333;padding:12px 20px;position:sticky;top:0}.app-nav form{align-items:center;gap:12px;max-width:1200px;margin:0 auto;display:flex}.app-nav label{color:#fff;align-items:center;gap:8px;font-size:14px;display:flex}.app-nav input{border:none;border-radius:4px;width:320px;padding:8px 12px;font-family:monospace;font-size:14px}.app-nav button{color:#fff;cursor:pointer;background:#06c;border:none;border-radius:4px;padding:8px 20px;font-size:14px}.app-nav button:hover{background:#05a}.no-course{text-align:center;color:#666;padding:60px 20px}