:root{--primary: #6366f1;--primary-hover: #4f46e5;--primary-light: #e0e7ff;--success: #10b981;--success-hover: #059669;--warning: #f59e0b;--danger: #ef4444;--bg-main: #f8fafc;--bg-surface: #ffffff;--bg-sidebar: #ffffff;--text-main: #1e293b;--text-muted: #64748b;--border-color: #e2e8f0;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--font-sans: "Outfit", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "Fira Code", monospace}*{margin:0;padding:0;box-sizing:border-box}html{height:100%;height:100dvh}body{font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-main);height:100%;height:100vh;height:100dvh;overflow:hidden;-webkit-font-smoothing:antialiased}#app,.app-layout{display:flex;flex-direction:column;height:100%;height:100vh;height:100dvh;width:100%;overflow:hidden}.hidden{display:none!important}.app-header{height:60px;background:var(--bg-surface);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:100;box-shadow:var(--shadow-sm)}.header-left .logo-group{display:flex;align-items:center;gap:12px}.logo-icon{font-size:26px;background:#eef2ff;width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.logo-text h1{font-size:1.15rem;font-weight:700;color:#1e1b4b;letter-spacing:-.01em}.logo-text .sub-text{font-size:.75rem;color:var(--text-muted);font-weight:500}.mode-tabs{display:flex;background:#f1f5f9;padding:4px;border-radius:var(--radius-full);border:1px solid #e2e8f0}.mode-tab{border:none;background:transparent;padding:6px 18px;border-radius:var(--radius-full);font-size:.9rem;font-weight:600;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s ease}.mode-tab:hover{color:var(--text-main)}.mode-tab.active{background:var(--bg-surface);color:var(--primary);box-shadow:var(--shadow-sm)}.header-right{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-md);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .15s ease;border:1px solid transparent;font-family:inherit}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);box-shadow:0 4px 12px #6366f159;transform:translateY(-1px)}.btn-secondary{background:#f1f5f9;color:#334155;border-color:#cbd5e1}.btn-secondary:hover{background:#e2e8f0;color:#0f172a}.btn-outline{background:#fff;color:#475569;border-color:#cbd5e1}.btn-outline:hover{background:#f8fafc;color:#1e293b;border-color:#94a3b8}.btn-outline-danger{background:#fff;color:var(--danger);border-color:#fca5a5}.btn-outline-danger:hover{background:#fef2f2;border-color:var(--danger)}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:var(--success-hover);box-shadow:0 4px 12px #10b98159}.challenge-banner{background:#fff;border-bottom:1.5px solid #e2e8f0;box-shadow:0 2px 8px #0000000a;z-index:50;display:flex;flex-direction:column;transition:all .3s ease}.student-toolbar-compact{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:#fff;border-bottom:1px solid #f1f5f9;gap:10px;flex-wrap:wrap}.level-nav-group{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.student-level-dropdown{padding:5px 10px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;font-size:.88rem;font-weight:700;color:#1e293b;background:#f8fafc;cursor:pointer;outline:none;min-width:180px;max-width:240px;transition:all .2s ease}.student-level-dropdown:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px #6366f126}.action-pill-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.badge{padding:3px 8px;border-radius:var(--radius-full);font-size:.76rem;font-weight:700;letter-spacing:.02em}.badge-easy{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0}.badge-mid,.badge-medium{background:#e0f2fe;color:#0369a1;border:1px solid #bae6fd}.badge-hard{background:#fef3c7;color:#b45309;border:1px solid #fde68a}.badge-adv{background:#fce7f3;color:#be185d;border:1px solid #fbcfe8}.badge-info{background:#e0e7ff;color:#4338ca;border:1px solid #c7d2fe}.btn-check{font-size:.88rem;padding:6px 14px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-weight:800;border-radius:var(--radius-full);box-shadow:0 2px 8px #10b98147;border:none;display:inline-flex;align-items:center;gap:4px;transition:all .2s ease}.btn-check:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 12px #10b98166;transform:translateY(-1px)}.btn-collapse-top{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-full);background:#f1f5f9;color:#475569;border:1px solid #cbd5e1;font-size:.78rem;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}.btn-collapse-top .collapse-icon{font-size:.65rem;transition:transform .2s ease}.btn-collapse-top:hover{background:#eef2ff;color:#4f46e5;border-color:#818cf8;box-shadow:0 2px 6px #6366f126;transform:translateY(-1px)}.btn-collapse-top:hover .collapse-icon{transform:translateY(-2px)}.challenge-banner.banner-collapsed{max-height:0!important;opacity:0!important;overflow:hidden!important;pointer-events:none!important;border-bottom:none!important;padding:0!important;margin:0!important}.app-header.banner-collapsed{height:52px!important;min-height:52px!important;max-height:52px!important;padding:0 16px!important;border-bottom:2px solid #818cf8!important;box-shadow:0 3px 12px #6366f117!important;overflow:hidden!important;display:flex!important;align-items:center!important;justify-content:space-between!important}.app-header.banner-collapsed .student-auth-widget{display:none!important}.app-header.banner-collapsed .header-left,.app-header.banner-collapsed .header-center,.app-header.banner-collapsed .header-right{display:flex!important;align-items:center!important;height:100%!important;flex-wrap:nowrap!important}.app-header.banner-collapsed .header-left{flex-shrink:0}.app-header.banner-collapsed .logo-icon{width:32px;height:32px;font-size:18px}.app-header.banner-collapsed .logo-text h1{font-size:1.02rem}.app-header.banner-collapsed .logo-text .sub-text{display:none!important}.app-header.banner-collapsed .header-center{flex:1;justify-content:center;margin:0 10px;min-width:0;overflow:hidden}.app-header.banner-collapsed .header-right{flex-shrink:0;gap:8px}.header-mini-info{display:inline-flex;align-items:center;gap:8px;background:#f8fafcf2;border:1.5px solid #cbd5e1;padding:3px 12px;height:32px;border-radius:var(--radius-full);box-shadow:0 1px 4px #0000000a;animation:fadeInDown .22s cubic-bezier(.4,0,.2,1);max-width:100%;overflow:hidden}.header-mini-info .mini-level-icon{font-size:.95rem;flex-shrink:0}.header-mini-info .mini-level-text{font-size:.84rem;font-weight:800;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.header-mini-actions{display:flex;align-items:center;gap:8px;animation:fadeInDown .22s cubic-bezier(.4,0,.2,1);flex-shrink:0}.btn-mini-check-btn{font-size:.82rem!important;padding:4px 12px!important;height:32px!important;border-radius:var(--radius-full)!important;font-weight:800!important;white-space:nowrap!important}.btn-expand-pill{background:linear-gradient(135deg,#eef2ff,#e0e7ff)!important;color:#4338ca!important;border:1.5px solid #818cf8!important;font-size:.8rem!important;padding:4px 12px!important;height:32px!important;border-radius:var(--radius-full)!important;font-weight:800!important;cursor:pointer;display:inline-flex!important;align-items:center!important;gap:5px!important;box-shadow:0 2px 6px #6366f12e!important;transition:all .2s cubic-bezier(.4,0,.2,1)!important;white-space:nowrap!important}.btn-expand-pill .expand-icon{font-size:.65rem;transition:transform .2s ease}.btn-expand-pill:hover{background:linear-gradient(135deg,#e0e7ff,#c7d2fe)!important;color:#312e81!important;border-color:#6366f1!important;box-shadow:0 4px 12px #6366f14d!important;transform:translateY(-1px)}.btn-expand-pill:hover .expand-icon{transform:translateY(2px)}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mission-desc-card{max-height:250px;opacity:1;visibility:visible;padding:8px 16px;background:linear-gradient(90deg,#f8fafc,#fff);border-left:4px solid var(--primary);border-bottom:1px solid #e2e8f0;transition:max-height .28s cubic-bezier(.4,0,.2,1),opacity .22s ease,padding .28s ease,visibility .28s ease;overflow:hidden;position:relative}.mission-drawer-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:24px}.mission-tag{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.mission-tag-icon{font-size:.95rem}.mission-tag-label{font-size:.84rem;font-weight:800;color:#4338ca;white-space:nowrap}.challenge-text{flex:1;color:#0f172a;line-height:1.5;font-size:.9rem;font-weight:600;white-space:pre-wrap;word-break:break-word;letter-spacing:.01em}.btn-close-mission-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);background:#f1f5f9;color:#64748b;border:1px solid #cbd5e1;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .18s ease;flex-shrink:0;-webkit-user-select:none;user-select:none}.btn-close-mission-pill .close-icon{font-size:.65rem;transition:transform .18s ease}.btn-close-mission-pill:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626;transform:translateY(-1px)}.btn-close-mission-pill:hover .close-icon{transform:translateY(-2px)}.mission-desc-card.collapsed{max-height:0!important;opacity:0!important;visibility:hidden!important;padding-top:0!important;padding-bottom:0!important;border-top:none!important;border-bottom:none!important;border-left-width:0!important;margin:0!important;pointer-events:none!important}#btn-toggle-mission.active{background:#eef2ff!important;color:#4338ca!important;border-color:#818cf8!important;box-shadow:0 1px 4px #6366f126!important;font-weight:800!important}.hint-drawer{max-height:0;overflow:hidden;background:#fffbeb;border-top:1.5px dashed #fde68a;transition:max-height .3s cubic-bezier(0,1,0,1)}.hint-drawer:not(.collapsed){max-height:220px;transition:max-height .3s ease-in-out}.hint-inner{padding:12px 24px 14px}.hint-title{font-size:.9rem;font-weight:700;color:#b45309;margin-bottom:6px;display:flex;align-items:center;gap:6px}.hint-body{font-size:.92rem;color:#92400e;line-height:1.6;font-weight:500}.teacher-banner{background:#f8fafc;border-bottom:1.5px solid #cbd5e1;padding:10px 20px;display:flex;flex-direction:column;gap:8px;z-index:50;box-shadow:0 4px 12px #00000008}.teacher-banner.hidden{display:none}.teacher-main-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.teacher-level-controls{display:flex;align-items:center;gap:8px}.teacher-label{font-size:.88rem;font-weight:700;color:#475569;white-space:nowrap}.btn-del{color:#ef4444!important;border-color:#fca5a5!important}.btn-del:hover{background:#fee2e2!important;border-color:#ef4444!important}.teacher-target-switcher{display:flex;background:#e2e8f0;padding:3px;border-radius:var(--radius-full);gap:4px}.teacher-tab{display:flex;align-items:center;gap:6px;padding:6px 16px;border-radius:var(--radius-full);border:none;background:transparent;color:#64748b;font-size:.88rem;font-weight:700;cursor:pointer;transition:all .2s ease}.teacher-tab:hover{color:#1e293b}.teacher-tab.active{background:#fff;color:#4f46e5;box-shadow:0 2px 8px #0000001a}.teacher-tab#btn-tab-solution.active{color:#059669}.teacher-save-actions{display:flex;align-items:center;gap:8px}.btn-save{padding:6px 16px;font-size:.88rem;font-weight:700;background:linear-gradient(135deg,#10b981,#059669);border:none;box-shadow:0 2px 6px #10b9814d}.btn-save:hover{background:linear-gradient(135deg,#059669,#047857)}.btn-cancel{padding:6px 14px;font-size:.88rem;font-weight:600;color:#64748b;border-color:#cbd5e1}.btn-cancel:hover{background:#f1f5f9;color:#334155}.teacher-io-btns{display:flex;gap:6px;margin-left:6px;padding-left:8px;border-left:1px solid #e2e8f0}.teacher-target-indicator{display:flex;align-items:center;gap:8px;padding:6px 14px;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;transition:all .2s ease}.teacher-target-indicator.indicator-initial{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}.teacher-target-indicator.indicator-solution{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}.indicator-icon{font-size:1rem}.teacher-details-row{display:flex;gap:12px;align-items:center}.teacher-meta-inputs{display:flex;align-items:center;gap:8px;flex:1.2}.teacher-textareas{display:flex;align-items:center;gap:8px;flex:2}.input-text{flex:1;padding:6px 12px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;background:#fff;font-size:.88rem;color:#1e293b;outline:none;transition:border-color .2s ease}.input-text:focus{border-color:var(--primary)}.input-textarea{flex:1;padding:6px 10px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;background:#fff;font-size:.85rem;color:#1e293b;font-family:inherit;resize:none;height:34px;outline:none;transition:border-color .2s ease}.input-textarea:focus{border-color:var(--primary)}.teacher-actions{display:flex;gap:8px}.workspace-wrapper{flex:1;position:relative;overflow:hidden;touch-action:none}.blockly-container{width:100%;height:100%;position:absolute;top:0;left:0;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.blocklySvg{touch-action:none}.blocklyToolboxDiv{background-color:#fff!important;border-right:1px solid #e2e8f0;box-shadow:2px 0 8px #00000008;padding:8px 4px!important;width:90px!important}.blocklyTreeRow{padding:8px 6px!important;margin-bottom:4px!important;border-radius:8px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;transition:all .15s ease!important;cursor:pointer!important;height:auto!important}.blocklyTreeRow:hover{background-color:#f1f5f9!important;transform:scale(1.03)}.blocklyTreeSelected{background-color:#e0e7ff!important;box-shadow:inset 0 0 0 1.5px #6366f1}.blocklyTreeLabel{font-size:13px!important;font-weight:600!important;font-family:var(--font-sans)!important;color:#334155!important;padding:0!important;margin-top:4px!important}.blocklyTreeIcon{display:none!important}.blocklyFlyoutBackground{fill:#fff!important;fill-opacity:.96!important;stroke:#cbd5e1!important;stroke-width:1.5px!important}.blocklyTrash{display:none!important}html body .zelos-renderer.staestheme-theme .blocklyDropdownText,html body .zelos-renderer.staestheme-theme .blocklyDropdownText text,html body .zelos-renderer.staestheme-theme .blocklyDropdownText tspan,html body .zelos-renderer .blocklyDropdownText,html body .zelos-renderer .blocklyDropdownText text,html body .zelos-renderer .blocklyDropdownText tspan,html body .staestheme-theme .blocklyDropdownText,html body .blocklyDropdownText,html body text.blocklyDropdownText,html body .blocklyFieldDropdown text,.blocklyText,text.blocklyText,.blocklyDropdownText,.blocklyDropdownText text,.blocklyFieldDropdown text,.blocklyEditableText text,.blocklyEditableText>text,.blocklyNonEditableText text,.blocklyNonEditableText>text,.blocklyFieldDropdown,g.blocklyEditableText text,g.blocklyNonEditableText text,.blocklyHtmlInput{fill:#334155!important;color:#334155!important;font-weight:700!important}html body .zelos-renderer.staestheme-theme .blocklyDropdownText tspan,html body .zelos-renderer .blocklyDropdownText tspan,.blocklyDropdownText tspan,.blocklyText tspan,.blocklyDropdownText .blocklyText{fill:#334155!important;color:#334155!important}.blocklyEditableText>rect.blocklyFieldRect,.blocklyFieldDropdown>rect.blocklyFieldRect{fill:#ffffff38!important;fill-opacity:1!important;stroke:#0000001f!important;stroke-width:1px!important;rx:4px!important;ry:4px!important}.blocklyFieldTextInput>rect.blocklyFieldRect,.blocklyFieldNumber>rect.blocklyFieldRect{fill:#fff!important;fill-opacity:1!important;stroke:#00000026!important}.canvas-controls-group{position:absolute;bottom:calc(24px + env(safe-area-inset-bottom,0px));right:calc(18px + env(safe-area-inset-right,0px));display:flex;align-items:flex-end;gap:10px;z-index:90;pointer-events:none}.floating-zoom-dock{pointer-events:auto;background:#fffffff0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1.5px solid #cbd5e1;border-radius:var(--radius-full);box-shadow:0 4px 16px #0000001a;display:flex;flex-direction:column;align-items:center;padding:4px 3px;gap:4px}.zoom-btn{width:36px;height:36px;border-radius:var(--radius-full);border:none;background:transparent;color:#475569;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease}.zoom-btn:hover{background:#eef2ff;color:var(--primary);transform:scale(1.1)}.zoom-btn:active{transform:scale(.92)}.floating-actions-dock{pointer-events:auto;display:flex;flex-direction:column;align-items:flex-end;position:relative;gap:8px}.floating-fab-btn{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border:none;border-radius:var(--radius-full);padding:8px 14px;display:flex;align-items:center;gap:6px;font-weight:700;font-size:.85rem;box-shadow:0 4px 14px #6366f159;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);-webkit-user-select:none;user-select:none}.floating-fab-btn:hover{background:linear-gradient(135deg,#4f46e5,#4338ca);transform:translateY(-2px);box-shadow:0 6px 18px #6366f173}.floating-fab-btn .fab-icon{font-size:1rem;line-height:1}.floating-fab-btn.active{background:linear-gradient(135deg,#4338ca,#3730a3);box-shadow:inset 0 2px 4px #0003}.floating-tools-menu{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1.5px solid #cbd5e1;border-radius:var(--radius-lg);padding:6px;box-shadow:0 10px 25px #00000026;display:flex;flex-direction:column;gap:4px;min-width:105px;transition:all .22s cubic-bezier(.16,1,.3,1);transform-origin:bottom right}.floating-tools-menu.collapsed{opacity:0;pointer-events:none;transform:scale(.85) translateY(10px);visibility:hidden;max-height:0;padding:0;margin:0;border:none}.floating-tools-menu .ctrl-btn{width:100%;height:36px;border-radius:var(--radius-md);border:none;background:transparent;color:#334155;display:flex;align-items:center;gap:8px;padding:0 10px;font-size:.82rem;font-weight:700;cursor:pointer;transition:all .15s ease;white-space:nowrap}.floating-tools-menu .ctrl-btn:hover{background:#eef2ff;color:var(--primary);transform:translate(-2px)}.floating-tools-menu .ctrl-btn:active{transform:scale(.96)}.floating-tools-menu .btn-subtext{font-size:.8rem;font-weight:700}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;opacity:1;visibility:visible;transition:all .2s ease}.modal-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.modal-card{background:#fff;width:540px;max-width:90vw;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;overflow:hidden;animation:modalPop .25s cubic-bezier(.16,1,.3,1)}@keyframes modalPop{0%{transform:scale(.9) translateY(10px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color);gap:12px}.modal-header-icon{font-size:28px}.modal-header-title{flex:1;display:flex;align-items:center;gap:10px}.modal-header-title h3{font-size:1.15rem;font-weight:700;color:#1e293b}.score-badge{background:#dcfce7;color:#166534;font-size:.9rem;font-weight:800;padding:2px 10px;border-radius:var(--radius-full)}.modal-close-btn{background:transparent;border:none;font-size:24px;line-height:1;color:#94a3b8;cursor:pointer}.modal-close-btn:hover{color:#334155}.modal-body{padding:20px;display:flex;flex-direction:column;gap:16px;max-height:60vh;overflow-y:auto}.progress-wrap{display:flex;flex-direction:column;gap:6px}.progress-info{display:flex;justify-content:space-between;font-size:.85rem;font-weight:600;color:#64748b}.progress-bar-bg{height:10px;background:#f1f5f9;border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#6366f1,#10b981);border-radius:var(--radius-full);transition:width .5s ease-out}.feedback-summary{font-size:.95rem;font-weight:600;color:#1e293b;background:#f8fafc;padding:12px 16px;border-radius:var(--radius-md);border-left:4px solid var(--primary)}.diagnostics-section h4{font-size:.85rem;color:#475569;margin-bottom:8px}.diagnostics-list{list-style:none;display:flex;flex-direction:column;gap:6px}.diagnostics-list li{font-size:.85rem;padding:8px 12px;border-radius:var(--radius-md);display:flex;align-items:flex-start;gap:8px;line-height:1.4}.diagnostics-list li.diag-error{background:#fef2f2;color:#991b1b;border:1px solid #fee2e2}.diagnostics-list li.diag-warning{background:#fffbeb;color:#92400e;border:1px solid #fef3c7}.diagnostics-list li.diag-success{background:#f0fdf4;color:#166534;border:1px solid #dcfce7}.diagnostics-list li.diag-info{background:#f8fafc;color:#475569;border:1px solid #e2e8f0}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:14px 20px;background:#f8fafc;border-top:1px solid var(--border-color);gap:10px}.toast-container{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:300;pointer-events:none}.toast{background:#0f172ae6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;padding:10px 18px;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;box-shadow:var(--shadow-lg);animation:toastFade .25s ease-out}@keyframes toastFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.blocklySvg text,.blocklySvg tspan,.blocklySvg .blocklyText,.blocklySvg .blocklyEditableText text,.blocklySvg .blocklyEditableText tspan,.blocklySvg .blocklyNonEditableText text,.blocklySvg .blocklyNonEditableText tspan,.blocklySvg .blocklyFieldDropdown text,.blocklySvg .blocklyFieldDropdown tspan,.blocklySvg .blocklyFieldDropdown .blocklyText,.blocklySvg .blocklyDropdownText,.blocklySvg text.blocklyText,.zelos-renderer text,.zelos-renderer tspan,.geras-renderer text,.geras-renderer tspan,.blocklyFlyout text,.blocklyFlyout tspan{fill:#334155!important;color:#334155!important;font-family:Outfit,Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-weight:700!important}.blocklyFieldRect,.blocklyFieldDropdown>rect,.blocklyFieldDropdown rect,.blocklyEditableText:has(.blocklyDropdownIcon)>rect,.blocklyEditableText:has(.blocklyDropdownArrow)>rect,.blocklyEditableText:has(image)>rect{fill:#ffffff38!important;fill-opacity:.25!important;stroke:#33415559!important;stroke-width:1px!important;rx:4px!important;ry:4px!important}.blocklyEditableText:not(:has(.blocklyDropdownIcon)):not(:has(.blocklyDropdownArrow)):not(:has(image)):not(.blocklyFieldDropdown)>rect{fill:#fff!important;fill-opacity:1!important;stroke:#94a3b899!important;stroke-width:1.2px!important;rx:6px!important;ry:6px!important}.blocklyHtmlInput{background:#fff!important;color:#334155!important;border-radius:6px!important;font-family:Outfit,Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-weight:700!important;padding:2px 6px!important;box-shadow:0 2px 6px #0000001a!important}.blocklySvg .blocklyDropdownArrow,.blocklySvg .blocklyDropdownIcon,.blocklySvg .blocklyFieldDropdown polygon,.blocklySvg .blocklyFieldDropdown path,.blocklySvg polygon,.blocklyDropdownArrow{fill:#334155!important;stroke:#334155!important}.blocklySvg image,.blocklySvg image.blocklyDropdownIcon,.blocklySvg .blocklyFieldDropdown image{filter:brightness(0) saturate(100%) invert(24%) sepia(18%) saturate(963%) hue-rotate(178deg) brightness(96%) contrast(88%)!important;opacity:.9!important}.blocklyHtmlInput{color:#334155!important;font-family:Outfit,Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-weight:700!important}.blocklyDropDownDiv,.blocklyDropDownDiv *,.blocklyWidgetDiv,.blocklyWidgetDiv *,.blocklyMenu,.blocklyMenuItem,.blocklyMenuItem *,.blocklyMenuItemContent,.blocklyMenuItemDisabled,.goog-menu,.goog-menu *,.goog-menuitem,.goog-menuitem *,.goog-menuitem-content{color:#334155!important;fill:#334155!important;font-family:Outfit,Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-weight:700!important;font-size:13px!important}.blocklyMenuItemHighlight,.goog-menuitem-highlight{background-color:#f1f5f9!important;color:#0f172a!important}.blocklyMenuItemCheckbox{fill:#334155!important;color:#334155!important}.blocklyDisabled,.blocklyDisabled>.blocklyPath,.blocklyDisabled>.blocklyPathDark,.blocklyDisabled>.blocklyPathLight{fill-opacity:1!important;stroke-opacity:1!important;filter:none!important}.blocklyDisabled text,.blocklyDisabled tspan{fill:#334155!important;fill-opacity:1!important}.var-modal-card{width:520px;max-width:92vw}.var-delete-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.var-search-input{flex:1;padding:8px 12px;border-radius:var(--radius-md);border:1px solid var(--border-color);font-size:.9rem;outline:none;background:#fff;color:#1e293b;transition:border-color .2s ease}.var-search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f126}.var-select-actions{display:flex;gap:6px}.btn-sm{padding:6px 12px;font-size:.8rem}.btn-danger{background:#ef4444;color:#fff;border:none;font-weight:700}.btn-danger:hover{background:#dc2626}.btn-danger:disabled{background:#cbd5e1;cursor:not-allowed}.btn-warning{background:#f59e0b;color:#fff;border:1px solid #d97706;font-weight:700;transition:all .2s ease}.btn-warning:hover{background:#d97706;color:#fff}.text-warning{color:#d97706!important}.var-checkbox-list{max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#f8fafc}.var-checkbox-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.var-checkbox-item:hover{border-color:#fda4af;background:#fff1f2}.var-checkbox-item.selected{border-color:#f43f5e;background:#ffe4e6}.var-checkbox-label{display:flex;align-items:center;gap:10px;font-size:.92rem;font-weight:600;color:#1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;flex:1}.var-checkbox-input{width:18px;height:18px;cursor:pointer;accent-color:#f43f5e}.var-type-badge{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px;background:#fee2e2;color:#991b1b}.var-empty-hint{text-align:center;padding:28px;color:#94a3b8;font-size:.95rem;font-weight:600}.level-meta-modal-card{width:600px;max-width:92vw}.level-meta-modal-body{display:flex;flex-direction:column;gap:14px}.form-row-2col{display:flex;gap:12px}.flex-1{flex:1}.flex-2{flex:2}.form-field{display:flex;flex-direction:column;gap:6px}.form-field-label{font-size:.88rem;font-weight:700;color:#334155}.form-field-input,.form-field-select,.form-field-textarea{padding:8px 12px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;background:#fff;color:#1e293b;font-size:.9rem;font-family:inherit;outline:none;transition:all .2s ease}.form-field-input:focus,.form-field-select:focus,.form-field-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f126}.form-field-textarea{resize:vertical;line-height:1.5}.btn-meta{background:#fff!important;color:#475569!important;border:1.5px solid #cbd5e1!important;font-weight:700!important}.btn-meta:hover{background:#f1f5f9!important;color:#1e293b!important;border-color:#94a3b8!important}.auth-modal-card{max-width:440px!important;width:90%!important;border-top:4px solid var(--primary)}.auth-modal-body{display:flex;flex-direction:column;gap:14px}.auth-modal-desc{font-size:.92rem;color:#475569;line-height:1.55;margin:0}.auth-input-group{position:relative;display:flex;align-items:center}.auth-pwd-input{width:100%;padding-right:42px!important;font-size:1.05rem!important;letter-spacing:1px}.btn-toggle-pwd{position:absolute;right:8px;background:transparent;border:none;cursor:pointer;font-size:1.1rem;padding:4px 6px;border-radius:var(--radius-sm);transition:transform .15s ease;opacity:.75}.btn-toggle-pwd:hover{opacity:1;transform:scale(1.1)}.auth-error-msg{color:#e11d48;font-size:.88rem;font-weight:700;padding:6px 10px;background:#ffe4e6;border-radius:var(--radius-md);border:1px solid #fecdd3;animation:shake .35s ease}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.auth-pwd-manage-link{display:flex;justify-content:flex-end}.btn-text-link{background:transparent;border:none;color:var(--primary);font-size:.84rem;font-weight:600;cursor:pointer;padding:2px 4px;border-radius:var(--radius-sm);text-decoration:underline;text-underline-offset:3px;transition:color .2s ease}.btn-text-link:hover{color:#4338ca}.teacher-header-badge,.student-header-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:var(--radius-full);font-size:.88rem;font-weight:700}.teacher-header-badge{background:#fdf2f8;color:#be185d;border:1px solid #fbcfe8}.student-header-badge{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.local-db-banner{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(90deg,#fef3c7,#fef08a);border:1.5px solid #f59e0b;border-radius:var(--radius-md);padding:8px 14px;margin:6px 0;font-size:.9rem;font-weight:600;color:#78350f;animation:fadeIn .3s ease}.local-db-banner-actions{display:flex;align-items:center;gap:8px}.blocklyContextMenu{background:#fff!important;border-radius:var(--radius-md)!important;box-shadow:0 10px 25px -5px #00000026,0 8px 10px -6px #0000001a!important;border:1px solid #e2e8f0!important;padding:6px 0!important;min-width:140px!important;z-index:99999!important}.blocklyContextMenu .blocklyMenuItem{font-family:var(--font-sans)!important;font-size:.92rem!important;font-weight:500!important;color:#1e293b!important;padding:7px 18px!important;cursor:pointer!important;transition:all .12s ease!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;border-right:3px solid transparent!important}.blocklyContextMenu .blocklyMenuItemHighlight{background-color:#f0f9ff!important;color:#0284c7!important;border-right:3px solid #38bdf8!important}.blocklyContextMenu .blocklyMenuItemDisabled,.blocklyContextMenu .blocklyMenuItem.blocklyMenuItemDisabled,.blocklyContextMenu .blocklyMenuItem[aria-disabled=true],.blocklyContextMenu .blocklyMenuItemDisabled .blocklyMenuItemContent,.blocklyContextMenu .blocklyMenuItem[aria-disabled=true] .blocklyMenuItemContent{color:#94a3b8!important;cursor:not-allowed!important;background-color:transparent!important;border-right:3px solid transparent!important;opacity:.45!important;-webkit-user-select:none!important;user-select:none!important}.blocklyContextMenu .blocklyMenuItemDisabled:hover,.blocklyContextMenu .blocklyMenuItemDisabled.blocklyMenuItemHighlight,.blocklyContextMenu .blocklyMenuItem[aria-disabled=true]:hover,.blocklyContextMenu .blocklyMenuItem[aria-disabled=true].blocklyMenuItemHighlight{background-color:transparent!important;color:#94a3b8!important;border-right:3px solid transparent!important;cursor:not-allowed!important}.blocklyDropDownDiv{border-radius:8px!important;box-shadow:0 10px 25px -5px #00000026,0 8px 10px -6px #0000001a!important;border:1px solid #cbd5e1!important;z-index:99999!important}.blocklyDropDownDiv .blocklyMenuItem{font-family:var(--font-sans)!important;font-size:.95rem!important;font-weight:600!important;padding:6px 14px 6px 28px!important;position:relative!important;cursor:pointer!important;display:block!important}.blocklyDropDownDiv .blocklyMenuItemCheckbox{position:absolute!important;left:8px!important;top:50%!important;transform:translateY(-50%)!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:14px!important;height:14px!important}.modal-sort-card{max-width:680px;width:92%;max-height:85vh;display:flex;flex-direction:column}.sortable-level-list{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto;padding:4px}.sort-item-card{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#fff;border:1.5px solid #e2e8f0;border-radius:var(--radius-md);transition:all .15s ease;box-shadow:0 1px 3px #00000008}.sort-item-card:hover{border-color:#cbd5e1;background:#f8fafc}.sort-item-card.active{border-color:var(--primary);background:#f5f3ff;box-shadow:0 0 0 2px #6366f133}.sort-item-left{display:flex;align-items:center;gap:12px;flex:1;overflow:hidden}.sort-item-index{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;background:#e2e8f0;color:#334155;border-radius:var(--radius-full);font-weight:700;font-size:.85rem}.sort-item-card.active .sort-item-index{background:var(--primary);color:#fff}.sort-item-title{font-weight:600;color:#1e293b;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sort-item-actions{display:flex;align-items:center;gap:6px}.sort-item-actions .btn{padding:4px 10px;font-size:.85rem;font-weight:600}.staes-block-error>.blocklyPath{stroke:#ef4444!important;stroke-width:4px!important;stroke-dasharray:none!important;filter:drop-shadow(0 0 8px rgba(239,68,68,.8))!important;animation:staesPulseError 1.2s infinite alternate ease-in-out!important}.staes-block-warning>.blocklyPath{stroke:#f59e0b!important;stroke-width:3.5px!important;filter:drop-shadow(0 0 6px rgba(245,158,11,.75))!important}.staes-block-correct>.blocklyPath{stroke:#10b981!important;stroke-width:3px!important;filter:drop-shadow(0 0 4px rgba(16,185,129,.6))!important}@keyframes staesPulseError{0%{filter:drop-shadow(0 0 4px rgba(239,68,68,.5))}to{filter:drop-shadow(0 0 12px rgba(239,68,68,.95))}}.canvas-highlight-banner{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:100;background:#0f172ae6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#f8fafc;padding:8px 18px;border-radius:var(--radius-full);display:flex;align-items:center;gap:14px;font-size:.92rem;font-weight:500;box-shadow:0 10px 25px #00000040;border:1px solid rgba(255,255,255,.15);animation:fadeInDown .25s ease-out}.canvas-highlight-banner .badge-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.82rem;font-weight:700;margin:0 3px}.canvas-highlight-banner .tag-red{background:#ef4444;color:#fff}.canvas-highlight-banner .tag-green{background:#10b981;color:#fff}.canvas-highlight-banner #btn-clear-canvas-highlight,.canvas-highlight-banner .btn{background:#ffffff26!important;color:#fff!important;border:1px solid rgba(255,255,255,.35)!important;padding:4px 12px!important;font-size:.82rem!important;border-radius:var(--radius-full)!important;font-weight:600!important;transition:all .15s ease!important;cursor:pointer!important}.canvas-highlight-banner #btn-clear-canvas-highlight:hover,.canvas-highlight-banner .btn:hover{background:#ef4444!important;border-color:#ef4444!important;color:#fff!important;box-shadow:0 2px 8px #ef444480!important}.modal-solution-card{max-width:840px;width:94%;max-height:88vh;display:flex;flex-direction:column}.solution-modal-body{display:flex;flex-direction:column;gap:12px;padding:16px 20px;overflow:hidden;height:60vh}.solution-tabs-header{display:flex;gap:8px;border-bottom:2px solid #e2e8f0;padding-bottom:8px}.solution-tab-btn{background:transparent;border:none;font-family:var(--font-sans);font-size:.95rem;font-weight:600;color:#64748b;padding:8px 16px;border-radius:var(--radius-md);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .15s ease}.solution-tab-btn:hover{color:var(--primary);background:#f1f5f9}.solution-tab-btn.active{color:var(--primary);background:#eef2ff;box-shadow:inset 0 -2px 0 var(--primary)}.solution-tab-pane{flex:1;display:flex;flex-direction:column;overflow:hidden}.solution-preview-desc{font-size:.88rem;color:#64748b;margin-bottom:8px}.solution-preview-container{flex:1;width:100%;height:100%;min-height:380px;background:#f8fafc;border:1.5px solid #cbd5e1;border-radius:var(--radius-md);position:relative}.solution-diff-summary{padding:10px 14px;border-radius:var(--radius-md);font-size:.92rem;font-weight:600;margin-bottom:10px}.solution-diff-list-wrap{flex:1;overflow-y:auto;padding-right:4px}.modal-prestudy-card{max-width:900px;width:95%;max-height:90vh;display:flex;flex-direction:column;background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 40px #0003;border-top:4px solid var(--primary);overflow:hidden}.prestudy-modal-body{display:flex;flex-direction:column;gap:10px;padding:14px 20px;overflow:hidden;height:62vh}.prestudy-guide-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:var(--radius-md);font-size:.88rem;color:#1e40af;line-height:1.45}.prestudy-guide-banner .guide-banner-icon{font-size:1.25rem;flex-shrink:0}.prestudy-mission-box{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-md);font-size:.86rem}.prestudy-mission-box .box-tag{font-weight:800;color:#4338ca;white-space:nowrap}.prestudy-mission-box .box-text{color:#334155;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prestudy-preview-wrapper{flex:1;border:1.5px solid #cbd5e1;border-radius:var(--radius-md);background:#f8fafc;position:relative;overflow:hidden;min-height:240px}.prestudy-preview-container{width:100%;height:100%;position:absolute;top:0;left:0}.prestudy-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#f8fafc;border-top:1px solid #e2e8f0;gap:12px}.footer-hint-text{font-size:.84rem;color:#64748b;font-weight:600}.btn-start-challenge{font-size:1rem!important;font-weight:800!important;padding:8px 24px!important;background:linear-gradient(135deg,#10b981,#059669)!important;border:none!important;border-radius:var(--radius-full)!important;box-shadow:0 4px 12px #10b98159!important;display:inline-flex!important;align-items:center!important;gap:8px!important;transition:all .2s ease!important;white-space:nowrap!important}.btn-start-challenge:hover{background:linear-gradient(135deg,#059669,#047857)!important;box-shadow:0 6px 16px #10b98173!important;transform:translateY(-2px)!important}@media(max-width:1024px){.app-header{height:52px;padding:0 14px}.logo-text h1{font-size:1.05rem}.banner-top-bar{padding:6px 14px;gap:10px}.level-dropdown{min-width:170px;font-size:.88rem;padding:5px 10px}.banner-actions{gap:6px}.banner-actions .btn{padding:6px 12px;font-size:.82rem}.mission-desc-card{padding:6px 14px 8px}}@media(max-width:768px){.app-header{height:48px;padding:0 10px}.logo-group{gap:8px}.logo-icon{width:32px;height:32px;font-size:20px;border-radius:var(--radius-sm)}.logo-text h1{font-size:.95rem}.student-header-badge{display:none}.header-right .btn{padding:5px 10px;font-size:.8rem}.banner-top-bar{flex-direction:column;align-items:stretch;gap:8px;padding:8px 12px}.level-selector-wrap{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px}.level-nav-group{flex:1;display:flex;align-items:center;gap:4px}.level-dropdown{flex:1;min-width:0;font-size:.85rem;padding:5px 8px}.banner-actions{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.banner-actions #btn-check-answer{grid-column:span 2;padding:7px 10px;font-size:.85rem}.banner-actions #btn-collapse-top-bar{grid-column:span 1;padding:7px 6px;font-size:.78rem}.banner-actions .btn{padding:6px 4px;font-size:.78rem;justify-content:center;text-align:center;white-space:nowrap}.mission-desc-card{flex-direction:column;gap:6px;padding:6px 12px 8px;border-left-width:3px}.mission-desc-header{width:100%;display:flex;align-items:center;justify-content:space-between}.challenge-text{font-size:.92rem;line-height:1.5}.hint-inner{padding:10px 14px}.blocklyToolboxDiv{width:68px!important;padding:6px 2px!important}.blocklyTreeRow{padding:6px 2px!important;margin-bottom:2px!important}.blocklyTreeLabel{font-size:11px!important;margin-top:2px!important;letter-spacing:-.02em}.canvas-controls-group{bottom:calc(24px + env(safe-area-inset-bottom,0px));right:calc(14px + env(safe-area-inset-right,0px));gap:8px}.zoom-btn{width:34px;height:34px}.zoom-btn svg{width:17px;height:17px}.floating-fab-btn{padding:6px 12px;font-size:.8rem}.canvas-highlight-banner{width:calc(100% - 24px);max-width:480px;top:8px;padding:6px 12px;font-size:.82rem;gap:8px;justify-content:space-between}.modal-card{width:95vw;max-width:95vw;max-height:90vh;border-radius:var(--radius-md)}.modal-header{padding:12px 14px}.modal-header-icon{font-size:24px}.modal-header-title h3{font-size:1.02rem}.modal-body{padding:12px 14px;gap:12px;max-height:calc(90vh - 120px)}.modal-footer{padding:10px 14px;flex-wrap:wrap;gap:8px}.modal-footer .btn{flex:1;min-width:100px;justify-content:center;padding:8px 12px}.modal-solution-card{width:96vw;max-width:96vw;max-height:92vh}.solution-modal-body{padding:10px 12px;height:52vh}.solution-preview-container{min-height:200px}.solution-tab-btn{padding:6px 10px;font-size:.85rem}.modal-prestudy-card{width:96vw;max-width:96vw;max-height:92vh}.prestudy-modal-body{padding:8px 12px;height:54vh}.prestudy-guide-banner{padding:6px 10px;font-size:.78rem}.prestudy-mission-box{padding:4px 8px;font-size:.78rem}.prestudy-footer{padding:8px 12px;flex-direction:column;align-items:stretch}.prestudy-footer .btn-start-challenge{width:100%;justify-content:center}}@media(max-width:520px){.app-header{height:44px;padding:0 8px}.app-header.banner-collapsed .logo-text{display:none}.app-header.banner-collapsed .header-mini-info{padding:2px 8px;gap:4px}.app-header.banner-collapsed .header-mini-info .mini-level-text{font-size:.8rem}.app-header.banner-collapsed .header-mini-actions{gap:4px}.app-header.banner-collapsed .btn-check-text,.app-header.banner-collapsed .teacher-btn-text{display:none}.app-header.banner-collapsed .header-right .btn{padding:4px 8px;font-size:.76rem}.student-auth-widget{padding:2px 6px;gap:4px}.student-auth-widget .btn-student-auth{padding:3px 6px;font-size:.74rem}.sync-indicator{padding:2px 5px}.sync-indicator .sync-text{display:none}.student-toolbar-compact{padding:4px 8px;flex-direction:column;align-items:stretch;gap:4px}.level-nav-group{justify-content:space-between;width:100%}.student-level-dropdown{flex:1;min-width:0;max-width:none;font-size:.82rem;padding:4px 6px}.action-pill-group{width:100%;display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.action-pill-group .btn{padding:5px 2px;font-size:.72rem;justify-content:center}.action-pill-group .btn-collapse-top{display:inline-flex}.action-pill-group #btn-check-answer{grid-column:1 / -1;padding:7px 10px;font-size:.86rem}.mission-desc-card{padding:4px 8px;font-size:.8rem}.mission-tag-label{font-size:.76rem}.challenge-text{font-size:.82rem}.blocklyToolboxDiv{width:60px!important;padding:4px 1px!important}.blocklyTreeLabel{font-size:10px!important}.canvas-controls-group{bottom:calc(26px + env(safe-area-inset-bottom,0px));right:calc(12px + env(safe-area-inset-right,0px));gap:8px}.floating-fab-btn{width:36px;height:36px;padding:0;justify-content:center;border-radius:var(--radius-full)}.floating-fab-btn .fab-label{display:none}.floating-fab-btn .fab-icon{font-size:1.1rem}.floating-zoom-dock{padding:2px;gap:2px}.zoom-btn{width:32px;height:32px}.zoom-btn svg{width:16px;height:16px}.canvas-highlight-banner{flex-direction:column;text-align:center;border-radius:var(--radius-md);padding:6px 10px}.solution-tabs-header{flex-direction:column;gap:4px;border-bottom:1px solid #e2e8f0}.solution-tab-btn{width:100%;justify-content:center}}@media(max-width:380px){.logo-text h1{font-size:.82rem}.student-level-dropdown{font-size:.78rem}.blocklyToolboxDiv{width:54px!important}}@media(max-height:650px){.app-header{height:38px;padding:0 10px}.logo-icon{width:26px;height:26px;font-size:16px}.logo-text h1{font-size:.85rem}.banner-top-bar{padding:4px 10px;gap:6px}.level-dropdown{padding:3px 8px;font-size:.82rem}.banner-actions .btn{padding:4px 8px;font-size:.76rem}.mission-desc-card{padding:4px 10px 5px}.mission-desc-tag{padding:2px 6px;font-size:.75rem}.btn-toggle-mission{padding:2px 6px;font-size:.7rem}.challenge-text{font-size:.85rem;line-height:1.4}.canvas-controls-group{bottom:calc(16px + env(safe-area-inset-bottom,0px));right:calc(10px + env(safe-area-inset-right,0px));gap:6px}.zoom-btn{width:28px;height:28px}.zoom-btn svg{width:15px;height:15px}.floating-fab-btn{width:32px;height:32px;padding:0;justify-content:center}.floating-fab-btn .fab-label{display:none}.modal-card{max-height:94vh}.modal-body{max-height:calc(94vh - 100px);padding:10px 12px}.solution-modal-body{height:48vh}.solution-preview-container{min-height:160px}}.student-auth-widget{display:flex;align-items:center;gap:8px;background:#f8fafc;padding:4px 10px;border-radius:var(--radius-full);border:1px solid #e2e8f0}.btn-student-auth{font-weight:700;color:#334155;background:#fff;border:1px solid #cbd5e1;padding:4px 10px;border-radius:var(--radius-full);display:flex;align-items:center;gap:5px;font-size:.82rem}.btn-student-auth:hover{background:#eef2ff;border-color:#6366f1;color:#4f46e5}.btn-student-logout{padding:3px 8px;font-size:.75rem;border-radius:var(--radius-full)}.sync-indicator{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;padding:3px 8px;border-radius:var(--radius-full);background:#fff;border:1px solid #e2e8f0}.sync-dot{width:8px;height:8px;border-radius:50%}.sync-synced .sync-dot{background:#10b981;box-shadow:0 0 0 2px #10b98133}.sync-synced .sync-text{color:#059669}.sync-syncing .sync-dot{background:#3b82f6;animation:pulse-dot 1s infinite alternate}.sync-syncing .sync-text{color:#2563eb}.sync-offline .sync-dot{background:#94a3b8}.sync-offline .sync-text{color:#64748b}@keyframes pulse-dot{0%{transform:scale(.8);opacity:.6}to{transform:scale(1.2);opacity:1}}.auth-hint-banner{background:#f8fafc;border-left:4px solid #f59e0b;padding:8px 12px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.82rem;color:#475569;line-height:1.5;margin-top:8px}.modal-student-mgmt-card{width:94vw;max-width:1100px;max-height:90vh}.student-mgmt-body{display:flex;flex-direction:column;gap:16px;padding:16px 20px;max-height:calc(90vh - 120px);overflow-y:auto}.student-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.stat-card{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#fff,#f8fafc);padding:12px 18px;border-radius:var(--radius-md);border:1px solid #e2e8f0;box-shadow:var(--shadow-sm)}.stat-icon{font-size:28px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#eef2ff;border-radius:var(--radius-md)}.stat-val{font-size:1.35rem;font-weight:800;color:#1e1b4b}.stat-label{font-size:.78rem;font-weight:600;color:#64748b}.student-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.search-input-wrap{flex:1;min-width:240px}.student-search-input{width:100%;padding:8px 14px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;font-size:.88rem;outline:none;transition:border-color .2s ease}.student-search-input:focus{border-color:var(--primary)}.toolbar-actions{display:flex;align-items:center;gap:8px}.student-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-md);overflow-x:auto}.student-table{width:100%;border-collapse:collapse;text-align:left;font-size:.88rem}.student-table th{background:#f8fafc;padding:10px 14px;font-weight:700;color:#475569;border-bottom:1.5px solid #e2e8f0;white-space:nowrap}.student-table td{padding:10px 14px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.student-table tr:hover{background-color:#f8fafc}.student-code-badge{display:inline-block;background:#eef2ff;color:#4f46e5;font-weight:800;font-family:var(--font-mono);padding:3px 8px;border-radius:var(--radius-sm);border:1px solid #c7d2fe}.table-progress-wrap{display:flex;flex-direction:column;gap:4px;min-width:160px}.table-progress-bar{width:100%;height:8px;background:#e2e8f0;border-radius:var(--radius-full);overflow:hidden}.table-progress-fill{height:100%;background:#6366f1;border-radius:var(--radius-full);transition:width .3s ease}.table-progress-fill.full{background:#10b981}.table-progress-text{font-size:.76rem;font-weight:600;color:#64748b}.student-lvl-dots{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.btn-lvl-snapshot{border:1px solid transparent;padding:3px 6px;border-radius:6px;font-size:.76rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:3px;transition:all .15s ease}.btn-lvl-snapshot.lvl-passed{background:#ecfdf5;color:#065f46;border-color:#a7f3d0}.btn-lvl-snapshot.lvl-passed:hover{background:#d1fae5;transform:scale(1.05)}.btn-lvl-snapshot.lvl-partial{background:#fef3c7;color:#92400e;border-color:#fde68a}.btn-lvl-snapshot.lvl-partial:hover{background:#fde68a;transform:scale(1.05)}.btn-lvl-snapshot.lvl-pending{background:#f1f5f9;color:#64748b;border-color:#e2e8f0}.btn-lvl-snapshot.lvl-pending:hover{background:#e2e8f0;color:#1e293b}.table-time-text{font-size:.8rem;color:#64748b;white-space:nowrap}.table-action-cell{display:flex;align-items:center;gap:6px;justify-content:center}.student-table-empty{padding:30px;text-align:center;color:#64748b;font-size:.95rem}.modal-batch-add-card{width:90vw;max-width:580px}.batch-tabs-header{display:flex;background:#f1f5f9;padding:3px;border-radius:var(--radius-md);gap:4px;margin-bottom:14px}.batch-tab-btn{flex:1;padding:7px 12px;border-radius:var(--radius-sm);border:none;background:transparent;font-weight:700;color:#64748b;font-size:.85rem;cursor:pointer;transition:all .15s ease}.batch-tab-btn.active{background:#fff;color:#4f46e5;box-shadow:var(--shadow-sm)}.form-row-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.batch-preview-box{margin-top:12px;background:#f8fafc;border:1px dashed #cbd5e1;padding:10px 14px;border-radius:var(--radius-md);font-size:.85rem;color:#334155}.batch-preview-box .preview-title{font-weight:700;color:#475569;margin-right:6px}.batch-preview-box .preview-content{font-family:var(--font-mono);font-weight:600;color:#4f46e5}.modal-student-ws-card{width:92vw;max-width:900px}.student-ws-body{padding:12px 18px;display:flex;flex-direction:column;gap:10px}.student-ws-meta-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-md);font-size:.85rem}.student-ws-container{width:100%;height:50vh;min-height:320px;background:#f8fafc;border:1.5px solid #cbd5e1;border-radius:var(--radius-md);position:relative;overflow:hidden}.teacher-mode-body{background-color:var(--bg-main)}.teacher-header{border-bottom:1.5px solid #e2e8f0}.btn-student-portal{background:#eef2ff;color:#4f46e5;border:1px solid #c7d2fe;font-weight:700;padding:6px 14px;border-radius:var(--radius-full);display:inline-flex;align-items:center;gap:6px;transition:all .2s ease}.btn-student-portal:hover{background:#e0e7ff;border-color:#818cf8;transform:translateY(-1px)}.btn-save{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;font-weight:800;padding:6px 14px;border-radius:var(--radius-full);box-shadow:0 2px 6px #10b98140;display:inline-flex;align-items:center;gap:5px}.btn-save:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 10px #10b98159;transform:translateY(-1px)}.teacher-banner{background:#fff;border-bottom:1px solid #e2e8f0;box-shadow:0 1px 3px #0000000a}.teacher-toolbar-compact{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:8px}.toolbar-label{font-size:.84rem;font-weight:700;color:#475569;white-space:nowrap}.teacher-dropdown{padding:6px 10px;border-radius:var(--radius-md);border:1.5px solid #cbd5e1;background:#f8fafc;color:#1e293b;font-size:.88rem;font-weight:600;outline:none;max-width:240px;cursor:pointer;transition:border-color .2s ease}.teacher-dropdown:focus{border-color:var(--primary);background:#fff}.btn-group-pill{display:inline-flex;align-items:center;background:#f1f5f9;padding:2px;border-radius:var(--radius-full);border:1px solid #e2e8f0;gap:2px}.btn-icon-pill{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:transparent;color:#475569;font-size:.95rem;cursor:pointer;transition:all .15s ease}.btn-icon-pill:hover{background:#fff;color:#1e293b;box-shadow:0 1px 3px #0000001a;transform:scale(1.08)}.btn-icon-pill.btn-pill-danger:hover{background:#fee2e2;color:#dc2626}.segmented-control{display:inline-flex;background:#f1f5f9;padding:3px;border-radius:var(--radius-full);border:1px solid #e2e8f0;gap:4px}.seg-btn{padding:5px 12px;border-radius:var(--radius-full);border:none;background:transparent;font-size:.82rem;font-weight:700;color:#64748b;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .18s ease;white-space:nowrap}.seg-btn.active{background:#fff;color:#4f46e5;box-shadow:0 1px 4px #00000014}.seg-btn:hover:not(.active){color:#1e293b}.dropdown-wrap{position:relative}.dropdown-trigger{font-weight:700}.dropdown-menu{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid #cbd5e1;border-radius:var(--radius-md);box-shadow:0 10px 25px -5px #0000001f,0 8px 10px -6px #00000014;min-width:220px;padding:6px;z-index:1000;display:flex;flex-direction:column;gap:2px}.dropdown-section-title{font-size:.7rem;font-weight:800;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;padding:6px 10px 2px}.dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:none;background:transparent;color:#334155;font-size:.85rem;font-weight:600;text-align:left;cursor:pointer;transition:all .15s ease}.dropdown-item:hover{background:#f1f5f9;color:#0f172a}.dropdown-item.text-danger{color:#dc2626}.dropdown-item.text-danger:hover{background:#fef2f2}.dropdown-divider{height:1px;background:#f1f5f9;margin:4px 0}.teacher-target-indicator{display:flex;align-items:center;justify-content:center;gap:8px;padding:5px 14px;font-size:.82rem;font-weight:600;border-top:1px solid rgba(0,0,0,.04)}.indicator-initial{background:#f0fdf4;color:#166534;border-bottom:2px solid #86efac}.indicator-solution{background:#eff6ff;color:#1e40af;border-bottom:2px solid #93c5fd}@media(max-width:900px){.teacher-toolbar-compact{padding:8px 12px;gap:8px}.teacher-dropdown{max-width:180px;font-size:.82rem}.seg-btn{padding:4px 10px;font-size:.78rem}}@media(max-width:600px){.teacher-header{height:48px;padding:0 8px}.teacher-header .logo-text .sub-text{display:none}.teacher-header .logo-text h1{font-size:.9rem}.btn-student-portal .btn-label{display:none}.btn-student-portal{padding:4px 8px}.teacher-header .btn-save-text,.teacher-header .nav-text{display:none}.teacher-toolbar-compact{padding:6px 8px;flex-direction:column;align-items:stretch;gap:6px}.level-mgmt-group{justify-content:space-between;width:100%}.teacher-dropdown{flex:1;max-width:none}.target-switch-group,.segmented-control{width:100%}.seg-btn{flex:1;justify-content:center}.action-group{width:100%;justify-content:space-between}.action-group .btn{flex:1;justify-content:center}.dropdown-wrap{flex:1}.dropdown-wrap .dropdown-trigger{width:100%;justify-content:center}.dropdown-menu{right:auto;left:0;width:100%}.teacher-target-indicator{font-size:.75rem;padding:4px 8px;text-align:center}}.modal-guest-mgmt-card{width:92vw;max-width:960px;max-height:88vh}.guest-mgmt-body{display:flex;flex-direction:column;gap:16px;padding:16px 20px;max-height:calc(88vh - 120px);overflow-y:auto}.guest-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.ip-cell{display:flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-weight:600;color:#1e293b}.badge-ip-self{background:#e0e7ff;color:#4338ca;font-size:.72rem;padding:2px 6px;border-radius:4px;font-weight:700;border:1px solid #c7d2fe}.badge-active-live{background:#dcfce7;color:#15803d;font-size:.75rem;padding:2px 8px;border-radius:12px;display:inline-flex;align-items:center;gap:4px;font-weight:600}.badge-active-idle{background:#f1f5f9;color:#64748b;font-size:.75rem;padding:2px 8px;border-radius:12px;display:inline-flex;align-items:center;gap:4px}.practice-mode-control{display:inline-flex;align-items:center;gap:8px;background:#f8fafce6;padding:3px 6px 3px 10px;border-radius:var(--radius-full);border:1px solid #e2e8f0;box-shadow:0 1px 3px #0000000a}.mode-control-label{font-size:.82rem;font-weight:700;color:#475569;white-space:nowrap;letter-spacing:.02em}.mode-segmented-control{display:inline-flex;background:#e2e8f0;padding:2px;border-radius:var(--radius-full);gap:2px}.mode-segmented-control .seg-btn{border:none;background:transparent;color:#64748b;font-size:.8rem;font-weight:700;padding:4px 11px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .22s cubic-bezier(.16,1,.3,1);white-space:nowrap;line-height:1.2}.mode-segmented-control .seg-btn:hover:not(.active){color:#1e293b;background:#fff9}.mode-segmented-control #btn-mode-sequential.active{background:#fff;color:#0f766e;box-shadow:0 2px 5px #0f766e26}.mode-segmented-control #btn-mode-free.active{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 2px 7px #6366f159}.badge-mode-free{background:linear-gradient(135deg,#f59e0b,#ec4899);color:#fff!important;font-size:.76rem!important;font-weight:800!important;padding:3px 9px!important;border-radius:var(--radius-full)!important;box-shadow:0 2px 6px #f59e0b59!important;display:inline-flex;align-items:center;gap:4px;letter-spacing:.03em;animation:modePulse 2.8s infinite ease-in-out}@keyframes modePulse{0%,to{transform:scale(1);box-shadow:0 2px 6px #f59e0b59}50%{transform:scale(1.03);box-shadow:0 3px 10px #ec489973}}@media(max-width:900px){.practice-mode-control{display:none}}.sync-guest-unlocked .sync-dot{background:#f59e0b;box-shadow:0 0 0 2px #f59e0b40}.sync-guest-unlocked .sync-text{color:#b45309;font-weight:700}.canvas-lock-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:85;background:#0f172ab8;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:1;visibility:visible;transition:all .3s cubic-bezier(.16,1,.3,1)}.canvas-lock-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.lock-card{background:#fff;padding:36px 32px;border-radius:20px;max-width:460px;width:100%;text-align:center;box-shadow:0 20px 45px #0000004d,0 0 0 1px #ffffff1a;display:flex;flex-direction:column;align-items:center;animation:lockCardPop .35s cubic-bezier(.16,1,.3,1)}@keyframes lockCardPop{0%{transform:scale(.92) translateY(15px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.lock-icon-pulse{font-size:52px;line-height:1;margin-bottom:16px;filter:drop-shadow(0 4px 10px rgba(245,158,11,.35));animation:lockBounce 2.5s infinite ease-in-out}@keyframes lockBounce{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.05)}}.lock-title{font-size:1.45rem;font-weight:800;color:#1e293b;margin:0 0 10px;letter-spacing:-.01em}.lock-subtitle{font-size:.95rem;color:#64748b;line-height:1.6;margin:0 0 24px}.lock-subtitle strong{color:#0f766e}.lock-actions{width:100%;margin-bottom:16px}.btn-unlock-practice{width:100%;font-size:1.05rem;font-weight:700;padding:12px 24px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 14px #0f766e59;transition:all .22s ease}.btn-unlock-practice:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0f766e73}.lock-tip{font-size:.82rem;color:#94a3b8;background:#f8fafc;padding:8px 14px;border-radius:var(--radius-full);border:1px solid #f1f5f9}.auth-tabs-nav{display:flex;background:#f1f5f9;padding:4px;gap:4px;border-bottom:1px solid #e2e8f0}.auth-tab-btn{flex:1;border:none;background:transparent;padding:10px 14px;border-radius:8px;font-size:.88rem;font-weight:700;color:#64748b;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .2s ease}.auth-tab-btn:hover:not(.active){color:#1e293b;background:#fff9}.auth-tab-btn.active{background:#fff;color:#0f766e;box-shadow:0 2px 6px #00000014}.auth-tab-panel{display:block}.auth-tab-panel.hidden{display:none}.guest-passcode-box{background:linear-gradient(180deg,#fffbeb,#fff);border:1.5px solid #fde68a;border-radius:14px;padding:18px 16px}.guest-passcode-header{display:flex;align-items:center;gap:8px;margin-bottom:14px;color:#92400e;font-size:.9rem}.guest-key-icon{font-size:1.3rem}.auth-pwd-input{letter-spacing:.1em}.pwd-input-wrap{position:relative;display:flex;align-items:center;width:100%}.pwd-input-wrap .form-field-input{width:100%;padding-right:42px}.pwd-input-wrap .btn-toggle-pwd{position:absolute;right:8px;background:none;border:none;cursor:pointer;padding:6px;font-size:1rem;color:#64748b;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:background .15s}.pwd-input-wrap .btn-toggle-pwd:hover{background:#e2e8f0}.auth-modal-footer{padding:14px 20px;background:#f8fafc;border-top:1px solid #e2e8f0}.auth-footer-actions{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px}.auth-footer-actions.hidden{display:none!important}.warning-tone{background:#fef2f2!important;border-color:#fecaca!important;color:#991b1b!important}
