.blockly-wrapper{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff}.blockly-toolbar{display:flex;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);background:#f8fafc}.blockly-container{width:100%;height:480px}.blockly-container .blocklyToolboxDiv,.blockly-container .blocklyFlyout{border-right:1px solid var(--border)}.ask-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.ask-modal{background:#fff;border-radius:16px;padding:28px 32px;min-width:320px;max-width:420px;box-shadow:0 20px 60px #00000026;text-align:center;animation:scaleIn .2s ease}.ask-question{font-size:18px;font-weight:600;color:#1e293b;margin-bottom:20px;line-height:1.5}.ask-input{width:100%;padding:12px 16px;border:2px solid #e2e8f0;border-radius:10px;font-size:16px;outline:none;transition:border-color .2s;box-sizing:border-box}.ask-input:focus{border-color:#059669}.ask-submit{margin-top:16px;padding:10px 32px;font-size:15px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--primary: #6366f1;--primary-light: #a5b4fc;--primary-dark: #4f46e5;--orange: #f59e0b;--orange-light: #fef3c7;--green: #10b981;--green-light: #d1fae5;--pink: #ec4899;--pink-light: #fce7f3;--sky: #0ea5e9;--sky-light: #e0f2fe;--purple: #8b5cf6;--purple-light: #ede9fe;--bg: #f8fafc;--bg-warm: #fef7ed;--surface: #ffffff;--text: #1e293b;--text-muted: #94a3b8;--text-secondary: #64748b;--border: #e2e8f0;--border-light: #f1f5f9;--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--radius-xl: 28px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow: 0 4px 20px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 40px rgba(0, 0, 0, .12);--shadow-glow: 0 0 30px rgba(99, 102, 241, .25);--gradient-hero: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #ec4899 100%);--gradient-warm: linear-gradient(135deg, #f59e0b, #f97316);--gradient-cool: linear-gradient(135deg, #0ea5e9, #6366f1);--transition: .25s cubic-bezier(.4, 0, .2, 1);--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--text-3xl: 36px;--tracking-tight: -.02em;--leading-relaxed: 1.65}html{scroll-behavior:smooth}body{font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-dark)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes bounceIn{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.08)}70%{transform:scale(.95)}to{transform:scale(1);opacity:1}}@keyframes confetti-fall{0%{transform:translateY(-10px) rotate(0);opacity:1}to{transform:translateY(60px) rotate(360deg);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}.animate-in{animation:fadeInUp .5s ease-out both}.animate-in-delay-1{animation-delay:.1s}.animate-in-delay-2{animation-delay:.2s}.animate-in-delay-3{animation-delay:.3s}.container{max-width:1200px;margin:0 auto;padding:24px 32px}.container-sm{max-width:480px}.container-lg{max-width:1400px}button{cursor:pointer;border:none;border-radius:var(--radius-sm);padding:10px 24px;font-size:14px;font-weight:600;font-family:inherit;transition:all var(--transition);position:relative;overflow:hidden}button:active{transform:scale(.96)}.btn-primary{background:var(--gradient-cool);color:#fff;box-shadow:0 2px 12px #6366f14d}.btn-primary:hover{box-shadow:0 4px 20px #6366f173;transform:translateY(-1px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{background:#fff;color:var(--primary);border:2px solid var(--primary-light)}.btn-secondary:hover{background:var(--purple-light);border-color:var(--primary)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--border-light);color:var(--text)}.btn-success{background:#ecfdf5;color:#059669}.btn-success:hover{background:#d1fae5;transform:translateY(-1px)}.btn-warning{background:#fffbeb;color:#d97706}.btn-warning:hover{background:#fef3c7;transform:translateY(-1px)}.btn-danger{background:#fef2f2;color:#ef4444}.btn-danger:hover{background:#fee2e2;transform:translateY(-1px)}.btn-info{background:#eef2ff;color:#4f46e5}.btn-info:hover{background:#e0e7ff;transform:translateY(-1px)}.btn-large{padding:14px 36px;font-size:16px;border-radius:var(--radius)}.btn-small{padding:6px 14px;font-size:13px}.btn-icon{width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.navbar{position:sticky;top:0;z-index:100;background:#ffffffd9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);padding:0 32px;height:60px;display:flex;align-items:center;justify-content:space-between;transition:box-shadow var(--transition)}.navbar.scrolled{box-shadow:var(--shadow)}.navbar .logo{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:800;background:var(--gradient-hero);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.navbar .logo-icon{font-size:28px;-webkit-text-fill-color:initial;animation:float 3s ease-in-out infinite}.navbar .nav-links{display:flex;gap:8px;align-items:center}.navbar .nav-links a{font-size:14px;font-weight:500;color:var(--text-secondary);padding:8px 16px;border-radius:var(--radius-sm);transition:all var(--transition);position:relative;display:inline-flex;align-items:center;gap:6px}.navbar .nav-links a:hover,.navbar .nav-links a.active{color:var(--primary);background:var(--purple-light)}.user-avatar{width:34px;height:34px;border-radius:50%;background:var(--gradient-hero);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0}.navbar .notification-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;position:absolute;top:6px;right:6px}.hero{background:var(--gradient-hero);color:#fff;padding:64px 32px;text-align:center;border-radius:0 0 var(--radius-xl) var(--radius-xl);position:relative;overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 20% 50%,rgba(255,255,255,.15),transparent 50%),radial-gradient(circle at 80% 30%,rgba(255,255,255,.1),transparent 40%)}.hero h1{font-size:36px;font-weight:800;margin-bottom:12px;position:relative}.hero p{font-size:18px;opacity:.9;max-width:500px;margin:0 auto 24px;position:relative}.hero .floating-shapes{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.hero .shape{position:absolute;border-radius:50%;opacity:.15;animation:float 6s ease-in-out infinite}.hero .shape:nth-child(1){width:80px;height:80px;top:20%;left:10%;background:#fff;animation-delay:0s}.hero .shape:nth-child(2){width:50px;height:50px;top:60%;left:80%;background:#fff;animation-delay:1.5s}.hero .shape:nth-child(3){width:100px;height:100px;top:10%;right:15%;background:#ffffff4d;animation-delay:3s}.hero .shape:nth-child(4){width:60px;height:60px;bottom:15%;left:30%;background:#fff3;animation-delay:4.5s}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.section-title{font-size:22px;font-weight:700;color:var(--text)}.filter-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.filter-pill{padding:8px 18px;border-radius:999px;font-size:13px;font-weight:500;background:#fff;color:var(--text-secondary);border:1.5px solid var(--border);cursor:pointer;transition:all var(--transition)}.filter-pill:hover{border-color:var(--primary-light);color:var(--primary)}.filter-pill.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 8px #6366f14d}.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);padding:24px;transition:all var(--transition)}.card-hover:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--primary-light)}.card-clickable{cursor:pointer}.card-gradient{border:none;color:var(--text)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.course-card{background:#fff;border-radius:var(--radius);border:2px solid transparent;overflow:hidden;cursor:pointer;transition:all var(--transition);position:relative}.course-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}.course-card .card-banner{height:120px;display:flex;align-items:center;justify-content:center;font-size:48px;position:relative;overflow:hidden;color:#fff}.course-card .card-banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,transparent 60%,rgba(0,0,0,.05))}.course-card .card-body{padding:16px 20px 20px}.course-card .card-body h3{font-size:16px;font-weight:700;margin-bottom:6px}.course-card .card-body p{font-size:13px;color:var(--text-secondary);line-height:1.5}.course-card .card-badge{position:absolute;top:12px;right:12px;background:#ffffffe6;color:var(--text);font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}.course-card .ai-tag{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;color:#fff}.ai-image-recognition{border-color:var(--green)}.ai-image-recognition:hover{border-color:var(--green);box-shadow:0 0 0 3px var(--green-light)}.ai-image-recognition .card-banner{background:linear-gradient(135deg,#34d399,#10b981)}.ai-image-recognition .ai-tag{background:var(--green)}.ai-gesture-recognition{border-color:var(--orange)}.ai-gesture-recognition:hover{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-light)}.ai-gesture-recognition .card-banner{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.ai-gesture-recognition .ai-tag{background:var(--orange)}.ai-emotion-recognition{border-color:var(--pink)}.ai-emotion-recognition:hover{border-color:var(--pink);box-shadow:0 0 0 3px var(--pink-light)}.ai-emotion-recognition .card-banner{background:linear-gradient(135deg,#f472b6,#ec4899)}.ai-emotion-recognition .ai-tag{background:var(--pink)}.ai-speech-recognition{border-color:var(--sky)}.ai-speech-recognition:hover{border-color:var(--sky);box-shadow:0 0 0 3px var(--sky-light)}.ai-speech-recognition .card-banner{background:linear-gradient(135deg,#38bdf8,#0ea5e9)}.ai-speech-recognition .ai-tag{background:var(--sky)}.ai-text-generation{border-color:var(--purple)}.ai-text-generation:hover{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-light)}.ai-text-generation .card-banner{background:linear-gradient(135deg,#a78bfa,#7c3aed)}.ai-text-generation .ai-tag{background:var(--purple)}.ai-image-generation{border-color:var(--pink)}.ai-image-generation:hover{border-color:var(--pink);box-shadow:0 0 0 3px var(--pink-light)}.ai-image-generation .card-banner{background:linear-gradient(135deg,#f472b6,#db2777)}.ai-image-generation .ai-tag{background:var(--pink)}.ai-video-generation{border-color:var(--orange)}.ai-video-generation:hover{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-light)}.ai-video-generation .card-banner{background:linear-gradient(135deg,#fb923c,#ea580c)}.ai-video-generation .ai-tag{background:var(--orange)}.ai-scratch-game{border-color:var(--primary)}.ai-scratch-game:hover{border-color:var(--primary);box-shadow:0 0 0 3px var(--purple-light)}.ai-scratch-game .card-banner{background:linear-gradient(135deg,#818cf8,#6366f1)}.ai-scratch-game .ai-tag{background:var(--primary)}.ai-comprehensive,.ai-hardware_control{border-color:#14b8a6}.ai-comprehensive:hover,.ai-hardware_control:hover{border-color:#14b8a6;box-shadow:0 0 0 3px #ccfbf1}.ai-comprehensive .card-banner,.ai-hardware_control .card-banner{background:linear-gradient(135deg,#2dd4bf,#0d9488)}.ai-comprehensive .ai-tag,.ai-hardware_control .ai-tag{background:#14b8a6}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:6px;font-weight:600;font-size:13px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group textarea,.form-group select{width:100%;padding:12px 16px;border:2px solid var(--border);border-radius:var(--radius-sm);font-size:15px;font-family:inherit;outline:none;transition:all var(--transition);background:var(--surface)}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-muted)}.input-with-icon{position:relative}.input-with-icon .input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--text-muted)}.input-with-icon input{padding-left:42px}.stat-card{background:#fff;border-radius:var(--radius);border:1px solid var(--border);padding:24px;display:flex;align-items:center;gap:16px;transition:all var(--transition)}.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.stat-card .stat-icon{width:52px;height:52px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.stat-card .stat-value{font-size:28px;font-weight:800;line-height:1.2}.stat-card .stat-label{font-size:13px;color:var(--text-muted)}.steps{display:flex;gap:0;margin-bottom:28px}.step{flex:1;display:flex;align-items:center;gap:10px;padding:12px 0;position:relative;font-size:13px;font-weight:500;color:var(--text-muted)}.step:after{content:"";flex:1;height:3px;background:var(--border);border-radius:2px;margin-left:12px}.step:last-child:after{display:none}.step.active{color:var(--primary);font-weight:700}.step.active:after{background:var(--primary)}.step.done{color:var(--green)}.step.done:after{background:var(--green)}.step-num{width:28px;height:28px;border-radius:50%;background:var(--border);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;flex-shrink:0}.step.active .step-num{background:var(--primary)}.step.done .step-num{background:var(--green)}.toast{position:fixed;top:24px;right:24px;padding:14px 24px;border-radius:var(--radius-sm);color:#fff;font-size:14px;font-weight:600;z-index:9999;animation:slideInRight .3s ease-out;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:8px}.toast.success{background:var(--green)}.toast.error{background:#ef4444}.toast.info{background:var(--sky)}.skeleton{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}.skeleton-text{height:16px;width:70%;margin-bottom:8px}.skeleton-text.short{width:40%}.skeleton-card{height:200px;width:100%}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state .empty-icon{font-size:64px;margin-bottom:16px}.empty-state h3{font-size:18px;color:var(--text);margin-bottom:8px}.empty-state p{font-size:14px;margin-bottom:20px;max-width:360px;margin-left:auto;margin-right:auto}.success-check{animation:bounceIn .5s ease-out;display:inline-block;font-size:48px}.result-panel{margin-top:16px;padding:20px;background:var(--green-light);border:2px solid var(--green);border-radius:var(--radius);animation:slideUp .4s ease-out}.result-panel .label{font-size:12px;color:var(--text-muted);margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.result-panel .value{font-size:16px;font-weight:600;color:var(--text)}.result-panel.loading{background:#fefce8;border-color:#fde68a}.result-panel.error{background:#fef2f2;border-color:#fecaca}.camera-preview{border-radius:var(--radius);border:3px solid var(--border);width:100%;max-width:480px;display:block;transition:border-color var(--transition)}.camera-preview.active{border-color:var(--primary)}.blockly-wrapper{border:2px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff;transition:border-color var(--transition)}.blockly-wrapper:focus-within{border-color:var(--primary)}.blockly-toolbar{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);background:#f8fafc;gap:10px}.login-layout{display:flex;min-height:calc(100vh - 60px)}.login-brand{flex:1;background:var(--gradient-hero);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;color:#fff;position:relative;overflow:hidden}.login-brand .brand-icon{font-size:80px;animation:float 3s ease-in-out infinite}.login-brand h2{font-size:28px;font-weight:800;margin-top:16px}.login-brand p{font-size:16px;opacity:.85;margin-top:8px;text-align:center;white-space:nowrap}.login-form-area{flex:1;display:flex;align-items:center;justify-content:center;padding:40px}.login-form-box{width:100%;max-width:380px}.login-form-box h2{font-size:24px;font-weight:700;margin-bottom:24px}.role-cards{display:flex;gap:12px;margin-bottom:20px}.role-card{flex:1;padding:16px 12px;border:2px solid var(--border);border-radius:var(--radius-sm);text-align:center;cursor:pointer;transition:all var(--transition);background:#fff}.role-card:hover{border-color:var(--primary-light)}.role-card.selected{border-color:var(--primary);background:var(--purple-light);box-shadow:0 0 0 3px #6366f11a}.role-card .role-icon{font-size:28px;display:block;margin-bottom:4px}.role-card .role-label{font-size:12px;font-weight:600}.works-gallery{column-count:3;column-gap:16px}.works-gallery .work-item{break-inside:avoid;margin-bottom:16px;border-radius:var(--radius);overflow:hidden;background:#fff;border:1px solid var(--border);cursor:pointer;transition:all var(--transition)}.works-gallery .work-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.works-gallery .work-item img{width:100%;display:block}.works-gallery .work-item video{width:100%;display:block}.works-gallery .work-info{padding:12px 16px;font-size:13px}.work-delete-btn{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:6px;border:none;background:#ffffffe6;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5;transition:all .15s}.work-delete-btn:hover{background:#fef2f2;color:#ef4444}.search-bar{position:relative;max-width:360px}.search-bar input{width:100%;padding:12px 16px 12px 44px;border:2px solid var(--border);border-radius:999px;font-size:14px;outline:none;transition:all var(--transition);background:#fff}.search-bar input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.search-bar .search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--text-muted)}.progress-bar{height:8px;background:var(--border-light);border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--gradient-cool);border-radius:999px;transition:width .5s ease-out}.admin-tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:2px solid var(--border);flex-wrap:wrap}.admin-tab{padding:10px 20px;font-size:14px;font-weight:600;background:transparent;color:var(--text-muted);border-radius:var(--radius-sm) var(--radius-sm) 0 0;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all var(--transition);display:flex;align-items:center;gap:6px}.admin-tab:hover{color:var(--text);background:var(--border-light)}.admin-tab.active{color:var(--primary);border-bottom-color:var(--primary);background:var(--purple-light)}.pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:20px;padding:10px 16px;background:#f8fafc;border-radius:var(--radius-sm)}.pagination .btn-ghost{padding:5px 12px;font-size:12px;border:1px solid var(--border);border-radius:6px}.pagination .btn-ghost:hover:not(:disabled){background:#fff;border-color:var(--primary-light);color:var(--primary)}.pagination .btn-ghost:disabled{opacity:.4;cursor:not-allowed}.pagination .page-info{font-size:13px;color:var(--text-secondary);font-weight:500}.empty-state{text-align:center;padding:48px 20px;color:var(--text-muted)}.empty-state .empty-icon{font-size:36px;margin-bottom:12px;opacity:.4}.empty-state .empty-text{font-size:14px}.filter-select,.filter-input{padding:8px 14px;border:2px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;background:#fff;color:var(--text);transition:border-color var(--transition)}.filter-select:focus,.filter-input:focus{outline:none;border-color:var(--primary-light)}.table-striped tbody tr:nth-child(2n){background:#f8fafc}.table-striped tbody tr:hover{background:#eef2ff}.dialog-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0006;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease-out}.dialog{background:#fff;border-radius:var(--radius-lg);padding:32px;max-width:440px;width:90%;text-align:left;animation:scaleIn .2s ease-out;box-shadow:var(--shadow-lg);margin:auto}.dialog h3{margin-bottom:8px;font-size:18px}.dialog p{font-size:14px;color:var(--text-secondary);margin-bottom:24px}.dialog .dialog-actions{display:flex;gap:10px;justify-content:flex-end}.btn-ripple{position:relative;overflow:hidden}.btn-ripple:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff4d;border-radius:inherit;transform:scale(0);opacity:0;transition:transform .5s,opacity .5s}.btn-ripple:active:after{transform:scale(2.5);opacity:0;transition:0s}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}.user-menu{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);transition:background var(--transition)}.user-menu:hover{background:var(--border-light)}.user-name{font-size:var(--text-sm);font-weight:500;color:var(--text)}.dropdown{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--border);padding:6px;display:flex;flex-direction:column;gap:2px;animation:slideUp .2s ease-out;z-index:200;min-width:140px}.dropdown button{width:100%;justify-content:flex-start;padding:8px 12px;display:flex;align-items:center;gap:8px;font-size:var(--text-sm)}.work-item{position:relative}.work-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;color:#fff;opacity:0;transition:opacity var(--transition);z-index:1;pointer-events:none}.work-item:hover .work-overlay{opacity:1}.brand-icon-svg{color:#fff;animation:float 3s ease-in-out infinite;filter:drop-shadow(0 4px 12px rgba(0,0,0,.15))}.hero-icon{display:inline-block;vertical-align:middle;margin-right:8px;filter:drop-shadow(0 2px 8px rgba(255,255,255,.3));animation:float 3s ease-in-out infinite}.form-error{color:var(--text);font-size:var(--text-sm);margin-bottom:12px;padding:10px 14px;background:#fef2f2;border-left:3px solid #ef4444;border-radius:0 var(--radius-sm) var(--radius-sm) 0;display:flex;align-items:center;gap:6px;font-weight:500}.form-switch{margin-top:20px;text-align:center;font-size:var(--text-sm);color:var(--text-secondary)}.form-switch .btn-link{background:none;color:var(--primary);padding:0 4px;font-size:var(--text-sm);font-weight:600}.form-switch .btn-link:hover{color:var(--primary-dark)}.form-label{display:block;margin-bottom:8px;font-weight:600;font-size:var(--text-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.role-card svg{color:var(--text-muted);transition:color var(--transition)}.role-card:hover svg{color:var(--primary)}.role-card.selected svg{color:var(--primary)}.mobile-menu-btn{display:none!important}h1,h2,h3,h4{line-height:1.25}h1{font-size:var(--text-2xl);font-weight:800}h2{font-size:var(--text-xl);font-weight:700}h3{font-size:var(--text-lg);font-weight:600}p{margin-bottom:12px;line-height:var(--leading-relaxed)}.page-title{font-size:var(--text-2xl);font-weight:800;margin-bottom:20px}.section-title{font-size:var(--text-xl);font-weight:700}.progress-header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px;padding:24px;background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border)}.progress-ring-container{position:relative;width:72px;height:72px;flex-shrink:0}.progress-ring-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:var(--primary)}.continue-card{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;margin-bottom:24px;background:linear-gradient(135deg,#ede9fe,#fce7f3);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition)}.continue-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.continue-icon{width:48px;height:48px;background:var(--gradient-hero);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.level-tabs{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px}.level-tab{display:flex;flex-direction:column;align-items:center;padding:12px 20px;border-radius:var(--radius);background:#fff;border:2px solid var(--border);cursor:pointer;transition:all var(--transition);min-width:100px;font-family:inherit}.level-tab:hover{border-color:var(--level-color, var(--primary-light))}.level-tab.active{border-color:var(--level-color, var(--primary));background:var(--level-bg, var(--purple-light));box-shadow:0 0 0 3px #6366f11a}.level-tab-num{font-size:20px;font-weight:800;color:var(--level-color, var(--primary))}.level-tab-name{font-size:13px;font-weight:600;color:var(--text);margin-top:2px}.level-tab-progress{font-size:11px;color:var(--text-muted);margin-top:4px}.course-path{display:flex;flex-direction:column;gap:0;padding-left:32px}.path-item{display:flex;align-items:stretch;gap:16px}.path-connector{display:flex;flex-direction:column;align-items:center;width:32px;flex-shrink:0}.path-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0;z-index:1;transition:all var(--transition)}.path-item.done .path-dot{background:var(--green);color:#fff}.path-item.current .path-dot{background:var(--primary);color:#fff;box-shadow:0 0 0 4px var(--purple-light)}.path-item.locked .path-dot{background:var(--border);color:var(--text-muted)}.path-line{width:2px;flex:1;min-height:24px;background:var(--border);margin:4px 0}.path-item.done .path-line{background:var(--green)}.path-card{flex:1;background:#fff;border:2px solid var(--border);border-radius:var(--radius);padding:14px 18px;margin-bottom:12px;transition:all var(--transition)}.path-item.current .path-card{border-color:var(--primary);box-shadow:0 0 0 3px #6366f114}.path-item.locked .path-card{opacity:.5}.path-item:not(.locked):hover .path-card{transform:translate(4px);border-color:var(--primary-light)}.path-card-tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600}.course-header{margin-bottom:24px}.course-level-badge{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;color:#fff;font-weight:800;font-size:16px}.course-type-badge{display:inline-block;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:600;background:var(--purple-light);color:var(--purple)}.course-layout{display:grid;grid-template-columns:380px 1fr;gap:24px;align-items:start}.course-guide-panel{position:sticky;top:84px}.course-interact-panel{min-height:400px}.interact-section{background:#fff;border:2px solid var(--border);border-radius:var(--radius-lg);padding:24px;margin-bottom:16px;animation:slideUp .3s ease-out}.lesson-guide{background:#fff;border:2px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.guide-steps{display:flex;gap:0;padding:16px 20px 0}.guide-dot{flex:1;height:4px;background:var(--border);border-radius:2px;transition:background var(--transition)}.guide-dot.done{background:var(--green)}.guide-dot.active{background:var(--primary)}.guide-card{padding:28px 24px 24px;text-align:center}.guide-image{font-size:64px;margin-bottom:12px}.guide-step-num{font-size:12px;color:var(--primary);font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.guide-title{font-size:20px;font-weight:700;margin-bottom:10px}.guide-text{font-size:15px;color:var(--text-secondary);line-height:1.7}.guide-nav{display:flex;justify-content:space-between;padding:16px 20px;border-top:1px solid var(--border);background:var(--bg)}.guide-complete{text-align:center;padding:32px 20px;border-top:1px solid var(--border)}.ai-result-card{border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.ai-result-header{padding:10px 16px;background:var(--purple-light);font-size:13px;font-weight:700;color:var(--purple);display:flex;align-items:center;gap:6px}.ai-result-body{padding:20px}.ai-compare{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--bg);border-bottom:1px solid var(--border);font-size:13px}.ai-compare-col{flex:1;min-width:0}.ai-compare-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-weight:600}.ai-compare-text{font-weight:600;color:var(--text);word-break:break-word}.ai-compare-col:last-child .ai-compare-text{color:var(--primary)}.ai-compare-divider{font-size:20px;color:var(--text-muted);flex-shrink:0}.ai-text-bubble{background:var(--bg);border-radius:var(--radius);padding:20px;font-size:16px;line-height:1.7;white-space:pre-wrap}.ai-labels{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}.ai-label-tag{display:inline-block;padding:8px 18px;background:var(--green-light);color:var(--green);border-radius:999px;font-weight:700}.celebration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;background:#0006;display:flex;align-items:center;justify-content:center;animation:fadeIn .3s ease-out}.celebration-card{background:#fff;border-radius:var(--radius-xl);padding:40px 48px;text-align:center;animation:bounceIn .5s ease-out;box-shadow:var(--shadow-lg);position:relative;z-index:1}.celebration-trophy{font-size:72px;margin-bottom:12px;animation:float 2s ease-in-out infinite}.celebration-particle{position:fixed;top:-40px;z-index:0;animation:confetti-fall 2s ease-out forwards;pointer-events:none}@media (max-width: 1024px){.hero h1{font-size:28px}.hero p{font-size:15px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.works-gallery{column-count:2}.container{padding:16px 20px}}@media (max-width: 768px){.hero{padding:40px 20px}.hero h1{font-size:24px}.login-layout{flex-direction:column}.login-brand{padding:32px 20px;min-height:auto}.login-brand .brand-icon{font-size:48px}.login-brand h2{font-size:22px}.card-grid{grid-template-columns:1fr}.works-gallery{column-count:1}.steps{flex-wrap:wrap}.step{flex:auto;min-width:50%}.navbar{padding:0 16px}.navbar .nav-links{display:none}.navbar .nav-links.open{display:flex;flex-direction:column;position:absolute;top:60px;left:0;right:0;background:#fff;padding:12px;border-bottom:1px solid var(--border);box-shadow:var(--shadow-lg);gap:4px}.navbar .nav-links a{padding:10px 14px;font-size:15px;width:100%}.mobile-menu-btn{display:flex!important}.container{padding:12px 16px}.course-layout{grid-template-columns:1fr;gap:16px}.course-guide-panel{position:static}.progress-header{flex-direction:column;text-align:center}.path-card{padding:10px 14px}.stat-card{padding:16px}.stat-card .stat-value{font-size:24px}}
