:root{--bg-app: #0f172a;--bg-panel: #1e293b;--bg-elevated: #334155;--bg-input: #0f172a;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--border: #334155;--border-light: #1e293b;--brand-navy: #1e3a8a;--brand-blue: #2563eb;--brand-sky: #60a5fa;--brand-gold: #f59e0b;--brand-pink: #ec4899;--brand-purple: #7c3aed;--brand-green: #22c55e;--toolbar-bg: #1e293b;--toolbar-text: #ffffff;--toolbar-border: #334155;--sidebar-bg: #0a1628;--sidebar-hover: #1e293b;--sidebar-active: #1e3a8a;--sidebar-text: #e2e8f0;--bg: var(--bg-app);--panel: var(--bg-panel);--panel-2: var(--bg-panel);--text: var(--text-primary);--muted: var(--text-secondary);--accent: #6366f1;--accent-hover: #4f46e5;--ok: #22c55e;--bad: #ef4444;--out: #d1fae5;--err: #fecaca}[data-theme=light]{--bg-app: #f0f9ff;--bg-panel: #ffffff;--bg-elevated: #e0f2fe;--bg-input: #ffffff;--text-primary: #1e293b;--text-secondary: #475569;--text-muted: #94a3b8;--border: #cbd5e1;--border-light: #e2e8f0;--toolbar-bg: #1e293b;--toolbar-text: #ffffff;--toolbar-border: #334155;--sidebar-bg: #e0f2fe;--sidebar-hover: #bae6fd;--sidebar-active: #2563eb;--sidebar-text: #1e293b;--panel: #ffffff;--panel-2: #ffffff;--out: #166534;--err: #b91c1c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 16px;background:var(--toolbar-bg);color:var(--toolbar-text);border-bottom:1px solid var(--toolbar-border)}.toolbar .project-name__label,.toolbar .save-status,.toolbar .project-name__label:hover{color:#fff}.toolbar .hamburger,.toolbar .btn--ghost{background:#ffffff14;border-color:#ffffff38;color:#fff}.toolbar .hamburger:hover,.toolbar .btn--ghost:hover:not(:disabled){background:#ffffff29;border-color:#ffffff73}.toolbar-logo{display:flex;align-items:center;text-decoration:none;flex-shrink:0}.toolbar-logo__img{height:36px;width:auto;object-fit:contain;background:transparent;border-radius:0;padding:0}.btn--portfolio-pill{background:#f59e0b;color:#1e293b;font-weight:700;font-size:13px;padding:6px 16px;border-radius:20px;border:none;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;white-space:nowrap;transition:background .15s;font-family:inherit}.btn--portfolio-pill:hover{background:#fbbf24;text-decoration:none}.btn--portfolio-pill--setup{background:transparent;color:#f59e0b;border:1px solid #f59e0b;border-radius:20px}.btn--portfolio-pill--setup:hover{background:#f59e0b22}.toolbar-theme-toggle{font-size:1.1rem;padding:6px 10px;border-color:#fff3;color:#fff}.toolbar-theme-toggle:hover{border-color:#fff6;background:#ffffff1a}.toolbar__controls{display:flex;align-items:center;gap:12px}.lang-picker{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.lang-picker select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:14px}.btn{border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;background:var(--panel-2);color:var(--text)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--ghost:hover:not(:disabled){border-color:var(--accent)}.btn--run{background:var(--accent);border-color:var(--accent);color:#fff}.btn--run:hover:not(:disabled){background:var(--accent-hover)}.workspace{flex:1;display:flex;flex-direction:row;min-height:0}.editor-pane{flex:1 1 0;min-width:0;display:flex;flex-direction:column;overflow:hidden}.editor-host{flex:1;min-height:0;overflow:hidden}.editor-host .editor-cm{height:100%}.editor-pane .cm-editor{height:100%;font-size:14px}.editor-pane .cm-scroller{font-family:ui-monospace,SF Mono,Menlo,monospace}.resize-handle{flex:none;width:4px;cursor:col-resize;background:var(--border)}.resize-handle:hover{background:var(--accent)}.output-pane{flex:none;min-width:280px;background:var(--panel);display:flex;flex-direction:column;min-height:0}.output-pane-inner{flex:1;display:flex;flex-direction:column;min-height:0;padding:12px 14px;gap:8px}.output-header{display:flex;align-items:center;justify-content:space-between;flex:none}.output-body{flex:1;min-height:0;display:flex;flex-direction:column}.console-title{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--brand-blue);font-weight:700}.btn-popout{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer}.btn-popout:hover:not(:disabled){border-color:var(--accent)}.btn-popout:disabled{opacity:.45;cursor:not-allowed}.output{flex:1;overflow:auto;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13px}.output--muted{color:var(--muted)}.output--error{color:var(--err)}.status-badge{display:inline-flex;gap:6px;align-items:center;font-weight:700;font-size:12px;padding:4px 10px;border-radius:999px;margin-bottom:10px}.status-badge--bad{background:#2d0a0a;color:#fca5a5;border:1px solid #ef4444;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;margin-bottom:12px}.status-badge--ok{background:#052e16;color:#86efac;border:1px solid #22c55e;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;margin-bottom:12px}.status-meta{font-weight:500;opacity:.85}.stream{margin:0 0 8px;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SF Mono,Menlo,monospace}.stream--out{color:var(--out)}.stream--err{color:var(--err)}.status-badge--running{background:var(--panel);color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;margin-bottom:12px}.stdin-field{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--brand-gold);border-radius:4px;outline:none;width:min(28ch,100%);padding:2px 6px;margin:2px 0;caret-color:var(--brand-gold);box-shadow:0 0 0 3px #f59e0b2e}.stdin-field::placeholder{color:var(--muted);opacity:.8}.output-image{display:block;max-width:100%;background:#fff;border-radius:6px;margin:0 0 10px}.py-progress{width:min(320px,100%);margin:0 0 12px}.py-progress__label{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;font-weight:600;margin-bottom:6px}.py-progress__track{position:relative;height:6px;border-radius:999px;background:var(--border);overflow:hidden}.py-progress__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand-blue),var(--brand-sky));transition:width .3s ease}.py-progress__track--moving .py-progress__fill{position:absolute;width:35%;animation:py-progress-slide 1.2s ease-in-out infinite}@keyframes py-progress-slide{0%{left:-35%}to{left:100%}}.stream-note{color:var(--muted);font-size:12px;margin:0 0 8px}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--muted);border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 820px){.workspace{flex-direction:column}.resize-handle{display:none}.output-pane{width:auto!important;flex:1 1 45%;min-width:0;border-top:1px solid var(--border)}.editor-pane{flex:1 1 55%}}.auth-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:16px}.auth-loading{color:var(--muted);font-size:16px;letter-spacing:.5px}.auth-error{background:#ef444426;color:var(--err);border:1px solid rgba(239,68,68,.35);border-radius:8px;padding:8px 10px;font-size:13px}.auth-note{margin:2px 0 0;text-align:center;font-size:12px;color:var(--muted)}.btn--logout{font-weight:600}.output--preview{display:flex;flex-direction:column;gap:8px;padding:8px;overflow:hidden}.output--preview iframe{flex:1;border-radius:6px}.output--skulpt{display:flex;flex-direction:column;gap:10px;padding:8px;overflow:auto}.skulpt-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.turtle-canvas{width:500px;max-width:100%;height:400px;background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden}.skulpt-output{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;color:var(--out)}.skulpt-note{font-size:12px;color:var(--muted)}.skulpt-note--err{color:var(--err)}.input-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}.input-dialog{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:24px;width:100%;max-width:480px;box-shadow:0 20px 60px #00000080}.input-dialog__header{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.input-dialog__icon{font-size:1.5rem;flex-shrink:0}.input-dialog__title{font-size:1.1rem;font-weight:800;color:#fff;margin-bottom:3px}.input-dialog__subtitle{color:#94a3b8;font-size:13px}.input-dialog__hint{background:#0f172a;border:1px solid #334155;border-radius:8px;padding:8px 12px;font-size:12px;color:#64748b;margin-bottom:12px;line-height:1.5}.input-dialog__textarea{width:100%;background:#0f172a;border:1px solid #334155;border-radius:10px;color:#e2e8f0;font-family:Fira Code,Cascadia Code,monospace;font-size:14px;padding:12px;resize:vertical;outline:none;box-sizing:border-box;line-height:1.6}.input-dialog__textarea:focus{border-color:#f59e0b}.input-dialog__textarea::placeholder{color:#334155}.input-dialog__hint-small{color:#475569;font-size:11px;margin-top:6px;margin-bottom:16px;text-align:right}.input-dialog__actions{display:flex;gap:10px;justify-content:flex-end}.btn--run-with-input{background:#f59e0b;color:#0f172a;border:none;padding:10px 20px;border-radius:10px;font-weight:800;font-size:14px;cursor:pointer;transition:.15s;font-family:inherit}.btn--run-with-input:hover{background:#fbbf24;transform:scale(1.02)}.friendly-error__line{background:#ffffff14;border-radius:6px;padding:6px 10px;font-size:13px;font-weight:700;color:#fbbf24;margin-top:8px;display:inline-block}.terminal{width:480px;max-width:95vw;min-height:200px;max-height:60vh;display:flex;flex-direction:column;background:#0f172a;border-radius:8px;overflow:hidden;box-shadow:0 24px 70px #0009;font-family:Fira Code,Cascadia Code,Courier New,monospace}.terminal__bar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#1e293b;flex:none}.terminal__dots{display:flex;gap:6px}.terminal__dot{width:12px;height:12px;border-radius:50%;display:inline-block}.terminal__dot--red{background:#ef4444}.terminal__dot--yellow{background:#eab308}.terminal__dot--green{background:#22c55e}.terminal__title{flex:1;text-align:center;color:#94a3b8;font-size:.8rem}.terminal__exit{background:transparent;border:none;color:#94a3b8;font-family:inherit;font-size:.8rem;cursor:pointer;padding:0}.terminal__exit:hover{color:#f1f5f9}.terminal__body{flex:1;overflow-y:auto;padding:14px 16px;font-size:.9rem;line-height:1.55;cursor:text}.terminal__exchange{margin-bottom:10px}.terminal__out{color:#4ade80;white-space:pre-wrap;word-break:break-word}.terminal__echo{color:#f1f5f9;white-space:pre-wrap;word-break:break-word}.terminal__input-line{display:flex;align-items:center;gap:8px}.terminal__caret{color:#f59e0b}.terminal__input{flex:1;width:100%;background:transparent;border:none;outline:none;color:#f1f5f9;caret-color:#f59e0b;font-family:inherit;font-size:inherit;padding:0}.terminal__hint{margin-top:14px;color:#94a3b8;font-size:.78rem}.body-row{flex:1;display:flex;flex-direction:row;min-height:0}.content{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.toolbar__left{display:flex;align-items:center;gap:12px;min-width:0}.hamburger{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:4px 10px;font-size:15px;cursor:pointer}.hamburger:hover{border-color:var(--accent)}.project-name{display:flex;align-items:center;gap:10px;min-width:0}.project-name__label{font-weight:600;font-size:14px;color:var(--text);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.project-name__label:hover{color:#fff;text-decoration:underline dotted}.project-name__input{background:var(--panel-2);color:var(--text);border:1px solid var(--accent);border-radius:6px;padding:4px 8px;font-size:14px}.save-status{font-size:12px;color:var(--muted);white-space:nowrap}.sidebar{width:220px;flex:none;background:var(--sidebar-bg);color:var(--sidebar-text);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;position:relative;font-size:13px}.sidebar-main{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0}.sidebar-samples-footer{flex-shrink:0;border-top:1px solid var(--border);background:var(--sidebar-bg)}.sidebar-samples-trigger{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#ec4899;-webkit-user-select:none;user-select:none;transition:background .15s}.sidebar-samples-trigger:hover{background:#ec489914}[data-theme=light] .sidebar-samples-trigger{color:#be185d}.sidebar-samples-arrow{color:var(--text-secondary);font-size:10px;transition:transform .2s}.sidebar-samples-panel{max-height:320px;overflow-y:auto;border-top:1px solid var(--border);background:var(--sidebar-bg);scrollbar-width:thin;scrollbar-color:var(--border) transparent}.sidebar-samples-panel::-webkit-scrollbar{width:4px}.sidebar-samples-panel::-webkit-scrollbar-track{background:transparent}.sidebar-samples-panel::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sidebar__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border)}.sidebar__title{color:var(--text-secondary);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.sidebar__add-wrap{position:relative}.sidebar__add{background:var(--brand-blue);border:1px solid var(--brand-blue);color:#fff;width:26px;height:26px;border-radius:8px;font-size:16px;line-height:1;cursor:pointer}.sidebar__add:hover{background:#1d4ed8;border-color:#1d4ed8}.sidebar__menu{position:absolute;right:0;top:32px;z-index:200;min-width:220px;background:#1e293b;border:1px solid #334155;border-radius:8px;padding:4px;box-shadow:0 12px 30px #00000080;display:flex;flex-direction:column}.sidebar__menu button,.sidebar__context button,.file-tab__menu button{background:transparent;border:none;color:var(--text);text-align:left;padding:12px 16px;border-radius:6px;font-size:13px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__menu button:hover,.sidebar__context button:hover,.file-tab__menu button:hover{background:var(--panel-2)}.sidebar__tree{flex:1;overflow-y:auto;padding:6px 0}.sidebar__item{display:flex;align-items:center;gap:6px;padding:4px 10px;cursor:pointer;color:var(--text);-webkit-user-select:none;user-select:none}.sidebar__item:hover{background:var(--sidebar-hover)}.sidebar__project.is-active{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 var(--brand-gold)}.sidebar__icon{flex:none}.sidebar__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__rename{flex:1;background:var(--panel-2);color:var(--text);border:1px solid var(--accent);border-radius:4px;padding:1px 5px;font-size:13px}.sidebar__empty{color:var(--muted);padding:12px;font-size:12px;line-height:1.5}.sidebar__error{color:var(--err);padding:8px 12px;font-size:12px}.sidebar__context{position:fixed;z-index:200;background:#1e293b;border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:0 12px 30px #00000080;display:flex;flex-direction:column}.file-tabs{flex:none;display:flex;align-items:stretch;gap:2px;background:var(--panel);border-bottom:1px solid var(--border);padding:0 6px;overflow-x:auto}.file-tab{background:transparent;border:none;border-top:2px solid transparent;color:var(--muted);padding:8px 14px;font-size:13px;font-family:ui-monospace,SF Mono,Menlo,monospace;cursor:pointer;white-space:nowrap}.file-tab:hover{color:var(--text)}.file-tab.is-active{color:#fff;border-top-color:#f59e0b;background:var(--panel-2)}.file-tab--add{color:var(--muted);font-weight:700}.file-tab__menu{position:fixed;z-index:200;background:#1e293b;border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:0 12px 30px #00000080}.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;gap:6px}.welcome__title{margin:0;font-size:28px;color:var(--text)}.welcome__sub{margin:0 0 16px;color:var(--muted);font-size:15px}.welcome__buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.welcome__buttons button{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:16px 22px;font-size:16px;font-weight:600;cursor:pointer}.welcome__buttons button:hover{border-color:#f59e0b;background:#f59e0b1f}.sidebar__section-title{margin:14px 0 4px;padding:0 12px;color:var(--brand-pink);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}.sidebar__sample.is-active{background:#f59e0b29;box-shadow:inset 3px 0 #f59e0b}.sidebar__context-sep{height:1px;background:var(--border);margin:4px 6px}.project-name__label.is-readonly{cursor:default}.project-name__label.is-readonly:hover{text-decoration:none;color:var(--text)}.sample-tag{color:#f59e0b;font-weight:600}.sample-banner{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:#fef9c3;color:#92400e;font-size:13px;font-weight:600}.sample-banner__text{flex:1}.move-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}.move-modal{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:22px;width:360px;max-width:92vw;box-shadow:0 24px 70px #0000008c}.move-modal__title{margin:0 0 14px;font-size:16px;color:var(--text)}.move-modal__list{display:flex;flex-direction:column;gap:4px;max-height:50vh;overflow-y:auto}.move-option{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--text);font-size:14px}.move-option:hover{background:var(--panel-2)}.move-modal__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.btn--amber{background:#f59e0b;color:#0f172a;font-weight:700;padding:9px 18px;border-radius:8px;border:none;cursor:pointer;font-size:14px}.btn--amber:hover{background:#fbbf24}.btn--ghost-sm{background:transparent;border:1px solid #475569;color:var(--muted);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:14px}.btn--ghost-sm:hover{color:var(--text);border-color:#64748b}.sidebar__samples-toggle{cursor:pointer}.sidebar__samples-toggle:hover{color:var(--text)}.sidebar__category-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;cursor:pointer;color:var(--text-secondary);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.sidebar__category-header:hover{color:var(--text-primary)}.sidebar__sample-item{padding:6px 16px 6px 28px;color:var(--text-secondary);font-size:.85rem;cursor:pointer;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__sample-item:hover{background:var(--sidebar-hover);color:var(--text-primary)}.sidebar__sample-item.is-active{background:#f59e0b29;color:var(--text-primary);box-shadow:inset 3px 0 #f59e0b}.file-tree{display:flex;flex-direction:column;height:100%;min-height:0}.file-tree__header{padding:12px 12px 8px;border-bottom:1px solid var(--border);flex:none}.file-tree__back{color:var(--text-secondary);font-size:12px;cursor:pointer;display:flex;align-items:center;gap:4px;margin-bottom:8px}.file-tree__back:hover{color:#f59e0b}[data-theme=light] .file-tree__back:hover{color:#b45309}.file-tree__project-name{color:var(--sidebar-text);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-tree__actions{display:flex;gap:6px;margin-top:8px}.file-tree__action-btn{flex:1;background:var(--bg-panel);border:1px solid var(--border);color:var(--text-secondary);padding:6px 8px;border-radius:8px;cursor:pointer;font-size:12px;text-align:center;transition:.15s}.file-tree__action-btn:hover{background:var(--bg-elevated);color:var(--text-primary)}.file-tree__body{flex:1;overflow-y:auto;padding:8px 0}.file-tree__item{display:flex;align-items:center;gap:6px;padding:6px 12px;cursor:pointer;border-radius:6px;margin:1px 4px;-webkit-user-select:none;user-select:none;position:relative}.file-tree__item:hover{background:var(--sidebar-hover)}.file-tree__item.is-active{background:var(--sidebar-active);border-left:3px solid #f59e0b}.file-tree__item.is-drag-over{border:2px dashed #f59e0b;background:#f59e0b11}.file-tree__arrow{font-size:9px;color:var(--text-secondary);flex-shrink:0;width:10px}.file-tree__icon{font-size:16px;flex-shrink:0}.file-tree__name{font-size:13px;color:var(--sidebar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.file-tree__item.is-active .file-tree__name{color:#fff}.file-tree__entry-badge{background:#22c55e;color:#fff;font-size:10px;padding:1px 5px;border-radius:4px;font-weight:600;flex-shrink:0}.file-tree__inline-input{background:var(--bg-input);border:1px solid #f59e0b;color:var(--text-primary);padding:3px 6px;border-radius:4px;font-size:13px;width:100%;outline:none}.file-tree__helper{color:var(--text-secondary);font-size:11px;padding:2px 12px 6px;font-style:italic}.file-tree__context-menu{position:fixed;background:#1e293b;border:1px solid #334155;border-radius:10px;padding:6px 0;min-width:180px;box-shadow:0 20px 60px #0009;z-index:500}.file-tree__context-item{padding:10px 16px;font-size:13px;color:#e2e8f0;cursor:pointer;display:flex;align-items:center;gap:8px}.file-tree__context-item:hover{background:#334155}.file-tree__context-sep{height:1px;background:#334155;margin:4px 0}.file-tree__confirm{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:600;display:flex;align-items:center;justify-content:center}.file-tree__confirm-card{background:#1e293b;border-radius:16px;padding:28px;max-width:340px;text-align:center;border:1px solid #334155}.file-tree__confirm-title{font-size:1.1rem;font-weight:600;color:#fff;margin-bottom:8px}.file-tree__confirm-body{color:#94a3b8;font-size:14px;margin-bottom:20px}.file-tree__confirm-actions{display:flex;gap:10px;justify-content:center}.btn--danger{background:#ef4444;color:#fff;font-weight:600;padding:8px 20px;border-radius:8px;border:none;cursor:pointer}.btn--danger:hover{background:#dc2626}.btn--cancel{background:transparent;border:1px solid #475569;color:#94a3b8;padding:8px 20px;border-radius:8px;cursor:pointer}.file-tree__action-btn.is-uploading{opacity:.6;cursor:wait}.file-tree__upload-error{background:#2d0a0a;border:1px solid #ef4444;border-radius:6px;padding:6px 10px;font-size:11px;color:#fca5a5;margin-top:8px;display:flex;align-items:center;justify-content:space-between;gap:6px}.file-tree__upload-error button{background:transparent;border:none;color:#f87171;cursor:pointer;font-size:12px;padding:0;flex-shrink:0}.file-size-badge{color:#475569;font-size:10px;margin-left:4px;flex-shrink:0}.file-binary-preview{padding:24px 16px;text-align:center;height:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.file-binary-preview img{max-width:100%;max-height:60%;border-radius:8px;border:1px solid #334155;object-fit:contain}.file-binary-preview .file-binary-name{color:#94a3b8;font-size:12px;margin-top:8px}.file-binary-preview code{color:#f59e0b;background:#0f172a;padding:1px 6px;border-radius:4px}.html-dialog{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:28px;max-width:440px;width:92%;box-shadow:0 24px 70px #0000008c}.html-dialog__title{color:#f59e0b;font-weight:700;font-size:1.2rem;margin:0 0 4px}.html-dialog__subtitle{color:#94a3b8;font-size:14px;margin:0 0 20px}.html-dialog__name-label{color:#94a3b8;font-size:13px;font-weight:600;display:block;margin-bottom:6px}.html-dialog__name-input{width:100%;background:#0f172a;border:1px solid #334155;color:#fff;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:20px}.html-dialog__name-input:focus{outline:none;border-color:#f59e0b}.html-dialog__files-label{color:#94a3b8;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;display:block}.html-dialog__file-option{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:10px;margin-bottom:8px;border:1px solid #1e293b;cursor:pointer}.html-dialog__file-option:not(.is-locked):hover{border-color:#334155;background:#0f172a}.html-dialog__file-option.is-locked{opacity:.7;cursor:default}.html-dialog__checkbox{width:20px;height:20px;flex-shrink:0;accent-color:#f59e0b;margin-top:2px}.html-dialog__file-name{color:#f59e0b;font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600}.html-dialog__file-desc{color:#64748b;font-size:12px;margin-top:2px}.html-dialog__actions{display:flex;gap:10px;margin-top:24px;justify-content:flex-end}.welcome__buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:460px}.new-project-dialog{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:28px;max-width:400px;width:92%;box-shadow:0 24px 70px #0000008c}.new-project-dialog__title{color:#f59e0b;font-weight:700;font-size:1.3rem;margin:0 0 4px}.new-project-dialog__subtitle{color:#94a3b8;font-size:14px;margin:0 0 20px}.new-project-dialog__label{color:#94a3b8;font-size:13px;font-weight:600;display:block;margin-bottom:8px}.new-project-dialog__input{width:100%;background:#0f172a;border:1px solid #334155;color:#fff;padding:12px 16px;border-radius:10px;font-size:15px;margin-bottom:8px}.new-project-dialog__input:focus{outline:none;border-color:#f59e0b}.new-project-dialog__helper{color:#475569;font-size:12px;font-style:italic}.new-project-dialog__actions{display:flex;gap:10px;margin-top:24px;justify-content:flex-end}.publish-modal{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:28px;max-width:460px;width:92%;box-shadow:0 24px 70px #0000008c}.publish-modal__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.publish-modal__title{color:#f59e0b;font-weight:700;font-size:1.2rem;margin:0}.publish-modal__close{background:transparent;border:none;color:#64748b;font-size:1.2rem;cursor:pointer}.publish-modal__close:hover{color:#fff}.publish-section-label{color:#94a3b8;font-size:13px;font-weight:600;margin-bottom:8px}.publish-url-row{display:flex;align-items:center;background:#0f172a;border:1px solid #334155;border-radius:10px;padding:12px 16px;font-family:ui-monospace,Menlo,monospace;margin-bottom:8px}.publish-url-prefix{color:#64748b;font-size:14px;white-space:nowrap}.publish-url-input{flex:1;background:transparent;border:none;outline:none;color:#f59e0b;font-size:14px;font-family:ui-monospace,Menlo,monospace;min-width:60px}.publish-availability{font-size:13px;margin-bottom:16px;min-height:20px}.publish-availability--ok{color:#4ade80}.publish-availability--bad{color:#f87171}.publish-availability--warn{color:#fbbf24}.publish-availability--checking{color:#94a3b8}.publish-success-banner{background:#052e16;border:1px solid #166534;border-radius:10px;padding:16px;margin-bottom:16px;text-align:center}.publish-success-check{font-size:2rem;display:inline-block;animation:publish-pop .4s ease}@keyframes publish-pop{0%{transform:scale(0);opacity:0}70%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.publish-success-url{color:#4ade80;font-family:ui-monospace,Menlo,monospace;word-break:break-all;font-size:14px;margin:8px 0}.publish-success-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;justify-content:center}.publish-existing-banner{background:#0c1a2e;border:1px solid #1e40af;border-radius:10px;padding:14px;margin-bottom:16px}.publish-tip{color:#64748b;font-size:13px;margin-bottom:16px;line-height:1.5}.btn--publish{background:#f59e0b;color:#0f172a;font-weight:800;padding:14px 24px;border-radius:12px;border:none;cursor:pointer;font-size:1rem;width:100%;transition:.15s}.btn--publish:hover:not(:disabled){background:#fbbf24;transform:scale(1.02)}.btn--publish:disabled{opacity:.5;cursor:not-allowed}.btn--copy{background:#1e293b;border:1px solid #334155;color:#e2e8f0;padding:8px 16px;border-radius:8px;cursor:pointer;font-size:13px}.btn--copy:hover{background:#334155}.btn--unpublish{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid #f87171;color:#f87171;padding:8px 20px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;margin-top:12px;transition:.15s;text-decoration:none}.btn--unpublish:hover{background:#f871711a;border-color:#ef4444;color:#ef4444}.friendly-error{display:flex;gap:14px;align-items:flex-start;border-radius:14px;padding:18px 20px;margin-bottom:14px;animation:errorSlideIn .3s ease-out}@keyframes errorSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.friendly-error--red{background:linear-gradient(135deg,#2d0a0a,#1a0505);border:1.5px solid #ef4444;box-shadow:0 4px 20px #ef444426}.friendly-error--orange{background:linear-gradient(135deg,#2d1a00,#1a0f00);border:1.5px solid #f97316;box-shadow:0 4px 20px #f9731626}.friendly-error--yellow{background:linear-gradient(135deg,#2d2500,#1a1500);border:1.5px solid #fbbf24;box-shadow:0 4px 20px #fbbf2426}.friendly-error__icon{font-size:2rem;flex-shrink:0;margin-top:2px}.friendly-error__body{flex:1}.friendly-error__title{font-size:16px;font-weight:800;color:#fff;margin-bottom:8px;line-height:1.3}.friendly-error__message{font-size:14px;color:#cbd5e1;line-height:1.6;margin-bottom:10px}.friendly-error__tip{font-size:13px;color:#94a3b8;background:#ffffff0d;border-radius:8px;padding:8px 12px;line-height:1.5}.friendly-error__tip-label{color:#fbbf24;font-weight:700}.error-details{margin-top:10px}.error-details summary{color:#475569;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0;list-style:none}.error-details summary:hover{color:#64748b}.error-details summary:before{content:"🔍 "}.error-details[open] summary:before{content:"🔍 "}.error-details pre{margin-top:8px;font-size:11px;color:#64748b;background:#0a0f1a;padding:10px 12px;border-radius:8px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.output-idle{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:120px;gap:8px;opacity:.5}.output-idle__icon{font-size:2rem;color:var(--brand-blue)}.output-idle__text{color:var(--brand-blue);font-size:14px;font-weight:700}.output-idle__hint{color:#64748b;font-size:12px}.celebration{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;overflow:hidden}.celebration__particle{position:absolute;top:-20px;border-radius:3px;animation-name:confettiFall;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(100vh) rotate(720deg);opacity:0}}.celebration__message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:3rem;font-weight:900;color:#fff;text-shadow:0 4px 20px rgba(0,0,0,.5);animation:popIn .3s ease-out forwards}@keyframes popIn{0%{transform:translate(-50%,-50%) scale(0)}70%{transform:translate(-50%,-50%) scale(1.2)}to{transform:translate(-50%,-50%) scale(1)}}.btn--restore{color:#94a3b8;font-size:12px;padding:6px 12px}.restore-dialog{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:28px;max-width:360px;width:92%;text-align:center;box-shadow:0 24px 70px #0000008c}.restore-dialog__title{color:#fff;font-weight:700;font-size:1.1rem;margin-bottom:10px}.restore-dialog__body{color:#94a3b8;font-size:14px;line-height:1.5;margin-bottom:20px}.restore-dialog__actions{display:flex;gap:10px;justify-content:center}.portfolio{min-height:100vh;background:#0f172a;color:#fff;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.portfolio-nav{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #1e293b;max-width:1200px;margin:0 auto;width:100%}.portfolio-nav__brand{color:#f59e0b;font-weight:800;font-size:1.1rem;text-decoration:none}.btn--portfolio-cta{background:#f59e0b;color:#0f172a;font-weight:700;padding:8px 18px;border-radius:8px;text-decoration:none;font-size:14px}.btn--portfolio-cta:hover{background:#fbbf24}.portfolio-hero{text-align:center;padding:48px 24px 32px;max-width:600px;margin:0 auto}.portfolio-avatar{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;color:#0f172a;background:#f59e0b;margin:0 auto 16px;overflow:hidden}.portfolio-avatar img{width:100%;height:100%;object-fit:cover}.portfolio-name{font-size:2rem;font-weight:900;color:#fff;margin-bottom:4px}.portfolio-username{color:#64748b;font-size:1rem;margin-bottom:16px}.portfolio-stats{display:flex;align-items:center;justify-content:center;gap:16px;color:#94a3b8;font-size:14px}.portfolio-content{max-width:1200px;margin:0 auto;padding:0 24px 60px}.portfolio-section-header{font-size:1.2rem;font-weight:700;color:#fff;margin-bottom:20px;margin-top:8px}.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.project-card{background:#1e293b;border:1px solid #334155;border-radius:16px;overflow:hidden;transition:.2s;cursor:pointer}.project-card:hover{transform:translateY(-4px);border-color:#475569;box-shadow:0 12px 40px #0006}.project-card__preview{height:140px;overflow:hidden;position:relative;border-radius:16px 16px 0 0;background:#0f172a}.project-preview--html{width:100%;height:100%}.project-preview__iframe-wrapper{width:100%;height:100%;overflow:hidden;position:relative;background:#fff}.project-preview__iframe{width:840px;height:420px;transform:scale(.333);transform-origin:top left;border:none;pointer-events:none;display:block}.project-preview--code{width:100%;height:100%;display:flex;flex-direction:column;padding:12px;box-sizing:border-box;position:relative;overflow:hidden}.project-preview__icon{font-size:1.2rem;margin-bottom:6px;opacity:.6}.project-preview__code{font-family:Fira Code,Cascadia Code,Courier New,monospace;font-size:9px;color:#94a3b8;white-space:pre;overflow:hidden;margin:0;line-height:1.5;-webkit-mask-image:linear-gradient(to bottom,black 60%,transparent 100%);mask-image:linear-gradient(to bottom,black 60%,transparent 100%)}.project-preview--icon{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.project-preview__icon-large{font-size:3rem;opacity:.4}.project-card__body{padding:16px}.project-card__title{font-weight:700;font-size:15px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-card__date{color:#64748b;font-size:12px;margin-bottom:10px}.project-card__stats{display:flex;align-items:center;gap:12px;color:#64748b;font-size:12px;margin-bottom:12px}.btn--view-project{display:block;width:100%;background:#f59e0b;color:#0f172a;font-weight:700;padding:9px;border-radius:8px;text-align:center;text-decoration:none;font-size:14px;border:none;cursor:pointer;transition:.15s}.btn--view-project:hover{background:#fbbf24}.portfolio-empty{text-align:center;padding:60px 24px;color:#64748b}.portfolio-empty__icon{font-size:3rem;margin-bottom:12px}.portfolio-empty__title{font-size:1.1rem;color:#94a3b8;margin-bottom:6px}.portfolio-empty__sub{font-size:13px}.portfolio-error{text-align:center;padding:80px 24px}.portfolio-error__icon{font-size:4rem;margin-bottom:16px}.portfolio-error__title{font-size:1.5rem;font-weight:700;color:#fff;margin-bottom:8px}.portfolio-error__sub{color:#64748b;margin-bottom:24px}.portfolio-footer{text-align:center;padding:40px 24px;border-top:1px solid #1e293b;margin-top:40px}.portfolio-footer__text{color:#94a3b8;font-size:15px;margin-bottom:16px;font-weight:500}.portfolio-footer__copy{color:#475569;font-size:13px;margin-top:12px}.portfolio-skeleton{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.portfolio-skeleton-card{height:220px;border-radius:16px;background:linear-gradient(90deg,#1e293b 25%,#334155,#1e293b 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.publish-portfolio-section{margin-top:16px;padding-top:16px;border-top:1px solid #1e293b}.publish-portfolio-hint{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.publish-portfolio-hint>span{color:#94a3b8;white-space:nowrap}.publish-portfolio-link{color:#f59e0b;text-decoration:none;font-family:ui-monospace,Menlo,monospace;font-size:12px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.publish-portfolio-link:hover{text-decoration:underline}.change-slug-inline{margin-top:12px;padding:14px;background:#0f172a;border:1px solid #334155;border-radius:10px}.change-slug-warning{color:#fbbf24;font-size:12px;margin-bottom:10px;display:flex;align-items:center;gap:6px}.change-slug-actions{display:flex;gap:8px;margin-top:10px;justify-content:flex-end}.portfolio-slug-modal{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:28px;max-width:460px;width:92%;box-shadow:0 24px 70px #0000008c}.portfolio-slug-modal__title{color:#f59e0b;font-weight:800;font-size:1.2rem;margin:0 0 6px}.portfolio-slug-modal__subtitle{color:#94a3b8;font-size:14px;line-height:1.6;margin:0 0 20px}.portfolio-slug-modal__examples{color:#475569;font-size:12px;font-style:italic;margin-top:8px}.portfolio-slug-modal__actions{display:flex;gap:10px;margin-top:20px;align-items:center;justify-content:flex-end}.portfolio-avatar-wrapper{position:relative;width:80px;margin:0 auto 16px}.portfolio-avatar--dicebear{width:80px;height:80px;border-radius:50%;border:3px solid #f59e0b;background:#1e293b}.portfolio-avatar-edit-btn{position:absolute;bottom:-4px;right:-4px;width:28px;height:28px;border-radius:50%;background:#f59e0b;border:2px solid #0f172a;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:.15s}.portfolio-avatar-edit-btn:hover{background:#fbbf24;transform:scale(1.1)}.portfolio-name-input{font-size:1.6rem;font-weight:900;color:#fff;background:transparent;border:none;border-bottom:2px solid #f59e0b;text-align:center;outline:none;width:100%;max-width:400px;padding:4px 8px;margin-bottom:8px}.portfolio-edit-btn{background:transparent;border:1px solid #334155;color:#64748b;padding:5px 14px;border-radius:20px;cursor:pointer;font-size:13px;margin-top:8px;transition:.15s;display:inline-block}.portfolio-edit-btn:hover{border-color:#f59e0b;color:#f59e0b}.portfolio-edit-actions{display:flex;gap:10px;justify-content:center;margin-top:12px}.avatar-picker{margin:16px auto;max-width:420px;background:#1e293b;border:1px solid #334155;border-radius:14px;padding:16px}.avatar-picker__label{color:#94a3b8;font-size:13px;margin-bottom:12px;text-align:center}.avatar-picker__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.avatar-picker__option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;border-radius:10px;border:2px solid transparent;background:#0f172a;cursor:pointer;transition:.15s;font-size:11px;color:#64748b}.avatar-picker__option:hover{border-color:#334155;color:#94a3b8}.avatar-picker__option.is-selected{border-color:#f59e0b;background:#1a1200;color:#f59e0b}.avatar-picker__option img{border-radius:50%;display:block}.sidebar__category-header--python{color:#3b82f6}.sidebar__category-header--turtle{color:#22c55e}.sidebar__category-header--html{color:#f59e0b}.sidebar__category-header--javascript{color:#eab308}.sidebar__category-header--java{color:#ef4444}.sidebar__category-header--cpp{color:#a78bfa}[data-theme=light] .sidebar__category-header--python{color:#1d4ed8}[data-theme=light] .sidebar__category-header--turtle{color:#166534}[data-theme=light] .sidebar__category-header--html{color:#92400e}[data-theme=light] .sidebar__category-header--javascript{color:#854d0e}[data-theme=light] .sidebar__category-header--java{color:#b91c1c}[data-theme=light] .sidebar__category-header--cpp{color:#6d28d9}.content{background:var(--bg-app)}[data-theme=light] .output-pane{background:#fff}[data-theme=light] .output{background:#fff;color:#1e293b;border-color:var(--border)}[data-theme=light] .output--muted{color:var(--text-secondary)}.welcome-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:40px 24px;text-align:center;background:var(--bg-app)}.welcome-logo{height:72px;width:auto;margin-bottom:20px}.welcome-title{font-size:1.8rem;font-weight:900;color:var(--text-primary);margin-bottom:6px}.welcome-subtitle{color:var(--text-secondary);font-size:1rem;margin-bottom:32px}.welcome-actions-label{color:var(--text-muted);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px}.welcome-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:560px;margin:0 auto}.welcome-btn{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;border-radius:16px;border:2px solid transparent;cursor:pointer;transition:all .2s;font-weight:700}.welcome-btn:hover{transform:translateY(-3px);box-shadow:0 8px 25px #0003}.welcome-btn__icon{font-size:1.8rem}.welcome-btn__label{font-size:12px}.welcome-btn--python{background:#1e3a8a22;border-color:#3b82f6;color:#60a5fa}.welcome-btn--html{background:#92400e22;border-color:#f59e0b;color:#fbbf24}.welcome-btn--pyweb{background:#134e4a22;border-color:#14b8a6;color:#5eead4}.welcome-btn--javascript{background:#713f1222;border-color:#eab308;color:#fde047}.welcome-btn--java{background:#7f1d1d22;border-color:#ef4444;color:#fca5a5}.welcome-btn--cpp{background:#4c1d9522;border-color:#7c3aed;color:#c4b5fd}.welcome-btn--c{background:#0c4a6e22;border-color:#0ea5e9;color:#7dd3fc}.welcome-btn--skulpt{background:#14532d22;border-color:#22c55e;color:#86efac}.welcome-or{color:var(--text-muted);font-size:13px;margin-top:24px}[data-theme=light] .welcome-btn--python{background:#eff6ff;color:#2563eb}[data-theme=light] .welcome-btn--html{background:#fffbeb;color:#d97706}[data-theme=light] .welcome-btn--pyweb{background:#f0fdfa;color:#0d9488}[data-theme=light] .welcome-btn--javascript{background:#fefce8;color:#ca8a04}[data-theme=light] .welcome-btn--java{background:#fef2f2;color:#dc2626}[data-theme=light] .welcome-btn--cpp{background:#f5f3ff;color:#7c3aed}[data-theme=light] .welcome-btn--c{background:#f0f9ff;color:#0284c7}[data-theme=light] .welcome-btn--skulpt{background:#f0fdf4;color:#16a34a}.td-header{position:sticky;top:0;z-index:100;background:#0f172a;border-bottom:1px solid #1e293b;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.td-header__left{display:flex;align-items:center;gap:14px}.td-logo{height:32px;width:auto}.td-title{font-size:1.1rem;font-weight:800;color:#f59e0b}.td-subtitle{font-size:13px;color:#64748b;margin-top:2px}.td-header__right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.td-refresh-info{color:#64748b;font-size:12px}.btn--td-refresh{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:6px 14px;border-radius:8px;cursor:pointer;font-size:13px;transition:.15s;font-family:inherit}.btn--td-refresh:hover{background:#334155;color:#fff}.btn--td-back{background:transparent;border:1px solid #334155;color:#94a3b8;padding:6px 14px;border-radius:8px;cursor:pointer;font-size:13px;transition:.15s;font-family:inherit}.btn--td-back:hover{border-color:#f59e0b;color:#f59e0b}.teacher-dashboard{min-height:100vh;background:#0f172a;color:#fff}.td-content{max-width:1400px;margin:0 auto;padding:24px}.td-section{margin-bottom:40px}.td-section-title{font-size:1rem;font-weight:700;color:#fff;margin-bottom:16px;display:flex;align-items:center;gap:8px}.td-classes-row{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px;scrollbar-width:thin}.td-class-card{flex-shrink:0;width:175px;background:#1e293b;border:1px solid #334155;border-radius:14px;padding:14px}.td-class-card--live{border-color:#22c55e;background:#052e16}.td-class-time{font-size:1.1rem;font-weight:800;color:#f59e0b;margin-bottom:4px}.td-class-name{color:#fff;font-size:14px;font-weight:600;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-class-duration{color:#64748b;font-size:12px;margin-bottom:8px}.td-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:20px;margin-top:6px}.td-badge--live{background:#052e16;color:#4ade80;border:1px solid #22c55e}.td-badge--upcoming{background:#0c1a2e;color:#60a5fa;border:1px solid #3b82f6}.td-badge--done{background:#052e16;color:#86efac;border:1px solid #166534}.td-badge--noshow{background:#2d0a0a;color:#fca5a5;border:1px solid #ef4444}.td-badge--trial{background:#1a0a2e;color:#c4b5fd;border:1px solid #7c3aed;margin-right:4px}.td-filter-row{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.td-search{flex:1;min-width:200px;background:#1e293b;border:1px solid #334155;color:#fff;padding:8px 14px;border-radius:8px;font-size:14px;outline:none;font-family:inherit}.td-search:focus{border-color:#f59e0b}.td-filter-select{background:#1e293b;border:1px solid #334155;color:#fff;padding:8px 14px;border-radius:8px;font-size:14px;outline:none;cursor:pointer;font-family:inherit}.td-students-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.td-student-card{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:16px;position:relative;transition:.15s;text-align:center}.td-student-card:hover{transform:translateY(-2px);border-color:#475569}.td-student-card--active{border-color:#22c55e44}.td-student-card--idle{border-color:#f59e0b44}.td-dot{position:absolute;top:12px;right:12px;width:10px;height:10px;border-radius:50%}.td-dot--active{background:#22c55e;animation:pulse 2s infinite}.td-dot--idle{background:#f59e0b}.td-dot--offline{background:#475569}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.td-avatar{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:800;color:#fff;margin:0 auto 10px}.td-avatar--active{background:#14532d;border:2px solid #22c55e}.td-avatar--idle{background:#451a03;border:2px solid #f59e0b}.td-avatar--offline{background:#1e293b;border:2px solid #334155}.td-student-name{font-weight:700;font-size:14px;color:#fff;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-student-username{color:#64748b;font-size:12px;margin-bottom:8px}.td-student-activity{font-size:11px;color:#64748b;margin-bottom:6px;min-height:16px}.td-run-status{font-size:11px;margin-bottom:6px}.td-run-status--ok{color:#4ade80}.td-run-status--err{color:#f87171}.td-student-project{font-size:11px;color:#94a3b8;margin-bottom:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn--view-code{width:100%;background:#f59e0b;color:#0f172a;font-weight:700;border:none;border-radius:8px;padding:8px;font-size:13px;cursor:pointer;font-family:inherit;transition:.15s}.btn--view-code:hover{background:#fbbf24}.td-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;z-index:500;display:flex;align-items:center;justify-content:center;padding:20px}.td-modal{background:#0f172a;border:1px solid #334155;border-radius:16px;width:100%;max-width:860px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden}.td-modal__header{padding:16px 20px;border-bottom:1px solid #1e293b;display:flex;align-items:flex-start;justify-content:space-between}.td-modal__title{font-size:1.05rem;font-weight:700;color:#fff}.td-modal__meta{color:#64748b;font-size:12px;margin-top:4px}.td-modal__close{background:transparent;border:none;color:#64748b;cursor:pointer;font-size:1.2rem;padding:2px 6px}.td-modal__close:hover{color:#fff}.td-modal__body{flex:1;overflow-y:auto;padding:16px 20px}.td-modal__footer{padding:10px 20px;border-top:1px solid #1e293b;color:#475569;font-size:12px;text-align:center}.td-code-view{display:flex;flex-direction:column;gap:12px}.td-file-tabs{display:flex;gap:6px;flex-wrap:wrap}.td-file-tab{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer;font-family:inherit}.td-file-tab.is-active{background:#334155;color:#fff;border-color:#475569}.td-code-pre{background:#020617;border:1px solid #1e293b;border-radius:10px;padding:16px;font-size:12px;color:#94a3b8;overflow-x:auto;white-space:pre;font-family:Fira Code,Cascadia Code,monospace;max-height:50vh;overflow-y:auto}.td-skeleton-card{height:200px;border-radius:14px;background:linear-gradient(90deg,#1e293b 25%,#334155,#1e293b 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.td-empty{text-align:center;padding:40px 20px;color:#64748b}.td-empty__icon{font-size:2.5rem;margin-bottom:10px}.td-empty__text{font-size:1rem;color:#94a3b8;margin-bottom:6px}.td-empty__sub{font-size:13px}.td-empty-classes{color:#64748b;font-size:14px;padding:16px 0}.td-access-denied{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0f172a;color:#fff;text-align:center;padding:40px}.td-access-denied__icon{font-size:4rem;margin-bottom:16px}.td-access-denied__title{font-size:1.5rem;font-weight:700;margin-bottom:8px}.td-access-denied__sub{color:#64748b;margin-bottom:24px}.td-checking{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f172a}.td-checking__text{color:#64748b;font-size:14px}.td-loading{text-align:center;color:#64748b;padding:40px;font-size:14px}.btn--amber-pill{background:#f59e0b;color:#0f172a;font-weight:700;padding:10px 24px;border-radius:20px;text-decoration:none;font-size:14px;display:inline-block;transition:.15s}.btn--amber-pill:hover{background:#fbbf24}.td-project-selector{display:flex;flex-direction:column;gap:4px;margin-bottom:16px;max-height:200px;overflow-y:auto;border:1px solid #1e293b;border-radius:10px;padding:6px;background:#020617}.td-project-btn{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;border:1px solid transparent;background:transparent;color:#94a3b8;cursor:pointer;text-align:left;transition:.15s;font-size:13px;width:100%;font-family:inherit}.td-project-btn:hover{background:#1e293b;color:#fff}.td-project-btn.is-active{background:#1e293b;border-color:#f59e0b;color:#fff}.td-project-btn__name{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-project-btn__time{color:#475569;font-size:11px;flex-shrink:0}.td-modal__count{font-size:12px;font-weight:400;color:#64748b;margin-left:8px}@font-face{font-family:Saira Condensed;font-weight:800;font-display:swap;src:url(/fonts/saira-condensed-latin-800-normal.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-weight:900;font-display:swap;src:url(/fonts/saira-condensed-latin-900-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:800;font-display:swap;src:url(/fonts/jetbrains-mono-latin-800-normal.woff2) format("woff2")}.gate{--gate-ground: #0b1640;--gate-gold: #f59e0b;--gate-ink: #0f1b4d;--gate-soft: #dbeafe;--gate-display: "Saira Condensed", "Arial Narrow", sans-serif;--gate-gutter: clamp(20px, 4vw, 56px);height:100vh;height:100dvh;overflow-y:auto;display:flex;flex-direction:column;background:var(--gate-ground);color:#fff}.gate a:focus-visible,.gate button:focus-visible{outline:3px solid #fff;outline-offset:3px}.gate__top{flex:none;width:100%;max-width:1320px;margin:0 auto;display:flex;align-items:center;padding:20px var(--gate-gutter)}.gate__brand{display:flex;align-items:center;gap:12px;text-decoration:none}.gate__brand img{display:block;width:auto;height:clamp(44px,4.4vw,64px)}.gate__sub{font-family:var(--gate-display);font-weight:800;font-size:clamp(20px,1vw + 16px,28px);letter-spacing:.08em;text-transform:uppercase;color:var(--gate-gold)}.gate__main{flex:1 0 auto;display:flex;align-items:center;justify-content:center;padding:8px var(--gate-gutter) 32px}.gate__floor{flex:none;height:52px;overflow:hidden;display:flex;justify-content:center;gap:8px}.gate__floor-tile{flex:none;width:60px;height:72px;display:flex;align-items:center;justify-content:center;border-radius:8px 8px 0 0;background:#12265f;color:#4a6bc9;font:800 28px/1 JetBrains Mono,ui-monospace,Menlo,monospace}.gate-form{width:100%;max-width:640px;display:flex;flex-direction:column;gap:20px}.gate-title{margin:0 0 4px;font-family:var(--gate-display);font-weight:900;font-size:clamp(40px,3vw + 28px,72px);line-height:.95;text-transform:uppercase;text-wrap:balance}.gate-field{display:flex;flex-direction:column;gap:8px;color:var(--gate-soft);font-size:15px;font-weight:600}.gate-input{width:100%;height:64px;padding:0 20px;border:0;border-radius:8px;background:#fff;color:var(--gate-ink);color-scheme:light;font-family:inherit;font-size:20px;font-weight:500}.gate-input:focus{outline:3px solid var(--gate-gold);outline-offset:2px}.gate-code{position:relative;display:block}.gate-code__tiles{display:flex;align-items:center;gap:clamp(6px,1vw,10px)}.gate-code__group{flex:1 1 0;min-width:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(4px,.8vw,8px)}.gate-code__dash{flex:none;width:clamp(8px,1.4vw,14px);height:4px;border-radius:2px;background:#60a5fa}.gate-code__input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:text;font-size:16px}.gate-tile{aspect-ratio:5 / 6;display:flex;align-items:center;justify-content:center;border:2px solid #2f4ea8;border-radius:clamp(4px,.6vw,8px);background:linear-gradient(#132660 0 49%,var(--gate-ground) 49% 51%,#0f2054 51% 100%);color:#fff;font:800 clamp(20px,2.4vw + 11px,44px)/1 "JetBrains Mono",ui-monospace,Menlo,monospace}.gate-tile--filled{border-color:transparent;background:linear-gradient(#1e3a8a 0 49%,var(--gate-ground) 49% 51%,#1a3278 51% 100%)}.gate-tile--wrong{border-color:#ec4899;color:#f9a8d4}.gate-tile--done{border-color:#22c55e;color:#4ade80}.gate-code:focus-within .gate-tile--next{border-color:var(--gate-gold)}.gate-code:focus-within .gate-tile--next:empty:after{content:"";width:3px;height:55%;background:var(--gate-gold);animation:gate-caret 1s steps(2,jump-none) infinite}@keyframes gate-caret{0%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.gate-code:focus-within .gate-tile--next:empty:after{animation:none}}.gate-hint{margin:-8px 0 0;color:#93b4f0;font-size:15px;line-height:1.45}.gate-hint__code{color:#fff;font:800 .95em/1 JetBrains Mono,ui-monospace,Menlo,monospace;letter-spacing:.04em;white-space:nowrap}.gate-error{margin:0;color:#fbcfe8;font-size:16px;font-weight:600}.gate-btn{width:100%;min-height:68px;margin-top:4px;border:0;border-radius:8px;background:var(--gate-gold);color:var(--gate-ink);cursor:pointer;font-family:var(--gate-display);font-weight:800;font-size:26px;letter-spacing:.02em;text-transform:uppercase}.gate-btn:hover:not(:disabled){filter:brightness(1.08)}.gate-btn:disabled{opacity:.7;cursor:wait}.gate-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 24px}.gate-link{min-height:44px;padding:0;border:0;background:none;color:var(--gate-soft);cursor:pointer;font-family:inherit;font-size:15px;font-weight:600;text-decoration:underline;text-underline-offset:4px}.gate-link:hover{color:#fff}a.gate-link{display:inline-flex;align-items:center}.auth-link{background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;text-decoration:underline;align-self:center;padding:2px}.auth-link:hover{color:var(--text)}.join-pin{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px;border:2px dashed var(--brand-gold);border-radius:12px;margin-top:8px}.join-pin__label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.join-pin__value{font-size:32px;font-weight:800;letter-spacing:8px;color:var(--brand-gold);font-family:ui-monospace,Menlo,monospace}.comp-timer{font-family:ui-monospace,Menlo,monospace;font-weight:700;font-size:14px;padding:4px 10px;border-radius:999px;background:#22c55e26;color:#86efac;border:1px solid rgba(34,197,94,.45);white-space:nowrap}.comp-timer--lobby,.comp-timer--draft{background:#60a5fa26;color:#93c5fd;border-color:#60a5fa73}.comp-timer--ended{background:#94a3b826;color:#cbd5e1;border-color:#94a3b866}.comp-timer--low{background:#ef444433;color:#fecaca;border-color:#ef444499;animation:comp-pulse 1s ease-in-out infinite}@keyframes comp-pulse{50%{opacity:.6}}.btn--done{background:var(--brand-green);color:#052e16;border:none;font-weight:700}.btn--done:hover:not(:disabled){background:#4ade80}.btn--done.is-done{background:transparent;color:#86efac;border:1px solid var(--brand-green)}.btn--done.is-done:disabled{opacity:1;cursor:default}.toolbar-user{color:#cbd5e1;font-size:12px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sample-banner--done{background:#dcfce7;color:#166534}.comp-brief{max-width:720px;width:100%;margin:0 auto 16px;padding:16px 18px;background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--brand-gold);border-radius:10px;color:var(--text);font-size:14px;line-height:1.6;white-space:pre-wrap;text-align:left;max-height:40vh;overflow:auto;box-sizing:border-box}.comp-brief--dialog{max-height:60vh;margin:0 0 16px;background:var(--bg)}.brief-dialog{max-width:680px;width:calc(100% - 32px);text-align:left}.comp-countdown{font-family:ui-monospace,Menlo,monospace;font-weight:800;color:var(--brand-gold)}.output-stack{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;overflow:auto}.output-stack .output--skulpt{flex:1;min-height:360px}.turtle-frame{flex:1;min-height:320px;width:100%;border:1px solid var(--border);border-radius:8px;background:#0f172a}.html-preview-frame{flex:1;width:100%;min-height:240px;border:none;background:#fff;border-radius:6px}.preview-console{flex:none;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.preview-console__bar{width:100%;text-align:left;background:none;border:none;color:var(--muted);font-size:12px;font-weight:600;padding:6px 10px;cursor:pointer}.preview-console__list{max-height:160px;overflow:auto;padding:0 10px 8px;font-family:ui-monospace,Menlo,monospace;font-size:12px}.preview-console__line{padding:2px 0;border-top:1px solid var(--border-light);white-space:pre-wrap;word-break:break-word;color:var(--text)}.preview-console__line--warn{color:#fde68a}.preview-console__line--error{color:var(--err)}.preview-console__empty{color:var(--muted);padding:4px 0}.ai-panel{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:12px 14px}.ai-panel__head{display:flex;align-items:center;justify-content:space-between}.ai-panel__title{font-weight:800;color:var(--brand-gold)}.ai-panel__close{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}.ai-panel__close:hover{color:var(--text)}.ai-panel__note{font-size:12px;color:var(--muted)}.ai-panel__list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:8px;background:var(--bg);border:1px solid var(--border);border-radius:8px}.ai-panel__error{font-size:12px;color:var(--err)}.ai-panel__form{display:flex;flex-direction:column;gap:6px}.ai-panel__input{resize:vertical;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;font-size:13px}.ai-panel__input:focus{outline:none;border-color:var(--brand-gold)}.ai-panel__actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.ai-panel__check{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.ai-msg{max-width:92%;padding:8px 10px;border-radius:10px;font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.ai-msg--user{align-self:flex-end;background:var(--brand-navy);color:#fff}.ai-msg--model{align-self:flex-start;background:var(--panel);color:var(--text);border:1px solid var(--border)}.ai-msg--typing{color:var(--muted);font-style:italic}.ai-msg__meta{font-size:11px;opacity:.7;margin-bottom:2px}.ai-msg__inline{padding:1px 4px;background:#0b1220;color:#e2e8f0;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:12px}.ai-msg__code{margin:6px 0;padding:8px;background:#0b1220;color:#e2e8f0;border-radius:6px;overflow:auto;font-family:ui-monospace,Menlo,monospace;font-size:12px;white-space:pre}.ad-error{margin-bottom:16px}.ad-comp-card{text-align:left;cursor:pointer;font:inherit}.ad-comp-card.is-selected{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b}.ad-comp-card--new{border-style:dashed;display:flex;flex-direction:column;align-items:center;justify-content:center}.ad-control{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:18px}.ad-control__head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.ad-control__title{color:#fff;font-size:1.3rem;font-weight:800}.ad-control__meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}.ad-control__meta .td-badge{margin-top:0}.ad-control__buttons{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.ad-team-code{font-family:ui-monospace,Menlo,monospace;font-weight:700;letter-spacing:2px;color:#f59e0b;-webkit-user-select:all;user-select:all}.ad-clock{font-family:ui-monospace,Menlo,monospace;color:#86efac;font-weight:700}.ad-muted{color:#64748b;font-size:12px}.ad-btn{background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.ad-btn:hover:not(:disabled){border-color:#f59e0b}.ad-btn:disabled{opacity:.5;cursor:not-allowed}.ad-btn--danger{color:#fca5a5;border-color:#7f1d1d}.ad-btn--danger:hover:not(:disabled){border-color:#ef4444}.ad-spacer{flex:1}.ad-section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.ad-section-head .td-section-title{margin:0}.ad-section-head .td-search{flex:none;width:180px;min-width:0}.ad-schedule{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}.ad-schedule .td-search{flex:none;min-width:0;color-scheme:dark}.ad-schedule{align-items:flex-end}.ad-schedule__field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#94a3b8}.ad-schedule input:disabled{opacity:.6}.ad-field input[type=datetime-local]{color-scheme:dark}.ad-form{display:flex;flex-direction:column;gap:12px;margin-top:16px;max-width:760px}.ad-form__row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}.ad-form__actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.ad-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#94a3b8}.ad-field--small{width:140px}.ad-form__hatch{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ad-form__hatch-label{color:#e2e8f0;font-weight:600;font-size:14px}.ad-field--inline{flex-direction:row;align-items:center;gap:8px}.ad-field--inline input{width:64px;padding:5px 8px}.ad-field input,.ad-field textarea{background:#0f172a;color:#fff;border:1px solid #334155;border-radius:8px;padding:9px 12px;font:inherit;font-size:14px}.ad-field textarea{resize:vertical;line-height:1.5}.ad-field input:focus,.ad-field textarea:focus{outline:none;border-color:#f59e0b}.ad-langs{display:flex;gap:8px;flex-wrap:wrap}.ad-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid #334155;color:#94a3b8;cursor:pointer;font-size:13px}.ad-chip input{display:none}.ad-chip.is-on{border-color:#f59e0b;color:#fbbf24;background:#f59e0b1a}.ad-toggle{display:flex;align-items:center;gap:8px;color:#e2e8f0;font-size:14px;cursor:pointer}.ad-stats{display:flex;gap:10px;justify-content:center;color:#94a3b8;font-size:12px;margin:6px 0;flex-wrap:wrap}.ad-flag{color:#fbbf24;font-weight:700}.ad-ai-match{margin-left:8px;font-size:12px}.ad-score{color:#fbbf24;font-weight:800;margin-bottom:6px}.ad-reliance{font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;display:inline-block;margin-bottom:6px}.ad-reliance--none,.ad-reliance--low{background:#052e16;color:#86efac}.ad-reliance--medium{background:#422006;color:#fcd34d}.ad-reliance--high{background:#450a0a;color:#fca5a5}.ad-not-submitted{font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;display:inline-block;margin-bottom:6px;background:#3f1d1d;color:#fca5a5}.ad-team-from{color:#94a3b8;font-size:12px;margin-bottom:4px}.ad-code-mail{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px 8px;color:#94a3b8;font-size:12px;margin-bottom:8px}.ad-code-mail--failed{color:#fca5a5}.ad-code-mail__send{background:none;border:none;padding:0;color:#f59e0b;font:inherit;font-weight:600;cursor:pointer}.ad-code-mail__send:disabled{opacity:.5;cursor:not-allowed}.ad-hatch{max-width:720px}.ad-hatch__filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.ad-hatch__filters select{min-width:0;max-width:100%}.ad-hatch__note{margin-bottom:8px}.ad-hatch__heading{color:#e2e8f0;font-size:13px;font-weight:700;margin:16px 0 4px}.ad-hatch__row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid #1e293b}.ad-hatch__row.is-off{opacity:.5}.ad-hatch__team{color:#fff;font-weight:600;min-width:180px}.ad-hatch__name.td-search{flex:none;width:200px;min-width:0;padding:4px 10px}.ad-hatch__from{flex:1;min-width:120px}.ad-hatch__problem{color:#fca5a5;font-size:12px;font-weight:600}.ad-hatch__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #1e293b}.ad-hatch__footer .btn--amber:disabled{opacity:.5;cursor:not-allowed}.ad-modal-overlay{align-items:flex-start;padding-top:6vh}.ad-modal{max-width:1000px}.ad-modal .td-modal__title .td-badge{margin-left:8px;vertical-align:middle}.ad-tabs{display:flex;gap:4px;padding:0 20px;border-bottom:1px solid #334155;flex-wrap:wrap}.ad-tab{background:none;border:none;border-bottom:2px solid transparent;color:#94a3b8;padding:10px 12px;font-weight:600;cursor:pointer;font-family:inherit}.ad-tab.is-active{color:#f59e0b;border-bottom-color:#f59e0b}.ad-done{color:#86efac;font-size:11px;font-weight:700;margin-left:auto}.ad-code-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.ad-code-bar .ad-btn{margin-right:auto}.ad-code-bar .ad-not-submitted{margin-bottom:0}.ad-seg{display:inline-flex;border:1px solid #334155;border-radius:8px;overflow:hidden}.ad-seg button{background:#0f172a;color:#94a3b8;border:none;padding:6px 12px;cursor:pointer;font-family:inherit;font-size:12px;font-weight:600}.ad-seg button.is-on{background:#f59e0b;color:#0f172a}.ad-files{color:#64748b;font-size:12px;margin-top:8px}.ad-ai{display:flex;flex-direction:column;gap:10px}.ad-ai .ai-msg--model{background:#0f172a;color:#e2e8f0;border-color:#334155}.ad-sent-code summary{cursor:pointer;font-size:11px;opacity:.8;margin-top:4px}.ad-report{border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.5;color:#e2e8f0;border:1px solid #334155;background:#0f172a}.ad-report__title{font-weight:800;margin-bottom:4px;text-transform:capitalize}.ad-report--medium{border-color:#a16207}.ad-report--high{border-color:#b91c1c}.ad-report--work .ad-report__title{text-transform:none}.ad-table{width:100%;border-collapse:collapse;font-size:13px;color:#e2e8f0}.ad-table td{padding:6px 8px;border-bottom:1px solid #1e293b;vertical-align:top}.ad-review{display:flex;flex-direction:column;gap:12px;max-width:560px}@media (max-width: 640px){.ad-section-head .td-search,.ad-field--small{width:100%}}.ad-print{display:none}@media print{body,#root,.teacher-dashboard{background:#fff!important}.teacher-dashboard>:not(.ad-print){display:none!important}.ad-print{display:grid!important;grid-template-columns:repeat(3,1fr);gap:10px;padding:0}.ad-print__slip{border:1px dashed #64748b;border-radius:8px;padding:14px;break-inside:avoid;color:#0f172a;text-align:center}.ad-print__title{font-size:12px;color:#475569;margin-bottom:6px}.ad-print__code{font:800 22px ui-monospace,Menlo,monospace;letter-spacing:3px}.ad-print__site{font-size:12px;color:#475569;margin:6px 0 10px}.ad-print__name{font-size:13px;text-align:left}}.tour{position:relative;width:min(420px,100%);padding:34px 28px 24px;border:1px solid #334155;border-radius:20px;background:linear-gradient(160deg,#1e293b,#1e1b4b);box-shadow:0 24px 70px #0000008c;text-align:center}.tour__skip{position:absolute;top:12px;right:14px;border:0;background:none;color:#94a3b8;font-size:13px;cursor:pointer}.tour__skip:hover{color:#e2e8f0}.tour__emoji{display:inline-block;margin-bottom:14px;font-size:56px;line-height:1;animation:tour-pop .55s cubic-bezier(.28,1.6,.5,1)}.tour__title{margin:0 0 8px;color:#f59e0b;font-size:1.35rem;font-weight:800}.tour__text{max-width:340px;min-height:3em;margin:0 auto;color:#cbd5e1;font-size:15px;line-height:1.5}.tour__code{display:inline-block;margin-top:14px;padding:6px 14px;border:1px dashed #f59e0b;border-radius:10px;color:#f59e0b;font:800 20px ui-monospace,Menlo,monospace;letter-spacing:3px;-webkit-user-select:all;user-select:all}.tour__dots{display:flex;justify-content:center;gap:6px;margin:22px 0 18px}.tour__dots button{width:8px;height:8px;padding:0;border:0;border-radius:999px;background:#475569;cursor:pointer;transition:width .2s,background .2s}.tour__dots button.is-on{width:22px;background:#f59e0b}.tour__actions{display:flex;justify-content:center;gap:10px}@keyframes tour-pop{0%{opacity:0;transform:scale(.3) rotate(-14deg)}to{opacity:1;transform:scale(1) rotate(0)}}@media (prefers-reduced-motion: reduce){.tour__emoji{animation:none}}.app-split{flex:1;display:flex;min-height:0}.app-stage{flex:1;min-width:0;display:flex;flex-direction:column;isolation:isolate;background:var(--bg-app)}.toolbar .btn--ghost.is-active{background:#f59e0b40;border-color:#f59e0b}.toolbar{container:toolbar / inline-size}.toolbar .btn,.toolbar .hamburger{white-space:nowrap;flex-shrink:0}.toolbar__controls{flex-shrink:0;gap:8px}.toolbar__left{overflow:hidden}.toolbar__left>*{flex-shrink:0}.toolbar__left>.project-name{flex-shrink:1}.toolbar .project-name__label{min-width:0}@container toolbar (max-width: 1800px){.toolbar .tb-label--first{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}@container toolbar (max-width: 1500px){.toolbar__controls .tb-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.toolbar-user{display:none}}@container toolbar (max-width: 1180px){.toolbar .save-status .tb-label,.toolbar-logo{display:none}.toolbar .project-name__label{max-width:180px}.toolbar__left{gap:8px}}.welcome-btn.is-locked,.sidebar__menu button.is-locked,.sidebar__context button.is-locked,.sidebar__category-header.is-locked{filter:grayscale(1);opacity:.5;cursor:not-allowed}.welcome-btn.is-locked:hover{transform:none;box-shadow:none}@media (max-width: 820px){.app--guest{height:100dvh}.app--guest .body-row{position:relative}.app--guest .sidebar{position:absolute;inset:0 auto 0 0;z-index:20;width:min(300px,85%);height:auto;box-shadow:8px 0 24px #00000073}.app--guest .content{overflow-y:auto}.app--guest .welcome-screen{height:auto;min-height:100%;padding:24px 16px}.app--guest .welcome-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.app--guest .toolbar{padding:8px 10px;gap:8px}.app--guest .toolbar .comp-timer{font-size:11px;padding:3px 8px}}@media (max-width: 480px){.app--guest .toolbar-theme-toggle,.app--guest .toolbar .project-name,.app--guest .toolbar__controls .btn--ghost:not(.btn--logout):not(.btn--feedback){display:none}}.call-dock{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;padding:12px;overflow-y:auto;background:var(--bg-panel);border-left:1px solid var(--border);color:var(--text-primary)}.call-dock__head{display:flex;align-items:baseline;gap:8px}.call-dock__title{font-weight:800;font-size:15px}.call-dock__limit{color:var(--text-secondary);font-size:12px}.call-dock__close{margin-left:auto;border:0;background:none;color:var(--text-secondary);font-size:16px;cursor:pointer}.call-rec{padding:6px 10px;border-radius:8px;background:#ef444426;color:#f87171;font:700 13px ui-monospace,Menlo,monospace}.call-rec--low{animation:call-blink 1s steps(2) infinite}@keyframes call-blink{50%{opacity:.45}}.call-chip{font-size:12px;color:var(--text-secondary)}.call-tiles{position:relative;display:flex;flex-direction:column;gap:8px}.call-tile{position:relative;aspect-ratio:16 / 9;border-radius:10px;overflow:hidden;background:#0f172a}.call-tile video{width:100%;height:100%;object-fit:cover;display:block}.call-tile video.is-hidden{opacity:0}.call-tile--self video{transform:scaleX(-1)}.call-tile--screen video{object-fit:contain}.call-tile__avatar{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:54px;height:54px;border-radius:999px;display:grid;place-items:center;background:var(--brand-blue, #2563eb);color:#fff;font-weight:800;font-size:20px}.call-tile__name,.call-tile__note{position:absolute;left:6px;bottom:6px;max-width:calc(100% - 12px);padding:2px 8px;border-radius:6px;background:#0f172abf;color:#fff;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.call-tile__note{left:auto;right:6px;bottom:auto;top:6px;color:#fbbf24}.call-countdown{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-items:center;border-radius:10px;background:#0f172a99;color:#f59e0b;font-size:72px;font-weight:900;animation:tour-pop .35s ease-out}.call-controls{display:flex;gap:6px}.call-btn{flex:1;padding:8px 0;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);color:var(--text-primary);font-size:15px;cursor:pointer}.call-btn:disabled{opacity:.45;cursor:default}.call-btn.is-off{background:#ef444433;border-color:#ef4444}.call-btn.is-on{background:#f59e0b40;border-color:#f59e0b}.call-btn--leave{flex:1.4;font-size:13px;font-weight:700;color:#f87171}.call-record{width:100%;background:#dc2626;border-color:#dc2626;color:#fff}.call-record:hover:not(:disabled){background:#b91c1c}.call-record--stop{background:#334155;border-color:#f87171}.call-join{display:flex;flex-direction:column;gap:8px}.call-join__name{padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);color:var(--text-primary);font-size:14px}.call-hint{margin:0;color:var(--text-secondary);font-size:12px}.call-error{color:#f87171;font-size:13px}.call-submitted{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:8px;background:#22c55e1f;color:#4ade80;font-size:13px;font-weight:700}.call-submitted .auth-link{margin:0;color:inherit}.call-review{max-width:720px}.call-review__video{width:100%;max-height:60vh;margin-bottom:14px;border-radius:10px;background:#000}.call-progress{width:100%;margin-bottom:12px;accent-color:#f59e0b}.ad-video{width:100%;max-height:62vh;border-radius:10px;background:#000}.blocks-pane{position:relative;background:var(--bg-app)}.blocks-frame{flex:1;width:100%;min-height:0;border:0;display:block;background:#f3f6fb}.blocks-error{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;background:#fef2f2;color:#991b1b;font-size:13px;font-weight:600}.blocks-error button{border:0;background:none;color:inherit;cursor:pointer;font-size:14px}.blocks-missing{margin:auto}.welcome-btn--bloqijr{background:#9a341222;border-color:#fb923c;color:#fdba74}.welcome-btn--bloqistudio{background:#83184322;border-color:#ec4899;color:#f9a8d4}[data-theme=light] .welcome-btn--bloqijr{background:#fff7ed;color:#c2410c}[data-theme=light] .welcome-btn--bloqistudio{background:#fdf2f8;color:#be185d}.feedback-dialog{max-width:460px}.feedback-kinds{display:flex;gap:8px;margin:14px 0 12px}.feedback-kind{flex:1;background:#0f172a;color:#94a3b8;border:1px solid #334155;border-radius:10px;padding:8px 12px;font:inherit;font-weight:600;cursor:pointer}.feedback-kind:hover{border-color:#64748b}.feedback-kind.is-on{border-color:#f59e0b;color:#fbbf24;background:#f59e0b1a}.feedback-dialog__text{resize:vertical;min-height:120px;font-family:inherit;line-height:1.5;display:block}.feedback-dialog__error{color:#fca5a5;font-size:13px;margin-top:4px}.feedback-dialog .btn--amber:disabled{opacity:.5;cursor:not-allowed}.feedback-replies{display:flex;flex-direction:column;gap:8px;max-height:38vh;overflow-y:auto;margin:10px 0 20px}.feedback-reply{border:1px solid #334155;border-radius:10px;padding:10px 12px;background:#0f172a}.feedback-reply.is-new{border-color:#f59e0b}.feedback-reply__theirs{color:#64748b;font-size:12px;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.feedback-reply__text{color:#e2e8f0;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.btn--feedback.has-reply{position:relative;border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b59;animation:feedback-glow 1.6s ease-in-out infinite}.btn--feedback.has-reply:after{content:"";position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:#ef4444;border:2px solid #0f172a}@keyframes feedback-glow{50%{box-shadow:0 0 0 5px #f59e0b1f}}@media (prefers-reduced-motion: reduce){.btn--feedback.has-reply{animation:none}}.ad-feedback__reply{border-left:3px solid #f59e0b;padding:6px 10px;margin:8px 0 4px;background:#f59e0b0f;border-radius:0 8px 8px 0}.ad-feedback__reply-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;font-size:13px}.ad-feedback__reply-box{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ad-feedback__reply-box textarea{background:#1e293b;color:#fff;border:1px solid #334155;border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;line-height:1.5;resize:vertical}.ad-feedback__reply-box textarea:focus{outline:none;border-color:#f59e0b}.ad-feedback__reply-actions{display:flex;gap:8px;justify-content:flex-end}.ad-feedback__preview{color:#94a3b8;font-weight:700}.ad-preview-feedback--open,.ad-btn--alert{border-color:#f59e0b;color:#fbbf24}.ad-comp-card{position:relative}.ad-comp-card__feedback{position:absolute;top:12px;right:12px;font-size:11px;font-weight:700;color:#fbbf24;background:#f59e0b1f;border-radius:999px;padding:2px 7px}.ad-feedback-modal{max-width:760px}.ad-feedback-list{display:flex;flex-direction:column;gap:10px}.ad-feedback{border:1px solid #334155;background:#0f172a;border-radius:10px;padding:12px 14px;color:#e2e8f0;font-size:13px}.ad-feedback__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.ad-feedback__kind{font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px}.ad-feedback__kind--bug{background:#3f1d1d;color:#fca5a5}.ad-feedback__kind--idea{background:#172554;color:#93c5fd}.ad-feedback__team{background:none;border:none;padding:0;color:#fff;font:inherit;font-weight:700;cursor:pointer}.ad-feedback__team:hover{color:#f59e0b;text-decoration:underline}.ad-feedback .ad-team-code{font-size:12px;letter-spacing:1px}.ad-feedback__message{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;margin-bottom:6px;font-size:14px}
