.editor-panel{background-color:#1e1e2e;display:flex;flex-direction:column;height:100%;position:relative}.editor-tabs{background:#16161f;border-bottom:1px solid #ffffff0f;display:flex;flex-shrink:0}.tab-button{background:#0000;border:none;border-bottom:2px solid #0000;color:#6b7280;cursor:pointer;font-size:12px;font-weight:500;letter-spacing:.6px;padding:10px 16px;text-transform:uppercase;transition:color .15s ease}.tab-button:hover{color:#d1d5db}.tab-button.active{border-bottom-color:#6366f1;color:#818cf8}.mode-menu-wrap{margin-left:auto;position:relative}.mode-btn,.mode-menu-wrap{align-items:center;align-self:center;display:flex}.mode-btn{background:#0000;border:1px solid #ffffff1a;border-radius:4px;color:#6b7280;cursor:pointer;font-family:inherit;font-size:11px;font-weight:500;gap:5px;height:24px;margin-right:4px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease;white-space:nowrap}.mode-btn.active,.mode-btn:hover{background:#6366f114;border-color:#6366f166;color:#a5b4fc}.mode-menu{left:auto;min-width:280px;right:0}.mode-menu-item-active{background:#6366f11a!important;color:#a5b4fc!important}.mode-menu .download-menu-item{display:flex;flex-direction:column;gap:1px;padding:7px 12px}.mode-menu-item-label{color:inherit;font-size:.75rem;font-weight:600}.mode-menu-item-detail{color:#6b7280;font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.68rem}.upload-btn{align-items:center;align-self:center;background:#0000;border:1px solid #ffffff1a;border-radius:4px;color:#6b7280;cursor:pointer;display:flex;height:24px;margin-left:0;margin-right:4px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease}.upload-btn.active,.upload-btn:hover{background:#6366f114;border-color:#6366f166;color:#a5b4fc}.download-menu-wrap,.upload-menu-wrap{align-items:center;align-self:center;display:flex;position:relative}.download-menu{background:#1e1e2e;border:1px solid #ffffff1f;border-radius:6px;box-shadow:0 4px 12px #0006;min-width:130px;overflow:hidden;position:absolute;right:0;top:calc(100% + 6px);z-index:100}.download-menu-item{background:#0000;border:none;color:#d1d5db;cursor:pointer;display:block;font-family:inherit;font-size:12px;padding:8px 12px;text-align:left;transition:background .12s ease,color .12s ease;white-space:nowrap;width:100%}.download-menu-item:hover{background:#6366f126;color:#a5b4fc}.download-btn{align-items:center;align-self:center;background:#0000;border:1px solid #ffffff1a;border-radius:4px;color:#6b7280;cursor:pointer;display:flex;height:24px;margin-left:0;margin-right:4px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease}.download-btn.active,.download-btn:hover{background:#6366f114;border-color:#6366f166;color:#a5b4fc}.reset-btn{align-items:center;align-self:center;background:#0000;border:1px solid #ffffff1a;border-radius:4px;color:#6b7280;cursor:pointer;display:flex;font-family:inherit;font-size:11px;height:24px;margin-left:0;margin-right:8px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease;white-space:nowrap}.reset-btn:hover{background:#ffffff0d;border-color:#fff3;color:#d1d5db}.reset-btn-confirm{background:#f8717114;border-color:#f8717166;color:#f87171}.reset-btn-confirm:hover{background:#f8717126;border-color:#f8717199;color:#fca5a5}.editor-wrapper{flex:1 1;min-height:0;overflow:hidden}.save-btn{align-items:center;align-self:center;background:#0000;border:1px solid #6366f159;border-radius:4px;color:#818cf8;cursor:pointer;display:flex;font-family:inherit;font-size:11px;gap:4px;height:24px;margin-left:0;margin-right:4px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease;white-space:nowrap}.save-btn:hover:not(:disabled){background:#6366f114;border-color:#6366f199;color:#a5b4fc}.save-btn:disabled{cursor:default;opacity:.5}.save-btn-saved{border-color:#34d39973;color:#34d399}.revert-btn{align-items:center;align-self:center;background:#0000;border:1px solid #fbbf244d;border-radius:4px;color:#fbbf24;cursor:pointer;display:flex;font-family:inherit;font-size:11px;gap:4px;height:24px;margin-left:0;margin-right:4px;padding:0 8px;transition:color .15s ease,border-color .15s ease,background .15s ease;white-space:nowrap}.revert-btn:hover{background:#fbbf2414;border-color:#fbbf248c;color:#fcd34d}.drop-overlay{align-items:center;background:#6366f11f;border:2px dashed #6366f1;display:flex;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:50}.drop-overlay-content{align-items:center;color:#a5b4fc;display:flex;flex-direction:column;font-size:.9375rem;font-weight:600;gap:12px}.drop-confirm-overlay{align-items:center;background:#000000a6;display:flex;inset:0;justify-content:center;position:absolute;z-index:100}.drop-confirm-modal{background:#1e1e2e;border:1px solid #ffffff1f;border-radius:10px;box-shadow:0 8px 32px #0009;max-width:340px;padding:24px;width:90%}.drop-confirm-title{color:#e5e7eb;font-size:1rem;font-weight:600;margin:0 0 10px}.drop-confirm-body{color:#9ca3af;font-size:.875rem;margin:0 0 10px}.drop-confirm-tags{display:flex;gap:6px;margin-bottom:12px}.drop-confirm-tag{background:#6366f12e;border:1px solid #6366f159;border-radius:4px;color:#a5b4fc;font-size:.78rem;font-weight:600;padding:2px 8px}.drop-confirm-note{color:#6b7280;font-size:.8125rem;font-style:italic;margin:0 0 20px}.drop-confirm-actions{display:flex;gap:8px;justify-content:flex-end}.drop-confirm-cancel{background:#0000;border:1px solid #ffffff1f;border-radius:6px;color:#9ca3af;cursor:pointer;font-family:inherit;font-size:.875rem;padding:6px 14px;transition:background .12s ease,color .12s ease}.drop-confirm-cancel:hover{background:#ffffff0f;color:#d1d5db}.drop-confirm-apply{background:#6366f1;border:none;border-radius:6px;color:#fff;cursor:pointer;font-family:inherit;font-size:.875rem;font-weight:600;padding:6px 14px;transition:background .12s ease}.drop-confirm-apply:hover{background:#4f46e5}.browser-preview{background:#fff;display:flex;flex-direction:column;height:100%}.tab-strip{align-items:stretch;background:#dee1e6;display:flex;flex-shrink:0;height:38px;padding-left:8px}.tab-row{align-items:flex-end;flex:1 1;gap:0}.browser-tab,.tab-row{display:flex;min-width:0}.browser-tab{align-items:center;align-self:flex-end;background:#fff;border-radius:8px 8px 0 0;box-shadow:0 1px 3px #0000001f;color:#3c4043;font-size:.78rem;font-weight:500;gap:7px;height:30px;max-width:220px;padding:0 14px 0 12px;white-space:nowrap}.tab-favicon{color:#5f6368;flex-shrink:0}.tab-favicon-img{flex-shrink:0;height:14px;object-fit:contain;width:14px}.tab-title{overflow:hidden;text-overflow:ellipsis}.new-tab-btn{align-items:center;align-self:flex-end;background:#0000;border:none;border-radius:50%;color:#5f6368;cursor:default;display:flex;flex-shrink:0;height:28px;justify-content:center;margin-bottom:1px;opacity:.45;width:28px}.window-controls{align-items:stretch;margin-left:auto}.wc-btn,.window-controls{display:flex;flex-shrink:0}.wc-btn{align-items:center;background:#0000;border:none;color:#3c4043;cursor:pointer;height:38px;justify-content:center;transition:background .1s ease;width:46px}.wc-max:hover,.wc-min:hover{background:#0000001a}.wc-close:hover{background:#c42b1c;color:#fff}.chrome-toolbar{background:#f1f3f4;border-bottom:1px solid #dadce0;gap:2px;height:44px;padding:5px 10px}.chrome-icon-btn,.chrome-toolbar{align-items:center;display:flex;flex-shrink:0}.chrome-icon-btn{background:#0000;border:none;border-radius:50%;color:#3c4043;cursor:pointer;height:32px;justify-content:center;transition:background .1s ease;width:32px}.nav-btn{cursor:default;opacity:.3}.refresh-btn{color:#3c4043;margin-right:4px;opacity:1}.refresh-btn:hover{background:#3c40431f;color:#1a73e8}.refresh-btn:active{background:#1a73e829;color:#1a73e8}.side-btn{cursor:default;opacity:.5}.omnibox{align-items:center;background:#fff;border:1.5px solid #dadce0;border-radius:16px;cursor:default;display:flex;flex:1 1;gap:7px;height:30px;padding:0 14px;-webkit-user-select:none;user-select:none}.omnibox-lock{color:#188038;flex-shrink:0}.omnibox-url{color:#202124;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.8125rem;letter-spacing:.01em}.console-toggle-btn{opacity:.75;position:relative}.console-toggle-btn:hover{background:#3c40431f;opacity:1}.console-toggle-btn.active{background:#1a73e81a;color:#1a73e8;opacity:1}.console-toggle-btn.has-errors svg{transform:scale(1.4);transform-origin:center}.browser-content{display:flex;flex:1 1;min-height:0;overflow:hidden;position:relative}.syntax-error-banner{align-items:center;background:#7f1d1d;border-top:1px solid #991b1b;color:#fecaca;display:flex;flex-shrink:0;font-family:Consolas,Menlo,monospace;font-size:.78rem;gap:8px;padding:7px 14px}.syntax-error-banner strong{color:#fca5a5;font-weight:700}.syntax-error-dismiss{background:#0000;border:none;color:#fca5a5;cursor:pointer;font-size:1rem;line-height:1;margin-left:auto;opacity:.75;padding:0 4px;transition:opacity .1s}.syntax-error-dismiss:hover{opacity:1}.console-panel{background:#1e1e1e;border-left:1px solid #333;display:flex;flex-direction:column;flex-shrink:0;font-family:Consolas,Menlo,Monaco,monospace;font-size:.78rem;overflow:hidden;position:relative}.console-resize-handle{bottom:0;cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='16'%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' d='M11 1v14'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' fill='none' d='M4 8H0'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M2 5 0 8l2 3'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' fill='none' d='M18 8h4'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none' d='m20 5 2 3-2 3'/%3E%3C/svg%3E") 11 8,col-resize;left:0;position:absolute;top:0;transition:background .15s ease;width:5px;z-index:10}.console-resize-handle:hover{background:#6366f159}.resize-overlay{cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='16'%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' d='M11 1v14'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' fill='none' d='M4 8H0'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none' d='M2 5 0 8l2 3'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' fill='none' d='M18 8h4'/%3E%3Cpath stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none' d='m20 5 2 3-2 3'/%3E%3C/svg%3E") 11 8,col-resize;inset:0;position:absolute;z-index:100}.console-panel-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #444;display:flex;flex-shrink:0;gap:6px;justify-content:space-between;min-height:32px;padding:2px 8px 2px 12px}.console-tabs{display:flex;gap:2px}.console-tab-btn{background:none;border:none;border-radius:3px;color:#6b7280;cursor:pointer;font-family:inherit;font-size:.7rem;font-weight:600;letter-spacing:.05em;padding:3px 8px;text-transform:uppercase;transition:color .1s,background .1s}.console-tab-btn:hover{background:#ffffff0f;color:#d1d5db}.console-tab-btn.active{background:#ffffff1a;color:#e5e7eb}.console-header-right{align-items:center;display:flex;gap:6px;margin-left:auto}.console-filter-chips{display:flex;gap:3px}.console-filter-chip{background:#ffffff0d;border:1px solid #ffffff14;border-radius:3px;color:#4b5563;cursor:pointer;font-family:inherit;font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:1px 5px;transition:background .12s,color .12s,border-color .12s}.console-filter-chip.filter-error.active{background:#ef444426;border-color:#ef444466;color:#ef4444}.console-filter-chip.filter-warn.active{background:#fbbf241f;border-color:#fbbf2466;color:#fbbf24}.console-filter-chip.filter-log.active{background:#6b728026;border-color:#ffffff1f;color:#9ca3af}.console-filter-chip:hover{opacity:.85}.console-clear-btn{background:none;border:none;border-radius:3px;color:#6b7280;cursor:pointer;font-family:inherit;font-size:.72rem;padding:2px 6px;transition:background .1s,color .1s}.console-clear-btn:hover{background:#ffffff14;color:#d1d5db}.console-tab-body{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:hidden}.console-entries{flex:1 1;min-height:0;overflow-y:auto;padding:4px 0}.console-empty{color:#6b7280;font-size:.75rem;font-style:italic;padding:8px 12px}.console-entry{border-bottom:1px solid #ffffff08;cursor:default;display:flex;flex-direction:column;line-height:1.4;padding:3px 12px}.console-entry:last-child{border-bottom:none}.console-entry-linked{cursor:pointer}.console-entry-linked:hover{background:#ffffff0a}.console-entry-main{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px}.console-level{flex-shrink:0;font-size:.68rem;font-weight:700;letter-spacing:.04em;padding-top:1px;text-transform:uppercase;width:34px}.console-message{color:#e5e7eb;flex:1 1;white-space:pre-wrap;word-break:break-all}.console-line-link{color:#6b7280;flex-shrink:0;font-size:.7rem;margin-left:4px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.console-stack-btn{background:none;border:none;color:#6b7280;cursor:pointer;flex-shrink:0;font-family:inherit;font-size:.68rem;padding:0 4px;transition:color .1s}.console-stack-btn:hover{color:#9ca3af}.console-entry-source-line{padding:3px 8px 3px 42px}.console-entry-source-line code{background:#ffffff0d;border-radius:3px;color:#9ca3af;display:block;font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.7rem;max-width:100%;overflow:hidden;padding:1px 5px;text-overflow:ellipsis;white-space:pre}.console-stack{border-left:2px solid #333;margin-left:2px;margin-top:3px;padding-left:42px}.console-stack-frame{color:#6b7280;font-size:.7rem;line-height:1.5;white-space:pre-wrap;word-break:break-all}.console-log .console-level{color:#6b7280}.console-info .console-level{color:#60a5fa}.console-info .console-message{color:#93c5fd}.console-warn{background:#fbbf2412}.console-warn .console-level{color:#fbbf24}.console-warn .console-message{color:#fde68a}.console-error{background:#ef44441a}.console-error .console-level{color:#ef4444}.console-error .console-message{color:#fca5a5}.console-arg{display:inline}.obj-node{display:inline-block;vertical-align:top}.obj-toggle{background:none;border:none;color:#a5b4fc;cursor:pointer;font-family:inherit;font-size:.75rem;padding:0;transition:color .1s;white-space:nowrap}.obj-toggle:hover{color:#818cf8}.obj-children{border-left:1px solid #333;margin-left:4px;padding-left:14px}.obj-row{display:flex;flex-wrap:wrap;line-height:1.5}.obj-key{color:#a5b4fc;font-size:.73rem}.obj-primitive{color:#86efac;font-size:.73rem}.obj-ellipsis{color:#6b7280;font-size:.73rem}.console-repl{background:#181818;border-top:1px solid #333;flex-shrink:0}.console-repl-history{max-height:120px;overflow-y:auto;padding:4px 0}.console-repl-entry{padding:2px 10px}.console-repl-expr{color:#d1d5db;display:flex;font-size:.73rem;gap:6px}.console-repl-prompt{color:#6366f1;flex-shrink:0;font-weight:700}.console-repl-expr-text{color:#e5e7eb}.console-repl-result{color:#86efac;display:flex;font-size:.73rem;gap:6px;padding-left:2px}.console-repl-error{color:#fca5a5}.console-repl-arrow{color:#6b7280;flex-shrink:0}.console-repl-pending{color:#4b5563;font-size:.73rem;padding-left:12px}.console-repl-input-row{align-items:center;border-top:1px solid #2a2a2a;display:flex;gap:6px;padding:5px 8px 5px 10px}.console-repl-input{background:#0000;border:none;caret-color:#a5b4fc;color:#e5e7eb;flex:1 1;font-family:Consolas,Menlo,monospace;font-size:.75rem;outline:none}.console-repl-input::placeholder{color:#4b5563}.console-repl-run{background:#6366f126;border:1px solid #6366f14d;border-radius:3px;color:#a5b4fc;cursor:pointer;flex-shrink:0;font-family:inherit;font-size:.68rem;padding:2px 7px;transition:background .1s,color .1s}.console-repl-run:hover{background:#6366f147;color:#c7d2fe}.console-source{background:#1e1e1e;flex:1 1;min-height:0;overflow-x:auto;overflow-y:auto}.console-source-info{background:#2d2d2d;border-bottom:1px solid #444;color:#fbbf24;font-size:.7rem;padding:5px 12px;position:-webkit-sticky;position:sticky;top:0;white-space:nowrap;z-index:5}.console-source-body{display:flex;min-width:-webkit-max-content;min-width:max-content;position:relative}.console-source-line-highlight{background:#ef44442e;border-left:3px solid #ef4444;height:18px;left:0;pointer-events:none;position:absolute;right:0;z-index:1}.console-source-gutter{background:#1e1e1e;border-right:1px solid #333;flex-shrink:0;left:0;padding-right:0;position:-webkit-sticky;position:sticky;-webkit-user-select:none;user-select:none;z-index:2}.console-source-linenum{align-items:center;color:#4b5563;display:flex;font-size:.73rem;height:18px;justify-content:flex-end;line-height:18px;min-width:42px;padding-right:10px}.console-source-linenum.line-highlighted{background:#ef444426;color:#fca5a5}.console-source-pre{background:#0000!important;color:#d4d4d4;font-family:Consolas,Menlo,Monaco,monospace!important;font-size:.73rem!important;line-height:18px!important;margin:0;padding:0 14px;tab-size:2;white-space:pre!important}.console-source-pre .token.tag{color:#569cd6}.console-source-pre .token.attr-name{color:#9cdcfe}.console-source-pre .token.attr-value,.console-source-pre .token.string{color:#ce9178}.console-source-pre .token.comment{color:#6a9955}.console-source-pre .token.keyword{color:#569cd6}.console-source-pre .token.number{color:#b5cea8}.console-source-pre .token.function{color:#dcdcaa}.console-source-pre .token.operator,.console-source-pre .token.punctuation{color:#d4d4d4}.console-source-pre .token.cdata,.console-source-pre .token.doctype,.console-source-pre .token.prolog{color:grey}.browser-iframe{background:#fff;border:none;display:block;flex:1 1;min-width:0}.client-panel{background:var(--bg);border-left:3px solid var(--accent);box-sizing:border-box;color:var(--text);display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}[data-theme=dark] .client-panel{box-shadow:inset 15px 0 30px -15px var(--accent-glow)}.modal-header{align-items:center;background:var(--surface);border-bottom:1px solid var(--divider);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 16px}.modal-header-left{align-items:center;display:flex;gap:10px}.modal-avatar{align-items:center;background:var(--icon-bg);border-radius:50%;color:var(--icon-accent);display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.modal-header h2{color:var(--text);font-size:.9375rem;font-weight:600;line-height:1.2;margin:0}.modal-status{align-items:center;color:var(--text-muted);display:flex;font-size:.75rem;gap:5px;margin-top:1px}.modal-status:before{background:var(--accent);border-radius:50%;content:"";display:inline-block;flex-shrink:0;height:6px;width:6px}.close-btn{align-items:center;background:#0000;border:none;border-radius:6px;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;height:30px;justify-content:center;transition:color .12s ease,background .12s ease;width:30px}.close-btn:hover{background:var(--surface-hi);color:var(--text)}.close-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modal-body{background:var(--bg);flex:1 1;min-height:0;overflow:hidden}.modal-body,.session-picker{display:flex;flex-direction:column}.session-picker{gap:12px;padding:4px 0}.session-picker-header h3{color:var(--text);font-size:.9375rem;font-weight:600;margin:0 0 4px}.session-picker-header p{color:var(--text-muted);font-size:.8rem;margin:0}.session-picker-loading{color:var(--text-dim);font-size:.8rem;padding:8px 0}.session-picker-list{display:flex;flex-direction:column;gap:7px}.session-picker-item{background:var(--surface);border:1px solid var(--divider);border-radius:8px;cursor:pointer;display:flex;flex-direction:column;font-family:inherit;gap:4px;padding:12px 14px;text-align:left;transition:border-color .13s,box-shadow .13s,background .13s}.session-picker-item:hover{background:var(--surface-hi);border-color:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft)}.spi-meta{align-items:center;display:flex;gap:8px;justify-content:space-between}.spi-unit{color:var(--text);font-size:.8125rem;font-weight:600}.spi-status{border-radius:10px;flex-shrink:0;font-size:.7rem;font-weight:500;padding:2px 7px;text-transform:capitalize}.spi-status-active{background:var(--icon-bg);color:var(--icon-accent)}.spi-status-complete{background:var(--surface-hi);color:var(--text-dim)}.spi-topics{color:var(--text-muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spi-date{color:var(--text-dim);font-size:.7rem}.session-picker-new{background:#0000;border:1.5px dashed var(--divider);border-radius:8px;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:.8125rem;padding:10px;transition:border-color .13s,color .13s;width:100%}.session-picker-new:hover{border-color:var(--accent);color:var(--accent)}.setup-screen{background:var(--bg);display:flex;flex:1 1;flex-direction:column;gap:18px;overflow-y:auto;padding:18px}.helper-blurb{background:var(--surface);border:1px solid var(--divider);border-radius:10px;padding:16px}.helper-blurb h3{color:var(--text);font-size:.9375rem;font-weight:600;margin:0 0 10px}.helper-blurb p{color:var(--text-muted);font-size:.8rem;line-height:1.6;margin:0 0 10px}.blurb-list{display:flex;flex-direction:column;gap:6px;margin:0 0 10px;padding-left:16px}.blurb-list li{color:var(--text-muted);font-size:.8rem;line-height:1.5}.blurb-footer{color:var(--text-dim)!important;font-size:.8rem!important;font-style:italic;margin:0!important}.setup-form{gap:14px}.form-group,.setup-form{display:flex;flex-direction:column}.form-group{gap:4px}.form-group label{color:var(--text);font-size:.8125rem;font-weight:500}.required-star{color:#ef4444;margin-left:1px}.optional-label{margin-left:3px}.setup-input{background:var(--surface-hi);border:1px solid var(--divider);border-radius:7px;color:var(--text);font-family:inherit;font-size:.875rem;padding:9px 12px;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.setup-input::placeholder{color:var(--text-dim)}.setup-input:focus{background:var(--surface);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field-hint{color:var(--text-dim);font-size:.75rem}.setup-input-disabled{cursor:not-allowed;opacity:.45}.setup-textarea{font-family:inherit;min-height:56px;resize:vertical}.form-row{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.checkbox-label{align-items:center;color:var(--text-muted);cursor:pointer;display:flex;font-size:.8rem;gap:7px;margin-top:2px;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{accent-color:var(--accent);cursor:pointer;flex-shrink:0;height:14px;width:14px}.btn-start{background:var(--accent);border:none;border-radius:8px;color:var(--bg);cursor:pointer;font-size:.875rem;font-weight:500;letter-spacing:.1px;padding:10px 16px;transition:opacity .15s ease;width:100%}.btn-start:hover:not(:disabled){opacity:.88}.btn-start:disabled{background:var(--accent-soft);color:var(--text-dim);cursor:not-allowed}.btn-start:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.setup-context-block{background:var(--surface-hi);border:1px solid var(--divider);border-radius:8px;display:flex;flex-direction:column;gap:6px;padding:10px 12px}.setup-context-row{align-items:flex-start;display:flex;gap:8px}.setup-context-label{color:var(--text-dim);flex-shrink:0;font-size:.75rem;font-weight:600;letter-spacing:.04em;min-width:52px;padding-top:1px;text-transform:uppercase}.setup-context-value{color:var(--text-muted);font-size:.8125rem;line-height:1.45}.error-message{background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#b91c1c;font-size:.875rem;margin:16px;padding:12px 14px}.error{color:#b91c1c;font-size:.8125rem;margin:4px 0 0}.chat-section{position:relative}.chat-section,.messages-list{background:var(--bg);display:flex;flex:1 1;flex-direction:column;min-height:0}.messages-list{gap:8px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:16px}.messages-list::-webkit-scrollbar{width:4px}.messages-list::-webkit-scrollbar-track{background:var(--bg)}.messages-list::-webkit-scrollbar-thumb{background:var(--divider);border-radius:10px}.messages-list::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.message{align-items:flex-end;display:flex;gap:8px}.msg-user{flex-direction:row-reverse}.msg-assistant{flex-direction:row}.msg-avatar{align-items:center;background:var(--icon-accent);border-radius:50%;color:var(--bg);display:flex;flex-shrink:0;font-size:.6875rem;font-weight:600;height:26px;justify-content:center;margin-bottom:2px;width:26px}.bubble-wrap{align-items:flex-start;display:flex;flex-direction:column;gap:3px;max-width:72%;min-width:0}.msg-user .bubble-wrap{align-items:flex-end}.msg-assistant .bubble-wrap{max-width:90%}.bubble-actions{align-items:center;align-self:flex-start;display:flex;gap:2px}.msg-user .bubble-actions{align-self:flex-end}.bubble-copy-btn,.bubble-retry-btn{align-items:center;background:#0000;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;display:flex;justify-content:center;opacity:0;padding:2px 4px;pointer-events:none;transition:opacity .12s ease,color .12s ease}.bubble-wrap:hover .bubble-copy-btn,.bubble-wrap:hover .bubble-retry-btn{opacity:1;pointer-events:auto}.bubble-copy-btn:hover,.bubble-retry-btn:hover{color:var(--text-muted)}.message-bubble{word-wrap:break-word;border-radius:14px;min-width:0;overflow:hidden;padding:9px 13px}.msg-user .message-bubble{background:var(--accent-soft);border-bottom-right-radius:4px;color:var(--text)}.msg-assistant .message-bubble{background:var(--surface-hi);border:1px solid var(--divider);border-bottom-left-radius:4px;color:var(--text)}.message-bubble p{color:var(--text);font-size:.875rem;line-height:1.5;margin:0}.message-bubble .md{color:var(--text);font-size:.875rem;line-height:1.55}.message-bubble .md>*+*{margin-top:6px}.message-bubble .md p{color:var(--text);margin:0}.message-bubble .md p+p{margin-top:6px}.message-bubble .md ol,.message-bubble .md ul{color:var(--text);margin:4px 0;padding-left:18px}.message-bubble .md li{margin:2px 0}.message-bubble .md strong{color:var(--text);font-weight:600}.message-bubble .md em{font-style:italic}.message-bubble .md h1,.message-bubble .md h2,.message-bubble .md h3{color:var(--text);font-size:.9375rem;font-weight:600;margin:4px 0 2px}.message-bubble .md table{border-collapse:collapse;font-size:.8rem;margin:6px 0;width:100%}.message-bubble .md td,.message-bubble .md th{border:1px solid var(--divider);line-height:1.45;padding:5px 8px;text-align:left;vertical-align:top}.message-bubble .md th{background:var(--surface-hi);color:var(--text);font-weight:600;white-space:nowrap}.message-bubble .md tr:nth-child(2n) td{background:var(--surface)}.code-block-wrapper{border-radius:6px;margin:6px 0;overflow:hidden}.code-block-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #ffffff12;display:flex;justify-content:space-between;padding:6px 10px 6px 12px}.code-block-lang{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.75rem;gap:6px;-webkit-user-select:none;user-select:none}.code-block-lang,.code-copy-btn{align-items:center;color:#9ca3af;display:flex}.code-copy-btn{background:#0000;border:none;border-radius:3px;cursor:pointer;justify-content:center;line-height:1;padding:3px 5px;transition:color .12s ease,background .12s ease}.code-copy-btn:hover{background:#ffffff1a;color:#e5e7eb}.message-bubble .md pre{background:#2d2d2d;border-radius:0;color:#d4d4d4;font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.78rem;line-height:1.5;margin:0;overflow-x:auto;padding:10px 12px;white-space:pre}.message-bubble .md pre code{background:none;border-radius:0;color:inherit;font-size:inherit;padding:0}.message-bubble .md code{background:var(--surface-hi);border:1px solid var(--divider);border-radius:4px;color:var(--text);font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.8rem;padding:1px 5px}.typing-bubble{align-items:center;display:flex;gap:4px;min-width:52px;padding:12px 14px}.dot{animation:bounce 1.2s ease-in-out infinite;background:var(--text-dim);border-radius:50%;display:block;height:6px;width:6px}.dot:first-child{animation-delay:0s}.dot:nth-child(2){animation-delay:.18s}.dot:nth-child(3){animation-delay:.36s}@keyframes bounce{0%,60%,to{opacity:.6;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.chat-footer{background:var(--surface);border-top:1px solid var(--divider);display:flex;flex-direction:column;flex-shrink:0;gap:8px;padding:12px 14px}.chat-error{margin:0}.csv-block{background:var(--surface);border:1px solid var(--divider);border-radius:8px;margin:6px 0;overflow:hidden}.csv-block-header{align-items:center;background:var(--surface-hi);border-bottom:1px solid var(--divider);display:flex;gap:8px;justify-content:space-between;padding:8px 11px}.csv-block-info{align-items:center;color:var(--text-muted);display:flex;gap:7px;min-width:0}.csv-filename{color:var(--text);font-size:.8125rem;font-weight:600}.csv-rowcount{color:var(--text-dim);font-size:.75rem}.csv-download-btn{align-items:center;background:var(--accent);border:none;border-radius:5px;color:var(--bg);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;font-size:.75rem;font-weight:500;gap:5px;padding:4px 10px;transition:opacity .12s ease}.csv-download-btn:hover{opacity:.88}.csv-download-btn:active{opacity:.75}.csv-block-preview{color:var(--text-muted);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.72rem;line-height:1.6;overflow-x:auto;padding:8px 11px}.csv-row{white-space:pre}.csv-row-header{border-bottom:1px solid var(--divider);color:var(--text);font-weight:600;margin-bottom:3px;padding-bottom:3px}.csv-row-more{color:var(--text-dim);font-size:.7rem;margin-top:3px}.pasted-preview{align-self:flex-start;display:inline-flex;position:relative}.pasted-thumb{border:1px solid var(--divider);border-radius:8px;display:block;max-height:80px;max-width:100%;object-fit:contain}.pasted-remove{align-items:center;background:var(--text);border:none;border-radius:50%;color:var(--bg);cursor:pointer;display:flex;height:18px;justify-content:center;padding:0;position:absolute;right:-6px;top:-6px;transition:opacity .12s;width:18px}.pasted-remove:hover{opacity:.8}.msg-image-badge{align-items:center;background:var(--surface);border:1px solid var(--divider);border-radius:4px;color:var(--text-muted);display:inline-flex;font-size:.75rem;gap:5px;margin-bottom:4px;padding:3px 7px}.chat-input-form{align-items:center;display:flex;gap:8px}.chat-input{background:var(--surface-hi);border:1px solid var(--divider);border-radius:20px;color:var(--text);flex:1 1;font-family:inherit;font-size:.875rem;line-height:1.5;max-height:140px;min-height:36px;overflow:hidden;overflow-y:auto;padding:9px 13px;resize:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.chat-input::placeholder{color:var(--text-dim)}.chat-input:focus{background:var(--surface);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.chat-input:disabled{cursor:not-allowed;opacity:.55}.chat-input-listening{border-color:#fca5a5!important;box-shadow:0 0 0 3px #ef444414!important}.btn-mic{align-items:center;background:#0000;border:1px solid var(--divider);border-radius:50%;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;height:34px;justify-content:center;transition:background .15s ease,color .15s ease,border-color .15s ease;width:34px}.btn-mic:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent)}.btn-mic:disabled{cursor:not-allowed;opacity:.4}.btn-mic:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-mic-active{animation:mic-pulse 1.4s ease-in-out infinite;background:#fef2f2;border-color:#fca5a5;color:#ef4444}.btn-mic-active:hover:not(:disabled){background:#fee2e2;border-color:#f87171;color:#dc2626}@keyframes mic-pulse{0%,to{box-shadow:0 0 0 0 #ef444440}50%{box-shadow:0 0 0 5px #ef444400}}.btn-send{align-items:center;background:var(--accent);border:none;border-radius:50%;color:var(--bg);cursor:pointer;display:flex;flex-shrink:0;height:34px;justify-content:center;transition:opacity .15s ease,transform .1s ease;width:34px}.btn-send:hover:not(:disabled){opacity:.88}.btn-send:active:not(:disabled){transform:scale(.93)}.btn-send:disabled{background:var(--surface-hi);color:var(--text-dim);cursor:not-allowed}.btn-send:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.send-spinner{animation:spin .7s linear infinite;border:2px solid #ffffff59;border-radius:50%;border-top:2px solid var(--bg);display:block;height:13px;width:13px}[data-theme=dark] .send-spinner{border-color:#00000040;border-top-color:var(--bg)}.finish-lecture-bar{border-bottom:1px solid var(--divider);display:flex;justify-content:flex-end;margin-bottom:2px;padding-bottom:6px}.lecture-finish-btn{background:var(--accent);border:none;border-radius:20px;box-shadow:0 2px 10px var(--accent-glow);color:var(--bg);cursor:pointer;font-family:inherit;font-size:12px;font-weight:600;padding:7px 18px;transition:opacity .15s,box-shadow .15s;white-space:nowrap}.lecture-finish-btn:hover:not(:disabled){box-shadow:0 4px 18px var(--accent-glow);opacity:.88}.lecture-finish-btn:disabled{cursor:not-allowed;opacity:.5}.lecture-done-bar{align-items:center;background:var(--accent-soft);border-top:1px solid var(--accent-soft);display:flex;gap:12px;justify-content:space-between;padding:12px 16px}.lecture-done-text{color:var(--text-muted);font-size:13px}.lecture-done-home{background:var(--accent);border:none;border-radius:6px;color:var(--bg);cursor:pointer;font-size:13px;font-weight:600;padding:7px 16px;transition:opacity .15s}.lecture-done-home:hover{opacity:.88}.report-download{align-items:center;background:var(--surface-hi);border:1px solid var(--accent-soft);border-radius:8px;display:flex;flex-wrap:wrap;gap:8px 10px;justify-content:space-between;margin:8px 0 2px;padding:10px 12px}.report-download-info{align-items:center;color:var(--icon-accent);display:flex;gap:9px;min-width:0}.report-download-title{color:var(--text);font-size:.8125rem;font-weight:600;line-height:1.3}.report-download-subtitle{color:var(--text-muted);font-size:.75rem;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-prompt-banner{align-items:center;background:var(--surface-hi);border-bottom:1px solid var(--divider);display:flex;flex-shrink:0;gap:10px;justify-content:space-between;padding:10px 14px}.save-prompt-text{align-items:center;color:var(--text);display:flex;font-size:.8125rem;font-weight:500;gap:8px;min-width:0}.save-prompt-actions{display:flex;flex-shrink:0;gap:6px}.save-prompt-btn-primary{background:var(--accent);border:none;border-radius:5px;color:var(--bg);cursor:pointer;font-family:inherit;font-size:.75rem;font-weight:500;padding:4px 12px;transition:opacity .12s ease}.save-prompt-btn-primary:hover{opacity:.88}.save-prompt-btn-dismiss{background:#0000;border:1px solid var(--accent-soft);border-radius:5px;color:var(--accent);cursor:pointer;font-family:inherit;font-size:.75rem;font-weight:500;padding:4px 10px;transition:background .12s ease}.save-prompt-btn-dismiss:hover{background:var(--accent-soft)}.mode-select-screen{display:flex;flex-direction:column;gap:20px;padding:8px 0}.mode-select-heading{color:var(--text);font-size:17px;font-weight:700;margin:0}.mode-select-sub{color:var(--text-muted);font-size:13px;margin:-12px 0 0}.mode-cards{gap:10px}.mode-card,.mode-cards{display:flex;flex-direction:column}.mode-card{background:var(--surface-hi);border:1.5px solid var(--divider);border-radius:10px;cursor:pointer;font-family:inherit;gap:6px;padding:16px 18px;text-align:left;transition:border-color .15s,background .15s,box-shadow .15s}.mode-card:hover{background:var(--surface);border-color:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft)}.mode-card-icon{align-items:center;color:var(--icon-accent);display:flex;margin-bottom:2px}.mode-card-title{color:var(--text);font-size:14px;font-weight:600}.mode-card-desc{color:var(--text-muted);font-size:12px;line-height:1.5}.mode-back-btn{align-items:center;background:none;border:none;color:var(--icon-accent);cursor:pointer;display:inline-flex;font-family:inherit;font-size:12px;gap:5px;margin-bottom:12px;padding:0;transition:opacity .15s}.mode-back-btn:hover{opacity:.75}@media (max-width:640px){.client-panel{border-left:none;border-radius:0;border-top:3px solid var(--accent);height:100%}[data-theme=dark] .client-panel{box-shadow:none}.chat-footer{padding-bottom:calc(12px + env(safe-area-inset-bottom, 0px))}.messages-list{-webkit-overflow-scrolling:touch}.chat-input,.setup-input{font-size:16px}.btn-mic,.btn-send,.close-btn{height:44px;width:44px}.code-copy-btn{min-height:44px;min-width:44px;padding:10px}.bubble-copy-btn,.bubble-retry-btn{min-height:44px;min-width:44px;opacity:1;padding:12px;pointer-events:auto}.bubble-wrap{max-width:85%}.msg-assistant .bubble-wrap{max-width:calc(100% - 34px)}.message-bubble{word-break:break-word}.code-block-wrapper,.csv-block-preview{overflow-x:auto}.finish-lecture-bar{justify-content:stretch}.lecture-finish-btn{border-radius:8px;font-size:14px;padding:12px 16px;width:100%}.save-prompt-banner{flex-wrap:wrap;gap:8px}.save-prompt-actions{flex-wrap:wrap;width:100%}.save-prompt-btn-dismiss,.save-prompt-btn-primary{flex:1 1;padding:8px 12px;text-align:center}.form-row{grid-template-columns:1fr}.lecture-done-bar{flex-direction:column;gap:8px}.lecture-done-home{padding:11px 16px;width:100%}}.welcome-overlay{align-items:center;animation:wm-fade .18s ease;background:#00000073;display:flex;inset:0;justify-content:center;position:fixed;z-index:2000}@keyframes wm-fade{0%{opacity:0}to{opacity:1}}.welcome-modal{animation:wm-slide .2s ease;background:#fff;border-radius:14px;box-shadow:0 20px 60px #0003;max-width:calc(100vw - 32px);padding:28px 32px 24px;position:relative;width:520px}@keyframes wm-slide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.welcome-close{align-items:center;background:#0000;border:none;border-radius:5px;color:#9ca3af;cursor:pointer;display:flex;justify-content:center;padding:5px;position:absolute;right:14px;top:14px;transition:color .12s,background .12s}.welcome-close:hover{background:#f3f4f6;color:#374151}.welcome-header{margin-bottom:18px;text-align:center}.welcome-logo{height:32px;margin-bottom:8px;object-fit:contain;width:32px}.welcome-title{color:#111827;font-size:1.2rem;font-weight:700;letter-spacing:-.2px;margin:0 0 6px}.welcome-subtitle{color:#6b7280;font-size:.875rem;line-height:1.55;margin:0}.welcome-steps{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.welcome-step{align-items:flex-start;display:flex;gap:12px}.step-icon{align-items:center;border-radius:7px;display:flex;flex-shrink:0;height:28px;justify-content:center;margin-top:1px;width:28px}.step-icon-editor{background:#eff6ff;color:#3b82f6}.step-icon-preview{background:#f0fdf4;color:#22c55e}.step-icon-chat{background:#faf5ff;color:#a855f7}.step-text{color:#374151;font-size:.875rem;line-height:1.5}.step-text strong{color:#111827}.welcome-file-modes{margin-bottom:18px}.welcome-file-modes-label{color:#374151;font-size:.8125rem;font-weight:600;margin:0 0 10px}.welcome-mode-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.welcome-mode-option{align-items:flex-start;background:#f9fafb;border:1.5px solid #e5e7eb;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;font-family:inherit;gap:2px;padding:8px 10px;text-align:left;transition:border-color .12s ease,background .12s ease;width:100%}.welcome-mode-option:hover{background:#f5f3ff;border-color:#a5b4fc}.welcome-mode-option.selected{background:#eef2ff;border-color:#6366f1}.welcome-mode-count{color:#9ca3af;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.welcome-mode-option.selected .welcome-mode-count{color:#6366f1}.welcome-mode-files{align-items:center;display:flex;flex-wrap:wrap;gap:1px;line-height:1.4}.welcome-mode-filename{color:#111827;font-family:Fira Code,Cascadia Code,Consolas,monospace;font-size:.75rem}.welcome-mode-sep{color:#9ca3af;font-size:.75rem}.welcome-mode-desc{color:#9ca3af;font-size:.72rem;line-height:1.4}.welcome-cta{background:#6366f1;border:none;border-radius:8px;color:#fff;cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:600;padding:10px;transition:background .15s ease;width:100%}.welcome-cta:hover{background:#5254cc}.welcome-cta:active{background:#4749b5}:root{--bg:#f4f6f9;--surface:#fff;--surface-hi:#ebeef2;--divider:#00000014;--text:#0f1117;--text-muted:#5a6470;--text-dim:#9ca3af;--accent:#0d9e72;--accent-soft:#0d9e722e;--accent-glow:#0d9e7240;--icon-accent:#6366f1;--icon-bg:#6366f11a;--locked:#9ca3af;--glow-accent:0 0 14px var(--accent-glow),0 0 1px var(--accent-soft);--glow-card:0 0 0 1px var(--accent-soft),0 4px 20px #00000012;--wm-color:rgba(0,0,0,.035);--check-fg:#fff;--badge-lock-bg:#0000000d;--pill-hover-border:#00000024;--ring-track:#00000014;--logout-hover-border:#0000002e;--r-pill:999px;--r-card:16px;--r-badge:8px}[data-theme=dark]{--bg:#080b0d;--surface:#0e1417;--surface-hi:#12191d;--divider:#ffffff0f;--text:#f4f7fa;--text-muted:#8a94a0;--text-dim:#5a6470;--accent:#3ee8b5;--accent-soft:#3ee8b547;--accent-glow:#3ee8b573;--icon-accent:#7c89f6;--icon-bg:#7c89f61f;--locked:#5a6470;--glow-accent:0 0 24px var(--accent-glow),0 0 1px var(--accent-soft);--glow-card:0 0 0 1px var(--accent-soft),0 8px 40px #00000080;--wm-color:hsla(0,0%,100%,.025);--check-fg:#080b0d;--badge-lock-bg:#ffffff0d;--pill-hover-border:#ffffff1f;--ring-track:#ffffff14;--logout-hover-border:#fff3}.landing-root{background:#f4f6f9;background:var(--bg);color:#0f1117;color:var(--text);display:flex;flex-direction:column;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-height:100vh;overflow-x:hidden;position:relative}.landing-watermarks{inset:0;overflow:hidden;pointer-events:none;position:fixed;-webkit-user-select:none;user-select:none;z-index:0}.wm-x{color:rgba(0,0,0,.035);color:var(--wm-color);font-family:Inter,-apple-system,sans-serif;font-size:420px;font-weight:900;line-height:1;position:absolute}.wm-1{left:-80px;top:-100px}.wm-2{font-size:320px;right:-120px;top:30%}.wm-3{bottom:-140px;font-size:500px;left:30%}.landing-header{align-items:center;border-bottom:1px solid #00000014;border-bottom:1px solid var(--divider);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 28px;position:relative;z-index:1}.landing-header-left{align-items:center;display:flex;gap:8px}.landing-brand{color:#0f1117;color:var(--text);font-size:17px;font-weight:700;letter-spacing:-.3px}.landing-header-right{align-items:center;display:flex;gap:12px}.landing-avatar{align-items:center;background:#ebeef2;background:var(--surface-hi);border:1px solid #0d9e722e;border:1px solid var(--accent-soft);border-radius:50%;color:#0d9e72;color:var(--accent);cursor:pointer;display:flex;font-family:inherit;font-size:13px;font-weight:700;height:38px;justify-content:center;transition:border-color .15s,box-shadow .15s;width:38px}.landing-avatar:hover{border-color:#0d9e72;border-color:var(--accent);box-shadow:0 0 10px #0d9e7240;box-shadow:0 0 10px var(--accent-glow)}.landing-username{font-size:13px}.landing-logout,.landing-username{color:#5a6470;color:var(--text-muted)}.landing-logout{background:#0000;border:1px solid #00000014;border:1px solid var(--divider);border-radius:6px;cursor:pointer;font-family:inherit;font-size:12px;padding:5px 12px;transition:border-color .15s,color .15s}.landing-logout:hover{border-color:#0000002e;border-color:var(--logout-hover-border);color:#0f1117;color:var(--text)}.landing-main{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:36px;margin:0 auto;max-width:1020px;padding:44px 24px 40px;position:relative;width:100%;z-index:1}.landing-empty,.landing-loading{color:#5a6470;color:var(--text-muted);font-size:13px;padding:6px 0}.landing-roadmap-section{width:100%}.roadmap-section-label{color:#9ca3af;color:var(--text-dim);font-size:11px;font-weight:600;letter-spacing:.08em;margin-bottom:16px;text-transform:uppercase}.roadmap-scroll{-ms-overflow-style:none;align-items:flex-start;display:flex;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}.roadmap-scroll::-webkit-scrollbar{display:none}.roadmap-track{align-items:flex-start;display:flex;flex-shrink:0}.roadmap-node-group{align-items:center;display:flex;flex-direction:column;flex-shrink:0;gap:5px}.roadmap-pill{align-items:center;background:#fff;background:var(--surface);border:1.5px solid #00000014;border:1.5px solid var(--divider);border-radius:999px;border-radius:var(--r-pill);color:#9ca3af;color:var(--text-dim);cursor:pointer;display:flex;font-family:inherit;font-size:14px;font-weight:500;gap:6px;height:40px;padding:0 16px;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;white-space:nowrap}.pill-icon,.pill-right-check{align-items:center;display:flex;flex-shrink:0}.pill-right-check{margin-left:4px}.roadmap-pill-active{background:#3ee8b50f;border:1.5px solid #0d9e72;border:1.5px solid var(--accent);box-shadow:0 0 14px #0d9e7240,0 0 1px #0d9e722e;box-shadow:var(--glow-accent);color:#0d9e72;color:var(--accent)}.roadmap-pill-completed{background:#3ee8b50d;border-color:#0d9e722e;border-color:var(--accent-soft);color:#0d9e72;color:var(--accent)}.roadmap-pill-unlocked{color:#9ca3af;color:var(--text-dim)}.roadmap-pill:hover:not(.roadmap-pill-active){background:#ebeef2;background:var(--surface-hi);border-color:#00000024;border-color:var(--pill-hover-border);color:#5a6470;color:var(--text-muted)}.node-sublabel{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.node-sublabel-completed{color:#0d9e72;color:var(--accent)}.node-sublabel-locked,.node-sublabel-unlocked,.roadmap-pill-locked{color:#9ca3af;color:var(--text-dim)}.roadmap-pill-locked{cursor:default;opacity:.55}.roadmap-pill-locked:hover{background:#fff;background:var(--surface);border-color:#00000014;border-color:var(--divider);box-shadow:none;color:#9ca3af;color:var(--text-dim)}.roadmap-connector{background:#00000014;background:var(--divider);flex-shrink:0;height:2px;margin-top:19px;width:44px}.roadmap-connector.connector-lit{background:#0d9e72;background:var(--accent);box-shadow:0 0 8px #0d9e7240;box-shadow:0 0 8px var(--accent-glow)}.roadmap-chevron{align-items:center;background:none;border:1px solid #00000014;border:1px solid var(--divider);border-radius:50%;color:#5a6470;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;font-size:18px;height:32px;justify-content:center;margin-left:8px;margin-top:4px;transition:border-color .15s,color .15s;width:32px}.roadmap-chevron:hover{border-color:#0d9e722e;border-color:var(--accent-soft);color:#0d9e72;color:var(--accent)}.landing-heading-block{text-align:center;width:100%}.landing-heading{color:#0f1117;color:var(--text);font-size:36px;font-weight:700;letter-spacing:-.5px;line-height:1.15;margin:0 0 10px}.landing-subheading{color:#5a6470;color:var(--text-muted);font-size:15px;margin:0}.landing-subheading strong{color:#0f1117;color:var(--text);font-weight:600}.cards-scene{align-items:center;display:flex;position:relative;width:100%}.cards-connector-line{background:#0d9e72;background:var(--accent);height:2px;left:0;position:absolute;right:29px;top:50%;transform:translateY(-50%);z-index:0}[data-theme=dark] .cards-connector-line{box-shadow:0 0 10px #0d9e7240;box-shadow:0 0 10px var(--accent-glow)}.cards-row{grid-gap:14px;display:grid;flex:1 1;gap:14px;grid-template-columns:repeat(3,1fr)}.cards-end-node,.cards-row{position:relative;z-index:1}.cards-end-node{align-self:stretch;flex-shrink:0;width:58px}.end-node-circle{align-items:center;background:#0d9e72;background:var(--accent);border-radius:50%;box-shadow:0 0 10px #0d9e7240;box-shadow:0 0 10px var(--accent-glow);color:#fff;color:var(--check-fg);display:flex;height:18px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:18px}.end-node-label{color:#0d9e72;color:var(--accent);font-size:10px;font-weight:600;left:50%;position:absolute;text-align:center;top:calc(50% + 13px);transform:translateX(-50%);white-space:nowrap}.activity-card,.card-outer{display:flex;flex-direction:column;gap:8px}.activity-card{align-items:flex-start;background:#fff;background:var(--surface);border:1.5px solid #00000014;border:1.5px solid var(--divider);border-radius:16px;border-radius:var(--r-card);box-sizing:border-box;color:#0f1117;color:var(--text);cursor:default;font-family:inherit;min-height:220px;padding:20px 18px 18px;position:relative;text-align:left;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;width:100%}button.activity-card:not([disabled]):hover{background:#ebeef2;background:var(--surface-hi);transform:translateY(-2px)}.activity-card-in-progress,button.activity-card:not([disabled]):hover{border-color:#0d9e722e;border-color:var(--accent-soft);box-shadow:0 0 0 1px #0d9e722e,0 4px 20px #00000012;box-shadow:var(--glow-card)}.activity-card-coming-soon .card-desc,.activity-card-coming-soon .card-icon,.activity-card-coming-soon .card-title,.activity-card-locked .card-desc,.activity-card-locked .card-icon,.activity-card-locked .card-title{opacity:.45}.card-check-badge{background:#0d9e72;background:var(--accent);border-radius:50%;box-shadow:0 0 8px #0d9e7240;box-shadow:0 0 8px var(--accent-glow);color:#fff;color:var(--check-fg);height:18px;position:absolute;right:-9px;top:-9px;width:18px;z-index:2}.card-check-badge,.card-icon{align-items:center;display:flex;justify-content:center}.card-icon{background:#6366f11a;background:var(--icon-bg);border-radius:12px;color:#6366f1;color:var(--icon-accent);flex-shrink:0;height:42px;margin-bottom:2px;width:42px}.card-title{color:#0f1117;color:var(--text);font-size:16px;font-weight:600;line-height:1.3}.card-desc{color:#5a6470;color:var(--text-muted);flex:1 1;font-size:13px;line-height:1.5}.card-footer{margin-top:auto;width:100%}.card-badge{align-items:center;border-radius:8px;border-radius:var(--r-badge);display:inline-flex;font-size:11px;font-weight:600;gap:5px;padding:4px 10px}.card-badge-soon{background:#ebeef2;background:var(--surface-hi);color:#9ca3af;color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase}.card-badge-lock{background:#0000000d;background:var(--badge-lock-bg);color:#9ca3af;color:var(--locked)}.card-badge-progress{background:#0d9e722e;background:var(--accent-soft);color:#0d9e72;color:var(--accent)}.card-lock-block{display:flex;flex-direction:column;gap:6px}.card-lock-reason{color:#9ca3af;color:var(--text-dim);font-size:12px;line-height:1.4;margin:0}.card-ring-block{align-items:flex-start;gap:4px}.card-hw-block,.card-ring-block{display:flex;flex-direction:column}.card-hw-block{gap:6px}.card-hw-project{color:#5a6470;color:var(--text-muted);font-size:12px;margin:0}.card-hw-project strong{color:#0f1117;color:var(--text);font-weight:600}.card-start-link{font-size:13px}.card-completed-label,.card-start-link{color:#0d9e72;color:var(--accent);font-weight:600}.card-completed-label{font-size:12px}.card-footnote{color:#9ca3af;color:var(--text-dim);font-size:11px;margin:0;text-align:center}.progress-ring{display:block}.progress-ring-track{fill:none;stroke:#00000014;stroke:var(--ring-track);stroke-width:6}.progress-ring-fill{fill:none;stroke:#0d9e72;stroke:var(--accent);stroke-width:6;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .6s ease}.progress-ring-text{fill:#0d9e72;fill:var(--accent);font-family:inherit;font-size:13px;font-weight:600}.landing-practice{display:flex;justify-content:center;width:100%}.landing-practice-link{background:none;border:none;color:#9ca3af;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:13px;padding:4px 6px;transition:color .15s}.landing-practice-link:hover,.theme-toggle{color:#5a6470;color:var(--text-muted)}.theme-toggle{align-items:center;background:#0000;border:1px solid #00000014;border:1px solid var(--divider);border-radius:7px;cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;transition:border-color .15s,color .15s,background .15s;width:32px}.theme-toggle:hover{background:#ebeef2;background:var(--surface-hi);border-color:#0000002e;border-color:var(--logout-hover-border);color:#0f1117;color:var(--text)}@media (max-width:700px){.cards-row{grid-template-columns:1fr}.card-check-badge,.cards-connector-line,.cards-end-node{display:none}.landing-heading{font-size:26px}}.login-overlay{align-items:center;background:#0f1117;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.login-card{background:#1a1d27;border:1px solid #2a2d3e;border-radius:12px;box-shadow:0 20px 60px #00000080;max-width:380px;padding:36px 40px;width:100%}.login-logo{align-items:center;display:flex;gap:10px;margin-bottom:6px}.login-logo img{height:32px;width:32px}.login-logo h1{color:#e8eaf0;font-size:20px;font-weight:700;margin:0}.login-subtitle{color:#6b7280;font-size:13px;margin:0 0 24px}.login-form{gap:16px}.login-field,.login-form{display:flex;flex-direction:column}.login-field{gap:6px}.login-field label{color:#9ca3af;font-size:12px;font-weight:500;letter-spacing:.03em}.login-field input{background:#0f1117;border:1px solid #2a2d3e;border-radius:7px;color:#e8eaf0;font-size:14px;outline:none;padding:9px 12px;transition:border-color .15s}.login-field input:focus{border-color:#6366f1}.login-field input::placeholder{color:#4b5563}.login-error{background:#f8717114;border:1px solid #f8717133;border-radius:6px;color:#f87171;font-size:12px;margin:0;padding:8px 10px}.login-btn{align-items:center;background:#6366f1;border:none;border-radius:7px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;justify-content:center;margin-top:4px;min-height:40px;padding:10px;transition:background .15s}.login-btn:hover:not(:disabled){background:#4f52d1}.login-btn:disabled{cursor:not-allowed;opacity:.6}.login-spinner{animation:spin .7s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:16px;width:16px}@keyframes spin{to{transform:rotate(1turn)}}.login-note{color:#4b5563;margin:20px 0 0}.login-link,.login-note{font-size:12px;text-align:center}.login-link{background:none;border:none;color:#6366f1;cursor:pointer;padding:4px 0;transition:color .15s}.login-link:hover{color:#818cf8}.login-form-row-2{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr;min-width:0}.login-form-row-2 .login-field{min-width:0}.login-textarea{background:#0f1117;border:1px solid #2a2d3e;border-radius:7px;color:#e8eaf0;font-family:inherit;font-size:14px;outline:none;padding:9px 12px;resize:vertical;transition:border-color .15s}.login-textarea:focus{border-color:#6366f1}.login-textarea::placeholder{color:#4b5563}.login-optional{color:#4b5563;font-weight:400}.request-sent{align-items:center;display:flex;flex-direction:column;gap:10px;padding:16px 0;text-align:center}.request-sent-icon{align-items:center;background:#4ade8026;border-radius:50%;color:#4ade80;display:flex;font-size:20px;font-weight:700;height:40px;justify-content:center;width:40px}.request-sent h3{color:#e8eaf0;font-size:15px;font-weight:600;margin:0}.request-sent p{color:#6b7280;font-size:13px;margin:0}:root{--ip-accent-dim:#6366f11f}[data-theme=dark]{--ip-accent-dim:#818cf81f}.instructor-panel{background:var(--bg);color:var(--text);display:flex;flex-direction:column;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;height:100vh}.instructor-header{align-items:center;background:var(--surface);border-bottom:1px solid var(--divider);display:flex;flex-shrink:0;height:52px;justify-content:space-between;padding:0 24px}.instructor-header-left{align-items:center;display:flex;gap:10px}.instructor-header-right{align-items:center;display:flex;gap:8px}.instructor-logo{height:24px;width:24px}.instructor-header h1{color:var(--text);font-size:15px;font-weight:600;margin:0}.instructor-logout{align-items:center;background:#0000;border:1px solid var(--divider);border-radius:6px;color:var(--text-muted);cursor:pointer;display:flex;font-size:13px;gap:6px;padding:6px 12px;transition:border-color .15s,color .15s}.instructor-logout:hover{border-color:var(--logout-hover-border);color:var(--text)}.instructor-tabs{background:var(--surface);border-bottom:1px solid var(--divider);display:flex;flex-shrink:0;gap:0;padding:0 24px}.instructor-tab{background:#0000;border:none;border-bottom:2px solid #0000;color:var(--text-dim);cursor:pointer;font-size:13px;font-weight:500;padding:12px 16px;transition:color .15s,border-color .15s}.instructor-tab.active{border-bottom-color:var(--icon-accent);color:var(--text)}.instructor-tab:hover:not(.active){color:var(--text-muted)}.instructor-body{flex:1 1;overflow:auto;padding:24px}.tab-body{display:flex;flex-direction:column;gap:16px}.tab-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.tab-toolbar h2{color:var(--text);font-size:15px;font-weight:600;margin:0}.toolbar-right{align-items:center;display:flex;gap:10px}.panel-empty{color:var(--text-dim);font-size:13px;padding:24px 0}.btn-primary{background:var(--icon-accent);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:7px 14px;transition:filter .15s}.btn-primary:hover:not(:disabled){filter:brightness(.88)}.btn-primary:disabled{cursor:not-allowed;opacity:.6}.btn-secondary{align-items:center;background:#0000;border:1px solid var(--divider);border-radius:6px;color:var(--text-muted);cursor:pointer;display:flex;font-size:12px;gap:6px;padding:6px 12px;transition:border-color .15s,color .15s}.btn-secondary:hover{border-color:var(--logout-hover-border);color:var(--text)}.btn-export{align-items:center;background:#0000;border:1px solid var(--divider);border-radius:5px;color:var(--text-muted);cursor:pointer;display:flex;padding:5px 8px;transition:border-color .15s,color .15s}.btn-export:hover{border-color:var(--icon-accent);color:var(--icon-accent)}.action-btns{align-items:center;display:flex;gap:6px}.btn-edit{background:#0000;border:1px solid var(--divider);border-radius:5px;color:var(--text-muted);cursor:pointer;font-size:12px;padding:4px 10px;transition:border-color .15s,color .15s}.btn-edit:hover{border-color:var(--icon-accent);color:var(--icon-accent)}.btn-delete{background:#0000;border:1px solid var(--divider);border-radius:5px;color:var(--text-muted);cursor:pointer;font-size:12px;padding:4px 10px;transition:border-color .15s,color .15s}.btn-delete:hover{border-color:#ef4444;color:#f87171}.btn-save{background:var(--icon-accent);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:12px;font-weight:600;padding:4px 10px;transition:filter .15s}.btn-save:hover{filter:brightness(.88)}.btn-cancel{background:#0000;border:1px solid var(--divider);border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:12px;padding:4px 10px;transition:border-color .15s,color .15s}.btn-cancel:hover{border-color:var(--logout-hover-border);color:var(--text-muted)}.sessions-table-wrap{border:1px solid var(--divider);border-radius:8px;overflow-x:auto}.sessions-table{border-collapse:collapse;font-size:12px;width:100%}.sessions-table th{background:var(--surface-hi);color:var(--text-muted);font-weight:500;text-align:left;white-space:nowrap}.sessions-table td,.sessions-table th{border-bottom:1px solid var(--divider);padding:10px 12px}.sessions-table td{background:var(--surface);color:var(--text);vertical-align:middle}.sessions-table tbody tr:last-child td{border-bottom:none}.sessions-table tbody tr:hover td{background:var(--surface-hi)}.row-complete td{opacity:.85}.row-editing td{background:var(--surface-hi)}.td-topics{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sessions-table td input,.sessions-table td textarea{background:var(--bg);border:1px solid var(--divider);border-radius:5px;color:var(--text);font-family:inherit;font-size:12px;min-width:80px;outline:none;padding:5px 8px;transition:border-color .15s;width:100%}.sessions-table td input:focus,.sessions-table td textarea:focus{border-color:var(--icon-accent)}.edit-name-row{display:flex;gap:4px}.edit-name-row input{min-width:70px}.role-select{background:var(--surface);border:1px solid var(--divider);border-radius:5px;color:var(--text);cursor:pointer;font-size:12px;outline:none;padding:5px 8px;transition:border-color .15s}.role-select:focus{border-color:var(--icon-accent)}.status-badge{border-radius:4px;display:inline-block;font-size:11px;font-weight:500;padding:2px 8px}.status-badge.active{background:#6366f11f;background:var(--ip-accent-dim);color:var(--icon-accent)}.status-badge.complete{background:#22c55e1f;color:#22c55e}.status-badge.denied{background:#f871711f;color:#f87171}.role-badge{border-radius:4px;display:inline-block;font-size:11px;font-weight:500;padding:2px 8px}.role-badge.instructor{background:#fbbf241f;color:#d97706}.role-badge.student{background:#6366f11f;background:var(--ip-accent-dim);color:var(--icon-accent)}[data-theme=dark] .status-badge.complete{color:#4ade80}[data-theme=dark] .role-badge.instructor{color:#fbbf24}.group-control{align-items:center;color:var(--text-dim);display:flex;font-size:12px;gap:8px}.group-control select{background:var(--surface);border:1px solid var(--divider);border-radius:6px;color:var(--text);cursor:pointer;font-size:12px;outline:none;padding:5px 8px;transition:border-color .15s}.group-control select:focus{border-color:var(--icon-accent)}.session-group{display:flex;flex-direction:column;gap:8px}.session-group-label{align-items:center;border-bottom:1px solid var(--divider);color:var(--text);display:flex;font-size:13px;font-weight:600;gap:8px;padding:8px 0 4px}.session-group-count{color:var(--text-dim);font-size:11px;font-weight:400}.create-form{background:var(--surface);border:1px solid var(--divider);border-radius:10px;display:flex;flex-direction:column;gap:14px;max-width:520px;padding:20px}.create-form h3{color:var(--text);font-size:14px;font-weight:600;margin:0}.form-row-2{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.cu-field{display:flex;flex-direction:column;gap:6px}.cu-field label{color:var(--text-muted);font-size:12px;font-weight:500}.cu-field input,.cu-field textarea{background:var(--bg);border:1px solid var(--divider);border-radius:7px;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:9px 12px;transition:border-color .15s}.cu-field textarea{resize:vertical}.cu-field input:focus,.cu-field textarea:focus{border-color:var(--icon-accent)}.cu-field input::placeholder,.cu-field textarea::placeholder,.optional-label{color:var(--text-dim)}.optional-label{font-size:11px;font-weight:400}.req{color:#f87171}.cu-error{background:#f8717114;border:1px solid #f8717133;border-radius:6px;color:#f87171}.cu-error,.cu-success{font-size:12px;margin:0;padding:8px 10px}.cu-success{background:#22c55e14;border:1px solid #22c55e33;border-radius:6px;color:#22c55e}[data-theme=dark] .cu-success{color:#4ade80}.confirm-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:600}.confirm-modal{background:var(--surface);border:1px solid var(--divider);border-radius:10px;box-shadow:0 8px 32px #0000001f;max-width:380px;padding:24px 28px;width:100%}[data-theme=dark] .confirm-modal{box-shadow:0 20px 60px #00000080}.confirm-modal h3{color:var(--text);font-size:15px;font-weight:600;margin:0 0 10px}.confirm-modal p{color:var(--text-muted);font-size:13px;line-height:1.5;margin:0 0 20px}.confirm-modal p strong{color:var(--text)}.confirm-actions{display:flex;gap:8px;justify-content:flex-end}.btn-delete-confirm{background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:7px 16px;transition:background .15s}.btn-delete-confirm:hover{background:#dc2626}.request-section-label{color:var(--text-muted);font-size:13px;font-weight:600;margin:0}.request-list{display:flex;flex-direction:column;gap:10px}.request-card{align-items:flex-start;background:var(--surface);border:1px solid var(--divider);border-radius:8px;display:flex;gap:16px;justify-content:space-between;padding:14px 16px}.request-info{display:flex;flex-direction:column;gap:4px}.request-name{color:var(--text);font-size:14px;font-weight:600}.request-meta{color:var(--text-muted);font-size:12px}.request-message{color:var(--text-dim);font-size:12px;font-style:italic}.request-date{color:var(--text-dim);font-size:11px}.approve-form{display:flex;flex-direction:column;gap:8px;min-width:200px}.approve-form input{background:var(--bg);border:1px solid var(--divider);border-radius:6px;color:var(--text);font-size:12px;outline:none;padding:7px 10px;transition:border-color .15s}.approve-form input:focus{border-color:var(--icon-accent)}.approve-form input::placeholder{color:var(--text-dim)}.report-unit-select{background:var(--surface);border:1px solid var(--divider);border-radius:6px;color:var(--text);cursor:pointer;font-size:13px;outline:none;padding:6px 10px;transition:border-color .15s}.report-unit-select:focus{border-color:var(--icon-accent)}.stat-cards-row{display:flex;flex-wrap:wrap;gap:12px}.stat-card{background:var(--surface);border:1px solid var(--divider);border-radius:10px;display:flex;flex:1 1;flex-direction:column;gap:6px;min-width:180px;padding:16px 18px}.stat-card-dims{flex:1.5 1;min-width:240px}.stat-card-label{color:var(--text-dim);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.stat-card-value{color:var(--text);font-size:28px;font-weight:700;line-height:1}.stat-card-sub{color:var(--text-dim);font-size:11px}.stat-card-pair{align-items:center;display:flex;gap:10px;margin-top:2px}.stat-pair-item{display:flex;flex-direction:column;gap:2px}.stat-pair-label{color:var(--text-dim);font-size:10px}.stat-pair-val{font-size:22px;font-weight:700;line-height:1}.stat-pair-sep{color:var(--text-dim);font-size:11px;margin-top:10px}.stat-card-warning{background:#d9770614;border:1px solid #d9770633;border-radius:5px;color:#b45309;font-size:11px;line-height:1.4;margin-top:4px;padding:5px 8px}[data-theme=dark] .stat-card-warning{background:#fbbf241a;border-color:#fbbf2433;color:#fbbf24}.dim-bar-row{align-items:center;display:flex;gap:8px;margin-top:4px}.dim-bar-label{color:var(--text-muted);flex-shrink:0;font-size:11px;width:90px}.dim-bar-track{background:var(--surface-hi);border-radius:3px;flex:1 1;height:6px;overflow:hidden}[data-theme=dark] .dim-bar-track{background:#ffffff12}.dim-bar-fill{border-radius:3px;height:100%;transition:width .3s ease}.dim-bar-val{color:var(--text-muted);flex-shrink:0;font-size:11px;text-align:right;width:28px}.report-section{display:flex;flex-direction:column;gap:10px}.report-section-title{color:var(--text-muted);font-size:13px;font-weight:600;margin:0}.report-section-count{color:var(--text-dim);font-weight:400}.concept-heatmap{display:flex;flex-wrap:wrap;gap:8px}.concept-chip{border:1px solid;border-radius:5px;display:inline-block;font-size:12px;padding:4px 10px}.concept-chip strong{margin-left:4px}.gaps-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0 0 0 16px}.gaps-item{color:var(--text-muted);font-size:13px;line-height:1.5}.transcript-link{border-bottom:1px solid #0000;color:var(--icon-accent);font-size:12px;text-decoration:none;transition:border-color .15s}.transcript-link:hover{border-bottom-color:var(--icon-accent)}.report-all-clear{color:#16a34a;font-size:13px;margin:0}[data-theme=dark] .report-all-clear{color:#4ade80}.export-controls{align-items:center;background:var(--surface);border:1px solid var(--divider);border-radius:8px;display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px}.export-controls-label{color:var(--text-dim);font-size:12px;white-space:nowrap}.export-points-input{background:var(--bg);border:1px solid var(--divider);border-radius:6px;color:var(--text);font-size:13px;outline:none;padding:6px 8px;transition:border-color .15s;width:60px}.export-points-input:focus{border-color:var(--icon-accent)}.grades-matrix td,.grades-matrix th{text-align:center}.grades-student-col{min-width:120px;text-align:left!important}.grades-unit-header{background:var(--surface-hi)!important;border-left:1px solid var(--divider);color:var(--text-muted);font-size:11px;font-weight:600;padding:6px 8px!important}.grades-sub-header{border-left:1px solid var(--divider);color:var(--text-dim);font-size:10px;font-weight:500;padding:4px 8px!important}.grades-sub-header,.grades-sub-row{background:var(--bg)!important}.grades-student-name{color:var(--text);font-weight:500;text-align:left!important}.grades-cell{border-left:1px solid var(--divider);font-size:12px;padding:8px 10px!important}.grade-check{color:#16a34a;font-weight:700}.grade-cross{color:var(--text-dim)}[data-theme=dark] .grade-check{color:#4ade80}.profile-overlay{align-items:center;background:#00000073;display:flex;inset:0;justify-content:center;position:fixed;z-index:500}.profile-modal{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 20px 60px #00000026;max-width:440px;padding:28px 32px;width:100%}.profile-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.profile-header h2{color:#111827;font-size:16px;font-weight:600;margin:0}.profile-close{align-items:center;background:none;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;padding:4px;transition:color .15s}.profile-close:hover{color:#374151}.profile-readonly{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:7px;display:flex;gap:10px;margin-bottom:18px;padding:9px 12px}.profile-readonly-label{color:#9ca3af;font-size:12px;font-weight:500}.profile-readonly-value{color:#374151;font-family:ui-monospace,monospace;font-size:13px}.profile-form{display:flex;flex-direction:column;gap:14px}.profile-row-2{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr;min-width:0}.profile-row-2 .profile-field{min-width:0}.profile-field{display:flex;flex-direction:column;gap:5px}.profile-field label{color:#6b7280;font-size:12px;font-weight:500}.profile-field input{background:#fff;border:1px solid #d1d5db;border-radius:7px;box-sizing:border-box;color:#111827;font-size:13px;outline:none;padding:8px 11px;transition:border-color .15s;width:100%}.profile-field input:focus{border-color:#6366f1}.profile-field input::placeholder{color:#d1d5db}.profile-optional{color:#9ca3af;font-weight:400}.profile-divider{background:#f3f4f6;height:1px;margin:2px 0}.profile-error{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626}.profile-error,.profile-success{font-size:12px;margin:0;padding:8px 10px}.profile-success{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;color:#16a34a}.profile-actions{display:flex;gap:8px;justify-content:flex-end;padding-top:4px}.profile-btn-cancel{background:#0000;border:1px solid #d1d5db;border-radius:7px;color:#6b7280;cursor:pointer;font-size:13px;padding:8px 16px;transition:border-color .15s,color .15s}.profile-btn-cancel:hover{border-color:#9ca3af;color:#374151}.profile-btn-save{background:#6366f1;border:none;border-radius:7px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 18px;transition:background .15s}.profile-btn-save:hover:not(:disabled){background:#4f52d1}.profile-btn-save:disabled{cursor:not-allowed;opacity:.6}.fpr-overlay{background:#0f1117;inset:0;justify-content:center;position:fixed;z-index:900}.fpr-modal,.fpr-overlay{align-items:center;display:flex}.fpr-modal{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 24px 64px #0000002e;flex-direction:column;max-width:420px;padding:36px 40px;text-align:center;width:100%}.fpr-icon{font-size:36px;margin-bottom:12px}.fpr-modal h2{color:#111827;font-size:18px;font-weight:700;margin:0 0 8px}.fpr-modal p{color:#6b7280;font-size:13px;line-height:1.5;margin:0 0 24px}.fpr-form{gap:14px;text-align:left;width:100%}.fpr-field,.fpr-form{display:flex;flex-direction:column}.fpr-field{gap:5px}.fpr-field label{color:#6b7280;font-size:12px;font-weight:500}.fpr-field input{background:#fff;border:1px solid #d1d5db;border-radius:7px;color:#111827;font-size:14px;outline:none;padding:9px 12px;transition:border-color .15s}.fpr-field input:focus{border-color:#6366f1}.fpr-field input::placeholder{color:#d1d5db}.fpr-hint{color:#9ca3af;font-weight:400}.fpr-error{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:12px;margin:0;padding:8px 10px}.fpr-btn{background:#6366f1;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;margin-top:4px;padding:11px;transition:background .15s}.fpr-btn:hover:not(:disabled){background:#4f52d1}.fpr-btn:disabled{cursor:not-allowed;opacity:.6}.app-loading{background:#0f1117;inset:0;position:fixed}.App{background:#f0f2f5;color:#111827;display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.App-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;height:48px;justify-content:space-between;padding:0 14px;position:relative;z-index:50}.header-left,.header-right{align-items:center;display:flex;gap:8px}.header-hub{flex-direction:column;left:50%;position:absolute;transform:translateX(-50%)}.header-hub,.hub-btn{align-items:center;display:flex}.hub-btn{background:#0000;border:1.5px solid #d1d5db;border-radius:20px;color:#111827;cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;gap:6px;padding:5px 13px;transition:border-color .15s,background .15s;white-space:nowrap}.hub-btn-open,.hub-btn:hover{background:#f5f3ff;border-color:#6366f1}.hub-logo{flex-shrink:0;height:17px;object-fit:contain;width:17px}.hub-title{font-weight:700}.hub-sep{color:#9ca3af;font-weight:400}.hub-mode-label{color:#6b7280;font-size:12px;font-weight:400}.hub-chevron{color:#9ca3af;flex-shrink:0;transition:transform .2s}.hub-btn-open .hub-chevron{transform:rotate(180deg)}.hub-dropdown{background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 4px 16px #0000001a;left:50%;min-width:240px;padding:5px;position:absolute;top:calc(100% + 6px);transform:translateX(-50%);z-index:500}.hub-item{align-items:center;background:#0000;border:none;border-radius:6px;color:#374151;cursor:pointer;display:flex;font-family:inherit;font-size:13px;gap:6px;padding:8px 10px;text-align:left;transition:background .12s;width:100%}.hub-item:hover{background:#f9fafb}.hub-item-active{color:#6366f1;font-weight:500}.hub-item-check{align-items:center;color:#6366f1;display:flex;flex-shrink:0;height:16px;justify-content:center;width:16px}.hub-divider{background:#e5e7eb;height:1px;margin:4px 0}.hub-item-back{color:#6b7280;font-weight:500;gap:6px}.hub-sessions-loading{color:#9ca3af;font-size:12px;padding:12px 10px;text-align:center}.hub-item-session{align-items:flex-start;flex-direction:column;gap:2px;padding:9px 10px}.hub-session-meta{align-items:center;display:flex;justify-content:space-between;width:100%}.hub-session-unit{color:#111827;font-size:13px;font-weight:600}.hub-session-badge{border-radius:8px;font-size:11px;font-weight:500;padding:1px 6px}.hub-badge-active{background:#f0f1ff;color:#6366f1}.hub-badge-complete{background:#f3f4f6;color:#6b7280}.hub-session-topics{color:#6b7280;font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-session-date{color:#9ca3af;font-size:11px}.hub-item-new{color:#6366f1;font-weight:500}.session-modal-backdrop{align-items:center;background:#0000008c;display:flex;inset:0;justify-content:center;position:fixed;z-index:300}.session-modal-card{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000002e;display:flex;flex-direction:column;max-width:90vw;overflow:hidden;width:400px}.session-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:16px 18px 12px}.session-modal-title{color:#111827;font-size:15px;font-weight:600}.session-modal-close{align-items:center;background:#0000;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:color .12s,background .12s}.session-modal-close:hover{background:#f3f4f6;color:#374151}.session-modal-body{max-height:320px;overflow-y:auto;padding:8px}.session-modal-empty,.session-modal-loading{color:#9ca3af;font-size:13px;padding:20px;text-align:center}.session-modal-item{align-items:flex-start;background:#0000;border:none;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;font-family:inherit;gap:3px;padding:10px 12px;text-align:left;transition:background .12s;width:100%}.session-modal-item:hover{background:#f9fafb}.smi-meta{align-items:center;display:flex;justify-content:space-between;width:100%}.smi-unit{color:#111827;font-size:13px;font-weight:600}.smi-badge{border-radius:8px;font-size:11px;font-weight:500;padding:1px 7px}.smi-badge-active{background:#f0f1ff;color:#6366f1}.smi-badge-complete{background:#f3f4f6;color:#6b7280}.smi-topics{color:#6b7280;font-size:12px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.smi-date{color:#9ca3af;font-size:11px}.session-modal-footer{border-top:1px solid #e5e7eb;padding:10px 8px 12px}.session-modal-new{background:#0000;border:none;border-radius:8px;color:#6366f1;cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;padding:9px 12px;text-align:left;transition:background .12s;width:100%}.session-modal-new:hover{background:#f5f3ff}.header-toggle-btn{align-items:center;background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:32px;justify-content:center;position:relative;transition:background .12s ease,color .12s ease,border-color .12s ease;width:32px}.header-toggle-btn:hover{background:#f9fafb;border-color:#d1d5db;color:#374151}.chat-pulse-dot{animation:pulse-ring 1.6s ease-in-out infinite;background:#6366f1;border:2px solid #fff;border-radius:50%;height:9px;position:absolute;right:-4px;top:-4px;width:9px}@keyframes pulse-ring{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.4)}}.header-toggle-btn.active{background:#eff6ff;border-color:#bfdbfe;color:#3b82f6}.workspace{flex:1 1;min-height:0}.panel,.workspace{display:flex;overflow:hidden;position:relative}.panel{flex-direction:column}.panel-left{border-right:1px solid #00000012;flex-shrink:0}.panel-left.panel-closed{border-right:none}.panel-center{flex:1 1;min-width:0}.panel-right{background:#fff;border-left:1px solid #e5e7eb;flex-shrink:0}.panel-right.panel-closed{border-left:none}.panel-resize-handle{bottom:0;cursor:col-resize;position:absolute;top:0;transition:background .15s ease;width:5px;z-index:10}.panel-resize-handle:active,.panel-resize-handle:hover{background:#6366f159}.panel-resize-handle-right{right:0}.panel-resize-handle-left{left:0}.practice-session-row{align-items:center;border-radius:8px;display:flex;gap:4px;padding:2px 4px}.practice-session-btn{align-items:flex-start;background:#0000;border:none;border-radius:7px;cursor:pointer;display:flex;flex:1 1;flex-direction:column;font-family:inherit;gap:2px;min-width:0;padding:9px 10px;text-align:left;transition:background .12s}.practice-session-btn:hover{background:#f9fafb}.practice-session-name{color:#111827;font-size:13px;font-weight:500;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-session-date{color:#9ca3af;font-size:11px}.practice-session-actions{display:flex;flex-shrink:0;gap:2px}.practice-action-btn{align-items:center;background:#0000;border:none;border-radius:5px;color:#9ca3af;cursor:pointer;display:flex;height:28px;justify-content:center;transition:background .12s,color .12s;width:28px}.practice-action-btn:hover{background:#f3f4f6;color:#374151}.practice-delete-btn:hover{background:#fef2f2;color:#ef4444}.practice-rename-row{align-items:center;display:flex;flex:1 1;gap:6px;padding:4px 4px 4px 8px}.practice-rename-input{border:1px solid #d1d5db;border-radius:6px;flex:1 1;font-family:inherit;font-size:13px;outline:none;padding:5px 8px}.practice-rename-input:focus{border-color:#6366f1}.practice-rename-save{background:#6366f1;color:#fff;padding:4px 10px;white-space:nowrap}.practice-rename-cancel,.practice-rename-save{border:none;border-radius:5px;cursor:pointer;font-family:inherit;font-size:12px}.practice-rename-cancel{background:#0000;color:#6b7280;padding:4px 8px}.practice-delete-confirm{align-items:center;background:#fef2f2;border-radius:7px;display:flex;flex:1 1;gap:8px;padding:6px 8px}.practice-confirm-text{color:#b91c1c;flex:1 1;font-size:12px}.practice-confirm-yes{background:#ef4444;color:#fff;padding:3px 10px}.practice-confirm-no,.practice-confirm-yes{border:none;border-radius:5px;cursor:pointer;font-family:inherit;font-size:12px}.practice-confirm-no{background:#0000;color:#6b7280;padding:3px 8px}.practice-error{background:#fef2f2;border-radius:6px;color:#b91c1c;font-size:12px;margin:4px 4px 0;padding:6px 10px}.practice-modal-dark .session-modal-card{background:#0e1417;box-shadow:0 0 0 1px #3ee8b52e,0 16px 48px #000000b3}.practice-modal-dark .session-modal-header{border-bottom-color:#ffffff0f}.practice-modal-dark .session-modal-title{color:#f4f7fa}.practice-modal-dark .session-modal-close{color:#5a6470}.practice-modal-dark .session-modal-close:hover{background:#ffffff0f;color:#8a94a0}.practice-modal-dark .session-modal-empty,.practice-modal-dark .session-modal-loading{color:#5a6470}.practice-modal-dark .session-modal-footer{border-top-color:#ffffff0f}.practice-modal-dark .session-modal-new{background:#0000;border:1px solid #3ee8b547;color:#3ee8b5}.practice-modal-dark .session-modal-new:hover{background:#3ee8b50f;border-color:#3ee8b580}.practice-modal-dark .practice-session-btn:hover{background:#ffffff0d}.practice-modal-dark .practice-session-name{color:#f4f7fa}.practice-modal-dark .practice-action-btn,.practice-modal-dark .practice-session-date{color:#5a6470}.practice-modal-dark .practice-action-btn:hover{background:#ffffff0f;color:#8a94a0}.practice-modal-dark .practice-delete-btn:hover{background:#ef44441f;color:#f87171}.practice-modal-dark .practice-rename-input{background:#080b0d;border-color:#ffffff1f;color:#f4f7fa}.practice-modal-dark .practice-rename-input:focus{border-color:#3ee8b5;outline:none}.practice-modal-dark .practice-rename-save{background:#3ee8b5;color:#080b0d}.practice-modal-dark .practice-rename-save:hover{background:#5ef0c4}.practice-modal-dark .practice-rename-cancel{color:#5a6470}.practice-modal-dark .practice-rename-cancel:hover{color:#8a94a0}.practice-modal-dark .practice-delete-confirm{background:#ef44441f}.practice-modal-dark .practice-confirm-text{color:#fca5a5}.practice-modal-dark .practice-confirm-yes{background:#ef4444;color:#fff}.practice-modal-dark .practice-confirm-no{color:#5a6470}.practice-modal-dark .practice-error{background:#ef44441f;color:#fca5a5}*{box-sizing:border-box;margin:0;padding:0}#root,body,html{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f0f2f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
/*# sourceMappingURL=main.93ff1859.css.map*/