.excel-uploader{width:100%}.upload-card{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 8px #0000001a}.upload-card h2{font-size:1.5rem;margin-bottom:.5rem;color:#333}.file-input-wrapper{margin-bottom:1.5rem}.file-input-wrapper input[type=file]{display:none}.file-label{display:inline-block;padding:.75rem 1.5rem;background:#f0f0f0;border:2px dashed #ccc;border-radius:4px;cursor:pointer;transition:all .2s;color:#666}.file-label:hover{background:#e8e8e8;border-color:#999}.upload-button{padding:.75rem 2rem;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background .2s}.upload-button:hover:not(:disabled){background:#0056b3}.upload-button:disabled{background:#ccc;cursor:not-allowed}.result{margin-top:1.5rem;padding:1rem;border-radius:4px;font-weight:500}.status-message{margin-top:1rem;padding:.75rem;background:#f8f9fa;border-radius:4px;color:#666;font-size:14px;line-height:1.5}.build-publish{width:100%}.build-publish-card{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 8px #0000001a}.build-publish-card h2{font-size:1.5rem;margin-bottom:.5rem;color:#333}.description{color:#666;margin-bottom:2rem;line-height:1.6}.actions{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.action-group{flex:1;min-width:200px;display:flex;flex-direction:column}.build-button,.publish-button{padding:.75rem 2rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:all .2s}.build-button{background:#007bff;color:#fff}.build-button:hover:not(:disabled){background:#0056b3}.publish-button{background:#28a745;color:#fff}.publish-button:hover:not(:disabled){background:#218838}.build-button:disabled,.publish-button:disabled{background:#ccc;cursor:not-allowed}.result{margin-top:1.5rem;padding:1rem;border-radius:4px}.result.success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.result.error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.result h3{margin-bottom:.5rem}.result pre{background:#0000000d;padding:.5rem;border-radius:4px;overflow-x:auto;font-size:.875rem;margin-top:.5rem}.prompts-list{padding:2rem}.prompts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.prompts-header h2{margin:0;font-size:1.5rem}.prompts-stats{color:#666;font-size:.9rem}.prompts-filters{margin-bottom:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px}.filters-form{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.filter-input,.filter-select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.filter-input{flex:1;min-width:200px}.filter-select{min-width:120px}.filter-button{padding:.5rem 1rem;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.filter-button:hover{background:#0056b3}.filter-button-secondary{background:#6c757d}.filter-button-secondary:hover{background:#545b62}.prompts-error{padding:1rem;background:#f8d7da;color:#721c24;border-radius:4px;margin-bottom:1rem}.prompts-loading{padding:2rem;text-align:center;color:#666}.prompts-table-container{overflow-x:auto;margin-bottom:1rem}.prompts-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a}.prompts-table thead{background:#f8f9fa}.prompts-table th{padding:.75rem;text-align:left;font-weight:600;border-bottom:2px solid #dee2e6;font-size:.9rem}.prompts-table td{padding:.75rem;border-bottom:1px solid #dee2e6;font-size:.9rem}.prompts-table tbody tr:hover{background:#f8f9fa}.level-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.8rem;font-weight:500}.level-beginner{background:#d4edda;color:#155724}.level-intermediate{background:#fff3cd;color:#856404}.level-advanced{background:#f8d7da;color:#721c24}.tags-list{display:flex;gap:.25rem;flex-wrap:wrap}.tag-chip{display:inline-block;padding:.125rem .5rem;background:#e9ecef;border-radius:12px;font-size:.75rem;color:#495057}.tag-more{color:#6c757d;font-size:.75rem}.edit-button{padding:.25rem .75rem;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.edit-button:hover{background:#218838}.prompts-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem}.pagination-button{padding:.5rem 1rem;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.pagination-button:hover:not(:disabled){background:#0056b3}.pagination-button:disabled{background:#ccc;cursor:not-allowed}.pagination-info{color:#666;font-size:.9rem}.batch-actions-bar{display:flex;align-items:center;gap:1rem;padding:1rem;background:#e7f3ff;border-radius:4px;margin-bottom:1rem}.selected-count{font-weight:500;color:#0056b3}.batch-toggle-button,.clear-selection-button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.batch-toggle-button{background:#007bff;color:#fff}.batch-toggle-button:hover{background:#0056b3}.clear-selection-button{background:#6c757d;color:#fff}.clear-selection-button:hover{background:#545b62}.batch-actions-form{background:#f8f9fa;padding:1rem;border-radius:4px;margin-bottom:1rem}.batch-actions-form h4{margin:0 0 .75rem;font-size:1rem}.batch-form-row{display:flex;gap:.75rem;align-items:center}.batch-input{flex:1;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.batch-update-button{padding:.5rem 1.5rem;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;white-space:nowrap}.batch-update-button:hover:not(:disabled){background:#218838}.batch-update-button:disabled{background:#ccc;cursor:not-allowed}.prompts-table tbody tr.selected{background:#e7f3ff}.cover-uploader-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:2rem}.cover-uploader-modal{background:#fff;border-radius:8px;width:100%;max-width:600px;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.cover-uploader-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #dee2e6}.cover-uploader-header h3{margin:0;font-size:1.25rem}.cover-uploader-content{padding:1.5rem}.cover-uploader-error{padding:1rem;background:#f8d7da;color:#721c24;border-radius:4px;margin-bottom:1rem}.cover-uploader-upload-area{text-align:center;padding:3rem 1rem;border:2px dashed #ddd;border-radius:8px}.upload-button{padding:.75rem 2rem;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;margin-bottom:1rem}.upload-button:hover{background:#0056b3}.upload-hint{color:#666;font-size:.9rem;margin:0}.cover-uploader-preview{text-align:center}.preview-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.preview-info p{margin:0;font-weight:500}.change-button{padding:.5rem 1rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.change-button:hover{background:#545b62}.preview-image-container{display:flex;justify-content:center;align-items:center;min-height:300px;background:#f8f9fa;border-radius:8px;padding:1rem}.preview-image{max-width:100%;max-height:500px;object-fit:contain;border-radius:4px;box-shadow:0 2px 4px #0000001a}.cover-uploader-footer{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem;border-top:1px solid #dee2e6}.cancel-button,.upload-submit-button{padding:.5rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.upload-submit-button{background:#28a745;color:#fff}.upload-submit-button:hover:not(:disabled){background:#218838}.upload-submit-button:disabled{background:#ccc;cursor:not-allowed}.prompt-edit-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:2rem}.prompt-edit-modal{background:#fff;border-radius:8px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.prompt-edit-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #dee2e6}.prompt-edit-header h2{margin:0;font-size:1.25rem}.prompt-edit-error{padding:1rem 1.5rem;background:#f8d7da;color:#721c24;border-bottom:1px solid #f5c6cb}.prompt-edit-content{flex:1;overflow-y:auto;padding:1.5rem}.form-section{margin-bottom:2rem}.form-section h3{margin:0 0 1rem;font-size:1.1rem;color:#333;border-bottom:2px solid #007bff;padding-bottom:.5rem}.form-row{margin-bottom:1rem}.form-row label{display:block;margin-bottom:.5rem;font-weight:500;color:#555;font-size:.9rem}.form-input,.form-textarea,.form-select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;font-family:inherit}.form-textarea{resize:vertical;min-height:100px}.tags-editor{width:100%}.tags-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.tag-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .75rem;background:#e9ecef;border-radius:16px;font-size:.85rem;color:#495057}.tag-remove{background:none;border:none;cursor:pointer;color:#6c757d;font-size:1.2rem;line-height:1;padding:0;width:1.2rem;height:1.2rem;display:flex;align-items:center;justify-content:center;border-radius:50%}.tag-remove:hover{background:#dc3545;color:#fff}.tag-input-group{display:flex;gap:.5rem}.tag-input{flex:1}.tag-add-button{padding:.5rem 1rem;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.tag-add-button:hover{background:#218838}.prompt-edit-footer{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem;border-top:1px solid #dee2e6}.cancel-button,.save-button{padding:.5rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.save-button{background:#007bff;color:#fff}.save-button:hover:not(:disabled){background:#0056b3}.cover-input-group{display:flex;gap:.5rem}.cover-input-group .form-input{flex:1}.upload-cover-button{padding:.5rem 1rem;background:#17a2b8;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;white-space:nowrap}.upload-cover-button:hover{background:#138496}.prompt-edit-loading{padding:3rem;text-align:center;color:#666}.tracks-editor{padding:2rem}.tracks-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.tracks-header h2{margin:0;font-size:1.5rem}.save-button{padding:.5rem 1.5rem;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.save-button:hover:not(:disabled){background:#218838}.save-button:disabled{background:#ccc;cursor:not-allowed}.tracks-loading,.tracks-error{padding:2rem;text-align:center}.tracks-error{background:#f8d7da;color:#721c24;border-radius:4px;margin-bottom:1rem}.tracks-list{display:flex;flex-direction:column;gap:1rem}.track-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;overflow:hidden}.track-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;cursor:pointer;background:#f8f9fa;border-bottom:1px solid #dee2e6}.track-header:hover{background:#e9ecef}.track-title-group h3{margin:0 0 .25rem;font-size:1.1rem}.track-desc{margin:0;color:#666;font-size:.9rem}.track-meta{display:flex;align-items:center;gap:1rem}.module-count{color:#666;font-size:.9rem}.lock-badge{padding:.25rem .5rem;background:#fff3cd;color:#856404;border-radius:4px;font-size:.8rem}.expand-icon{color:#666;font-size:.9rem}.track-content{padding:1rem 1.5rem}.track-actions{margin-bottom:1rem}.add-module-button{padding:.5rem 1rem;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.add-module-button:hover{background:#0056b3}.modules-list{display:flex;flex-direction:column;gap:.75rem}.module-card{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.module-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;cursor:pointer;background:#fff;border-bottom:1px solid #dee2e6}.module-header:hover{background:#f8f9fa}.module-title-group{flex:1;display:flex;flex-direction:column;gap:.25rem}.module-title-input,.module-desc-input{border:none;background:transparent;font-size:.95rem;padding:.25rem 0;width:100%}.module-title-input{font-weight:500}.module-desc-input{font-size:.85rem;color:#666}.module-meta{display:flex;align-items:center;gap:.75rem}.prompt-count{color:#666;font-size:.85rem}.delete-module-button{padding:.25rem .75rem;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.delete-module-button:hover{background:#c82333}.module-content{padding:1rem}.prompts-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.prompt-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:4px}.prompt-id{font-family:monospace;font-size:.85rem;color:#666;min-width:80px}.prompt-title{flex:1;font-size:.9rem}.prompt-actions{display:flex;gap:.25rem}.move-button,.remove-button{padding:.25rem .5rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.move-button{background:#6c757d;color:#fff}.move-button:hover{background:#545b62}.remove-button{background:#dc3545;color:#fff}.remove-button:hover{background:#c82333}.add-prompt-section{padding-top:.75rem;border-top:1px solid #dee2e6}.prompt-select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.taxonomy-manager{padding:2rem}.taxonomy-header{margin-bottom:1.5rem}.taxonomy-header h2{margin:0;font-size:1.5rem}.taxonomy-loading,.taxonomy-error{padding:1rem;border-radius:4px;margin-bottom:1rem}.taxonomy-loading{text-align:center;color:#666}.taxonomy-error{background:#f8d7da;color:#721c24;display:flex;justify-content:space-between;align-items:center}.taxonomy-error button{padding:.25rem .75rem;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.taxonomy-add-form{background:#f8f9fa;padding:1.5rem;border-radius:8px;margin-bottom:2rem}.taxonomy-add-form h3{margin:0 0 1rem;font-size:1.1rem}.form-row{display:flex;gap:.75rem;align-items:center}.form-input{flex:1;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.add-button{padding:.5rem 1.5rem;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;white-space:nowrap}.add-button:hover{background:#218838}.taxonomy-list{display:flex;flex-direction:column;gap:1.5rem}.taxonomy-group{background:#fff;border:1px solid #dee2e6;border-radius:8px;padding:1rem 1.5rem}.group-title{margin:0 0 1rem;font-size:1.1rem;color:#333;border-bottom:2px solid #007bff;padding-bottom:.5rem}.group-items{display:flex;flex-direction:column;gap:.5rem}.taxonomy-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#f8f9fa;border-radius:4px}.item-content{display:flex;align-items:center;gap:1rem}.item-l2{font-weight:500;color:#333}.item-cover{font-size:.85rem;color:#666}.delete-button{padding:.25rem .75rem;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.delete-button:hover{background:#c82333}.empty-message{text-align:center;color:#666;padding:2rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.login-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;padding:3rem;width:100%;max-width:400px}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{margin:0 0 .5rem;font-size:1.75rem;color:#333}.login-header p{margin:0;color:#666;font-size:.9rem}.login-form{display:flex;flex-direction:column;gap:1.5rem}.login-error{padding:.75rem;background:#f8d7da;color:#721c24;border-radius:4px;font-size:.9rem;text-align:center}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group input{padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.login-button{padding:.75rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:transform .2s,box-shadow .2s}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.login-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.admin-key-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.admin-key-modal{background:#fff;border-radius:8px;width:100%;max-width:500px;box-shadow:0 4px 6px #0000001a}.admin-key-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #dee2e6}.admin-key-modal-header h2{margin:0;font-size:1.25rem}.close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px}.close-button:hover{background:#f8f9fa}.admin-key-form{padding:1.5rem}.admin-key-error{padding:.75rem;background:#f8d7da;color:#721c24;border-radius:4px;margin-bottom:1rem;font-size:.9rem}.form-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.form-group label{font-weight:500;color:#333;font-size:.9rem}.form-group input{padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.form-group input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.form-hint{margin:0;font-size:.85rem;color:#666}.admin-key-modal-footer{display:flex;justify-content:flex-end;gap:1rem}.cancel-button,.verify-button{padding:.5rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.cancel-button{background:#6c757d;color:#fff}.cancel-button:hover{background:#545b62}.verify-button:hover:not(:disabled){background:#0056b3}.verify-button:disabled{background:#ccc;cursor:not-allowed}.sidebar{width:250px;background:#2c3e50;color:#fff;height:100vh;display:flex;flex-direction:column;position:fixed;left:0;top:0;box-shadow:2px 0 4px #0000001a}.sidebar-header{padding:1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header h2{margin:0 0 .25rem;font-size:1.25rem;font-weight:600}.sidebar-subtitle{margin:0;font-size:.85rem;color:#ffffffb3}.sidebar-nav{flex:1;padding:1rem 0;overflow-y:auto}.sidebar-item{width:100%;padding:.75rem 1.5rem;background:none;border:none;color:#fffc;text-align:left;cursor:pointer;display:flex;align-items:center;gap:.75rem;transition:background-color .2s,color .2s;font-size:.9rem}.sidebar-item:hover{background:#ffffff1a;color:#fff}.sidebar-item.active{background:#667eea33;color:#fff;border-left:3px solid #667eea}.sidebar-icon{font-size:1.1rem;width:1.5rem;text-align:center}.sidebar-label{flex:1}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;min-height:100vh;background:#f5f7fa}.app-content{flex:1;margin-left:250px;display:flex;flex-direction:column}.app-header{background:#fff;padding:1rem 2rem;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000000d}.header-left h1{margin:0;font-size:1.5rem;color:#333}.header-right{display:flex;align-items:center;gap:1rem}.status-badge{padding:.5rem 1rem;border-radius:4px;font-size:.85rem;font-weight:500}.status-badge.verified{background:#d4edda;color:#155724}.verify-button,.logout-button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.verify-button{background:#007bff;color:#fff}.verify-button:hover{background:#0056b3}.logout-button{background:#6c757d;color:#fff}.logout-button:hover{background:#545b62}.warning-banner{background:#fff3cd;color:#856404;padding:1rem 2rem;border-bottom:1px solid #ffeaa7;text-align:center;font-weight:500}.app-main{flex:1;overflow-y:auto}.main-content{padding:2rem}.tabs,.tab{display:none}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
