:root{--color-bg:#f7f8fa;--color-surface:#ffffff;--color-border:#e5e7eb;--color-muted:#6b7280;--color-text:#1f2937;--color-heading:#111827;--color-primary:#2563eb;--color-primary-contrast:#ffffff;--radius:10px;--shadow:0 2px 8px rgba(0,0,0,0.08);--space-1:6px;--space-2:10px;--space-3:16px;--space-4:24px}body,html{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Apple Color Emoji','Segoe UI Emoji'}h1,h2,h3{color:var(--color-heading)}p{color:var(--color-text)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1100px;margin:0 auto;padding:var(--space-4)}.btn{display:inline-block;padding:10px 16px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.btn:hover{box-shadow:var(--shadow)}.btn[disabled]{opacity:.6;cursor:not-allowed;box-shadow:none}.spinner{width:18px;height:18px;border:2px solid #cbd5e1;border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.toast{position:fixed;right:16px;bottom:16px;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow);border-radius:var(--radius);padding:10px 14px;color:var(--color-text);z-index:1000}.toast.success{border-color:#22c55e}.toast.error{border-color:#ef4444}input,select,textarea{border:1px solid var(--color-border);border-radius:var(--radius);padding:10px;background:var(--color-surface);color:var(--color-text)}label{color:var(--color-muted)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-3);box-shadow:var(--shadow)}.card h3{margin:0 0 var(--space-2) 0}.doc-frame{width:100%;min-height:70vh;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff}.guide-content{color:var(--color-text)}.guide-content h1,.guide-content h2,.guide-content h3,.guide-content h4,.guide-content h5,.guide-content h6{color:var(--color-heading);margin:0 0 10px 0}.guide-content p{margin:8px 0}.guide-content ol,.guide-content ul{margin:8px 0 12px 0;padding-left:22px}.guide-content ul{list-style-type:disc}.guide-content ol{list-style-type:decimal}.guide-content li{margin:4px 0}.guide-content code{background:#f3f4f6;padding:2px 6px;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.guide-content pre{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius);padding:10px;overflow:auto}.search-bar{display:flex;gap:8px;align-items:center;margin:12px 0 16px}.search-bar input[type=search]{flex:1;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.search-bar button{padding:10px 14px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer}.search-bar .btn-primary{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.search-hit{background:#fff7ed;outline:2px solid #fdba74}.search-overlay-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;z-index:9998}.search-overlay{position:fixed;top:10%;left:50%;transform:translateX(-50%);width:min(720px,92vw);background:#fff;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.25);display:none;z-index:9999}.search-overlay header{padding:12px 16px;border-bottom:1px solid #eee;display:flex;align-items:center;gap:8px}.search-overlay input{flex:1;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:1rem}.search-overlay .results{max-height:50vh;overflow:auto;padding:8px 0}.search-overlay .result-item{padding:10px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer}.search-overlay .result-item.active,.search-overlay .result-item:hover{background:#f7faff}.navbar .search-icon{margin-left:auto;cursor:pointer;padding:6px 8px;border-radius:6px}.navbar .search-icon:hover{background:rgba(0,0,0,.06)}.lesson-card{border:1px solid var(--color-border);padding:var(--space-3);margin:var(--space-2) 0;border-radius:var(--radius);background:var(--color-surface)}.lesson-card h3{margin:0 0 6px;font-size:1.1rem}.lesson-card.full p{margin:6px 0 10px}#lessonsGrid.empty-state,#projectsOutput.empty-state{margin:12px 0 16px}.grid-header{margin:12px 0 16px}.grid-header h2{margin:0;font-size:1.25rem;color:var(--text-primary,#222)}.week-badge{display:inline-block;background:var(--accent,#4a90e2);color:#fff;border-radius:999px;padding:4px 10px;font-size:.8rem;margin-right:8px}.lesson-card.highlight{outline:2px solid var(--accent,#4a90e2);box-shadow:0 0 0 3px rgba(74,144,226,.15)}.card-header{display:flex;align-items:center;gap:8px}.video-placeholder{background:#eee;height:200px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#777}.empty-state{background:#fafafa;border:1px dashed #cfcfcf;color:#666;padding:var(--space-4);border-radius:var(--radius);text-align:center}.empty-state h3{margin:0 0 8px 0;color:#444}.empty-state p{margin:0}#lessonsGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.week-cue{display:inline-block;padding:4px 8px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);font-size:.9rem}.week-cue.highlight{background:#dbeafe;border-color:#93c5fd;color:#1e3a8a}.lesson-card.full{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-3);box-shadow:var(--shadow)}.lesson-card.full h3{margin:0 0 var(--space-2) 0;font-size:18px;color:var(--color-heading)}.lesson-card.full p{margin:var(--space-1) 0 var(--space-2) 0;color:var(--color-text)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.8rem}.badge-late{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.muted{color:var(--color-muted);font-size:.9rem}.upload-row{display:flex;gap:8px;align-items:center;margin-top:8px}.content-preview{margin-top:6px;color:#555}.submission-row{border-top:1px solid var(--color-border);padding-top:8px;margin-top:8px}.lesson-card.full video{width:100%;border-radius:var(--radius);background:#000}.lesson-card.compact{display:flex;align-items:center;gap:12px}.lesson-card.compact p{margin:0;color:#555}body{font-family:Arial,sans-serif;margin:0;padding:20px;color:#333;background:linear-gradient(-45deg,#f0f0f0,#e0f7fa,#fce4ec,#fff3e0);background-size:400% 400%;animation:gradientShift 15s ease infinite}h1,h2,h3,h4,h5,h6{color:#2c3e50}header{text-align:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #3498db}header h1{margin:0;font-size:2em;color:#2c3e50}header .tagline{margin:5px 0 0 0;color:#7f8c8d;font-size:1em}footer{text-align:center;margin-top:50px;padding-top:20px;border-top:1px solid #ddd;color:#666;font-size:.9em}.navbar{display:flex;justify-content:center;gap:20px;margin-top:15px}.navbar a,nav a{margin-right:15px;text-decoration:none;color:#2c3e50;font-weight:500;transition:color .2s ease}.navbar a:hover,nav a:hover{text-decoration:underline;color:#1a73e8}button{margin-top:10px;padding:10px 16px;cursor:pointer;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-weight:500;transition:background-color .2s ease,transform .2s ease}button:hover{background-color:#2980b9;transform:scale(1.05)}#output,#projectsOutput,#usersOutput,.welcome-banner{margin-top:20px;padding:15px;border:1px solid #ddd;background:#fff;border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.05)}.welcome-banner{background:linear-gradient(135deg,#3498db,#2ecc71);color:#fff;text-align:center;font-size:1.1em;font-weight:700;margin-bottom:20px}table{width:100%;border-collapse:collapse;margin:1em 0;font-size:14px;background-color:#fff}table thead{background-color:#2c3e50;color:#fff}table td,table th{padding:12px;text-align:left;border-bottom:1px solid #ddd}table th{font-weight:700}table tbody tr:nth-child(2n){background-color:#f9f9f9}table tbody tr:hover{background-color:#eaf2f8;cursor:pointer;transition:background-color .2s ease}@media (max-width:600px){table,tbody,td,th,thead,tr{display:block}table thead{display:none}table td{border:none;padding:10px;position:relative}table td::before{content:attr(data-label);font-weight:700;display:block;margin-bottom:5px;color:#555}}.spinner{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:30px;height:30px;animation:spin 1s linear infinite;margin:10px auto}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.banner{background:#3498db;color:#fff;padding:15px;margin-bottom:15px;border-radius:5px;font-size:1.1em;font-weight:700;animation:slideDown .8s ease-out;box-shadow:0 2px 6px rgba(0,0,0,.1)}@keyframes slideDown{from{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}body.login-theme{margin:0;padding:0;font-family:'Segoe UI',sans-serif;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);color:#fff;animation:none;min-height:100vh}.login-container{display:flex;justify-content:center;align-items:center;height:100vh;backdrop-filter:blur(6px)}.login-box{display:flex;background-color:rgba(0,0,0,.8);padding:40px;border-radius:10px;width:100%;max-width:700px;box-shadow:0 8px 32px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.1)}.login-side{flex:1;padding-right:30px;border-right:1px solid rgba(255,255,255,.2);display:flex;flex-direction:column;justify-content:center}.login-side h3{margin-top:0;font-size:1.5em;color:#8ab4f8}.login-side p{line-height:1.6;color:#ccc}.login-form{flex:1;padding-left:30px}.login-header{text-align:center;margin-bottom:25px}.login-header h2{margin:0;color:#fff;font-size:1.3em}.user-icon{width:60px;height:60px;margin-bottom:15px;filter:brightness(1.1)}.input-group{margin-bottom:15px}.input-group label{display:block;margin-bottom:6px;font-weight:500;color:#ddd;font-size:.95em}.input-group input{width:100%;padding:10px;border:none;border-radius:4px;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2);transition:background .2s ease,border-color .2s ease}.input-group input:focus{outline:0;background:rgba(255,255,255,.15);border-color:rgba(138,180,248,.5)}.input-group input::placeholder{color:rgba(255,255,255,.5)}.options{display:flex;justify-content:space-between;align-items:center;font-size:.9em;margin-bottom:20px;gap:10px}.options label{color:#ddd;cursor:pointer;display:flex;align-items:center;gap:5px}.options label input{cursor:pointer}.options a{color:#8ab4f8;text-decoration:none;transition:color .2s ease}.options a:hover{color:#b0c4ff;text-decoration:underline}body.login-theme button{width:100%;padding:12px;background-color:#1a73e8;border:none;border-radius:4px;font-weight:700;font-size:1em;cursor:pointer;transition:background .3s ease,transform .2s ease;color:#fff}body.login-theme button:hover{background-color:#4285f4;transform:translateY(-2px);box-shadow:0 4px 12px rgba(26,115,232,.4)}#loginMessage{margin-top:15px;text-align:center;font-size:.95em}#loginMessage p{margin:0}@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}50%{transform:translateX(8px)}75%{transform:translateX(-8px)}}.login-box.error{animation:shake .5s;border-color:#ff6b6b;background-color:rgba(255,107,107,.1)}@media (max-width:700px){.login-box{flex-direction:column;max-width:100%;width:90%}.login-side{border-right:none;border-bottom:1px solid rgba(255,255,255,.2);padding:0 0 30px 0;margin-bottom:30px}.login-form{padding-left:0}}body.login-theme .login-form .input-group input,body.login-theme .login-form .input-group textarea,body.login-theme .login-form select{width:100%;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:4px;background:rgba(255,255,255,.06);color:#fff;box-sizing:border-box;transition:background .15s ease,border-color .15s ease}body.login-theme .login-form .input-group input:focus,body.login-theme .login-form select:focus,body.login-theme .login-form textarea:focus{outline:0;background:rgba(255,255,255,.11);border-color:rgba(138,180,248,.6)}.sign-in-btn,body.login-theme button.sign-in-btn{display:inline-block;width:100%;padding:12px 14px;background:#1a73e8;color:#fff;border:none;border-radius:6px;font-weight:700;letter-spacing:.2px;cursor:pointer;transition:background .18s ease,transform .12s ease,box-shadow .12s ease}.sign-in-btn:hover,body.login-theme button.sign-in-btn:hover{background:#2b88ff;transform:translateY(-2px);box-shadow:0 6px 18px rgba(42,137,255,.18)}.validation-message{font-size:.85em;margin-top:6px;color:#ff6b6b}.validation-message.success{color:#4ade80}.validation-message.error{color:#ff6b6b}.password-strength{margin-top:8px;height:6px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden}.password-strength .strength-bar{height:100%;width:0%;transition:width .3s ease,background-color .3s ease}.strength-text{font-size:.85em;margin-top:6px;color:rgba(255,255,255,.8)}body.login-theme .login-form select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,rgba(255,255,255,.25) 50%),linear-gradient(135deg,rgba(255,255,255,.25) 50%,transparent 50%);background-position:calc(100% - 18px) calc(1em + 2px),calc(100% - 13px) calc(1em + 2px);background-size:6px 6px,6px 6px;background-repeat:no-repeat}.input-group input.invalid{border-color:#ff6b6b!important;background:rgba(255,107,107,.06)!important}.input-group input.valid{border-color:#4ade80!important}