:root{--bg-0: #ffffff;--bg-1: #f8f8fa;--bg-2: #f0f0f4;--bg-3: #e8e8ee;--line: #d0d0da;--line-bright: #b8b8c8;--text-0: #1a1a2e;--text-1: #5a5a70;--text-2: #9090a8;--accent: #4a9eff;--accent-dim: #e0eeff;--green: #2ecc71;--green-dim: #e0f5ea;--red: #e74c3c;--red-dim: #fde8e6;--amber: #f39c12;--amber-dim: #fef3d6;--orange: #e67e22;--orange-dim: #fdebd0;--purple: #9b59b6;--font-mono: "IBM Plex Mono", monospace;--font-sans: "IBM Plex Sans", sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--bg-0);color:var(--text-0);font-family:var(--font-sans)}button{border-radius:0;border:none;background:none;cursor:pointer;font-family:inherit;color:inherit}.lesson-analysis-markdown h2{font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--text-0);text-transform:uppercase;letter-spacing:.08em;margin:20px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--line)}.lesson-analysis-markdown h2:first-child{margin-top:0}.lesson-analysis-markdown p{margin:0 0 10px}.lesson-analysis-markdown ul,.lesson-analysis-markdown ol{margin:0 0 10px;padding-left:20px}.lesson-analysis-markdown li{margin-bottom:4px}.lesson-analysis-markdown strong{color:var(--text-0)}.lesson-analysis-markdown code{font-family:var(--font-mono);background:var(--bg-2);padding:1px 4px;font-size:12px}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-0)}.login-panel{width:380px;border:1px solid var(--line);background:var(--bg-1)}.login-header{padding:24px 28px 20px;border-bottom:1px solid var(--line)}.login-brand{font-family:var(--font-mono);font-size:28px;font-weight:600;letter-spacing:.15em;color:var(--accent)}.login-subtitle{font-family:var(--font-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);margin-top:4px}.login-body{padding:24px 28px 28px;display:flex;flex-direction:column;gap:14px}.login-field{display:flex;flex-direction:column;gap:5px}.login-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}.login-input{width:100%;padding:9px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:0;font-family:var(--font-mono);font-size:13px;color:var(--text-0);outline:none}.login-input:focus{border-color:var(--accent)}.login-input::placeholder{color:var(--text-2)}.login-button{margin-top:6px;padding:10px 0;background:var(--accent-dim);border:1px solid var(--accent);border-radius:0;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);cursor:pointer}.login-button:hover{background:var(--accent);color:var(--bg-0)}.login-button:disabled{opacity:.5;cursor:default}.login-button:disabled:hover{background:var(--accent-dim);color:var(--accent)}.login-error{padding:8px 12px;background:var(--red-dim);border:1px solid var(--red);font-family:var(--font-mono);font-size:11px;color:var(--red);line-height:1.5}.analysis-guide{border:1px solid var(--line);background:var(--bg-2)}.analysis-guide__toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:8px 12px;border:none;border-radius:0;background:transparent;color:var(--text-2);font-family:var(--font-sans);font-size:10px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}.analysis-guide__toggle:hover{color:var(--text-1)}.analysis-guide__arrow{font-size:10px}.analysis-guide__steps{margin:0;padding:0 12px 10px 28px;list-style-type:decimal}.analysis-guide__step{margin-bottom:8px;font-family:var(--font-sans);font-size:11px;line-height:1.5;color:var(--text-1)}.analysis-guide__step-label{color:var(--text-0);font-weight:500}.analysis-guide__step-detail{display:block;color:var(--text-2);font-size:10px;line-height:1.4;margin-top:2px}.analysis-query-builder{width:300px;min-width:300px;border-right:1px solid var(--line);background:var(--bg-1);padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}.analysis-query-builder__section-label{font-family:var(--font-sans);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2);margin-bottom:6px}.qb-dropdown{position:relative;width:100%}.qb-dropdown__trigger{display:flex;align-items:center;width:100%;padding:7px 28px 7px 10px;border:1px solid var(--line);border-radius:0;background:var(--bg-2);color:var(--text-0);font-family:var(--font-mono);font-size:12px;cursor:pointer;text-align:left;position:relative}.qb-dropdown__trigger:hover{border-color:var(--line-bright)}.qb-dropdown__trigger-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.qb-dropdown__trigger-label--placeholder{color:var(--text-2)}.qb-dropdown__chevron{position:absolute;right:10px;top:50%;margin-top:-3px;transition:transform .15s;flex-shrink:0}.qb-dropdown__panel{position:absolute;top:100%;left:0;right:0;margin-top:2px;border:1px solid var(--line-bright);background:var(--bg-2);z-index:50;max-height:200px;overflow-y:auto}.qb-dropdown__item{display:block;width:100%;padding:6px 12px;border:none;border-radius:0;background:transparent;color:var(--text-1);font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-align:left;cursor:pointer;white-space:nowrap}.qb-dropdown__item:hover{background:var(--bg-3)}.qb-dropdown__item--active{background:var(--accent-dim);color:var(--accent)}.qb-dropdown__item--active:hover{background:var(--accent-dim)}.qb-dropdown__item--disabled{color:var(--text-2);opacity:.4;cursor:not-allowed}.qb-dropdown__item--disabled:hover{background:transparent}.analysis-query-builder__dim-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.analysis-query-builder__dim-row .qb-dropdown{flex:1;min-width:0}.analysis-query-builder__remove-btn{padding:4px 8px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text-2);font-family:var(--font-mono);font-size:11px;cursor:pointer;flex-shrink:0}.analysis-query-builder__remove-btn:hover{color:var(--red);border-color:var(--red)}.analysis-query-builder__add-btn{padding:5px 10px;border:1px dashed var(--line);border-radius:0;background:transparent;color:var(--text-2);font-family:var(--font-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;width:100%;text-align:center}.analysis-query-builder__add-btn:hover{color:var(--text-1);border-color:var(--line-bright)}.analysis-query-builder__multi-select{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.analysis-query-builder__chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--line);border-radius:0;background:var(--bg-2);color:var(--text-1);font-family:var(--font-mono);font-size:10px;cursor:pointer;transition:border-color .1s,background .1s}.analysis-query-builder__chip:hover{border-color:var(--line-bright);background:var(--bg-3)}.analysis-query-builder__chip-remove{border:none;background:transparent;color:var(--text-2);cursor:pointer;padding:0;font-size:12px;line-height:1}.analysis-query-builder__chip-remove:hover{color:var(--red)}.analysis-query-builder__date-row{display:flex;gap:8px;align-items:center}.analysis-query-builder__date-separator{color:var(--text-2);font-family:var(--font-mono);font-size:11px;flex-shrink:0}.qb-datepicker{position:relative;flex:1;min-width:0}.qb-datepicker__trigger{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:0;background:var(--bg-2);color:var(--text-0);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;cursor:pointer;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qb-datepicker__trigger:hover{border-color:var(--line-bright)}.qb-datepicker__panel{position:absolute;top:100%;left:0;margin-top:2px;z-index:100}.analysis-query-builder__generate-btn{padding:10px;border:1px solid var(--accent);border-radius:0;background:var(--accent-dim);color:var(--accent);font-family:var(--font-sans);font-size:12px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;width:100%;margin-top:auto}.analysis-query-builder__generate-btn:hover{background:var(--accent);color:var(--bg-0)}.analysis-query-builder__generate-btn:disabled{opacity:.4;cursor:not-allowed}.analysis-chart{border:1px solid var(--line);background:var(--bg-1);display:flex;flex-direction:column}.analysis-chart__header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-2)}.analysis-chart__title{font-family:var(--font-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-1)}.analysis-chart__type-toggle{display:flex;gap:2px}.analysis-chart__type-btn{padding:4px 10px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text-2);font-family:var(--font-mono);font-size:10px;cursor:pointer}.analysis-chart__type-btn--active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.analysis-chart__body{flex:1;padding:16px 16px 0}.analysis-chart__legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 16px 12px;border-top:1px solid var(--line)}.analysis-chart__legend-item{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;color:var(--text-1);cursor:pointer;transition:opacity .15s}.analysis-chart__legend-item:hover{color:var(--text-0)}.analysis-chart__legend-swatch{display:inline-block;width:10px;height:10px;flex-shrink:0}.analysis-chart__empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--text-2);font-family:var(--font-mono);font-size:12px}.analysis-table{border:1px solid var(--line);background:var(--bg-1);overflow-x:auto}.analysis-table__header{padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-2);font-family:var(--font-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-1)}.analysis-table table{width:100%;border-collapse:collapse;font-family:var(--font-mono)}.analysis-table th{background:var(--bg-2);color:var(--text-1);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:8px 12px;text-align:left;border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none}.analysis-table th[data-sorted=true]{color:var(--accent)}.analysis-table td{padding:7px 12px;font-size:12px;color:var(--text-0);border-bottom:1px solid var(--line)}.analysis-table tr:nth-child(2n) td{background:var(--bg-2)}.analysis-table tr:hover td{background:var(--bg-3)}.analysis-table__row-count{padding:8px 14px;font-family:var(--font-mono);font-size:10px;color:var(--text-2);border-top:1px solid var(--line)}.analysis-export{display:flex;gap:8px}.analysis-export__btn{padding:5px 12px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text-1);font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.analysis-export__btn:hover{border-color:var(--line-bright);color:var(--text-0)}.analysis-export__btn:disabled{opacity:.3;cursor:not-allowed}.analysis-page{display:flex;height:calc(100vh - 42px)}.analysis-results{flex:1;padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}.analysis-results__header{display:flex;justify-content:space-between;align-items:center}.analysis-results__title{font-family:var(--font-sans);font-size:14px;letter-spacing:.04em;color:var(--text-0)}.analysis-results__error{padding:12px 16px;border:1px solid var(--red);background:var(--red-dim);color:var(--red);font-family:var(--font-mono);font-size:12px}.analysis-results__warning{padding:10px 16px;border:1px solid var(--amber);background:var(--amber-dim);color:var(--amber);font-family:var(--font-mono);font-size:11px}.analysis-results__loading{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-2);font-family:var(--font-mono);font-size:12px}.settings-page{padding:24px 32px;max-width:900px}.settings-title{font-family:var(--font-sans);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-1);margin-bottom:16px}.settings-search{width:100%;max-width:400px;padding:9px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:0;font-family:var(--font-mono);font-size:13px;color:var(--text-0);outline:none;margin-bottom:20px}.settings-search:focus{border-color:var(--accent)}.settings-search::placeholder{color:var(--text-2)}.settings-table{width:100%;border-collapse:collapse;font-family:var(--font-mono)}.settings-table th{background:var(--bg-2);color:var(--text-1);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:8px 12px;text-align:left;border-bottom:1px solid var(--line)}.settings-table td{padding:7px 12px;font-size:12px;color:var(--text-0);border-bottom:1px solid var(--line)}.settings-table tr:nth-child(2n) td{background:var(--bg-2)}.settings-table tr:hover td{background:var(--bg-3)}.settings-role-badge{display:inline-block;padding:2px 8px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid}.settings-role-badge--admin{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}.settings-role-badge--teacher{color:var(--text-2);border-color:var(--line);background:transparent}.settings-promote-btn{padding:4px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text-1);cursor:pointer}.settings-promote-btn:hover{border-color:var(--accent);color:var(--accent)}.settings-confirm-row{display:flex;align-items:center;gap:8px}.settings-confirm-text{font-family:var(--font-mono);font-size:10px;color:var(--amber)}.settings-confirm-yes{padding:3px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--green);border-radius:0;background:var(--green-dim);color:var(--green);cursor:pointer}.settings-confirm-no{padding:3px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text-2);cursor:pointer}.settings-action-group{display:flex;gap:6px}.settings-transfer-btn{padding:4px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--amber);border-radius:0;background:transparent;color:var(--amber);cursor:pointer}.settings-transfer-btn:hover{background:var(--amber-dim)}.settings-transfer-confirm{display:flex;flex-direction:column;gap:6px}.settings-transfer-warning{font-family:var(--font-mono);font-size:10px;line-height:1.5;color:var(--red);padding:6px 8px;border:1px solid var(--red);background:var(--red-dim)}.settings-transfer-yes{padding:3px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--red);border-radius:0;background:var(--red-dim);color:var(--red);cursor:pointer}.settings-transfer-yes:hover{background:var(--red);color:var(--bg-0)}.settings-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px}.settings-toolbar .settings-search{margin-bottom:0}.settings-invite-badge{display:inline-block;padding:2px 8px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid}.settings-invite-badge--accepted{color:var(--green);border-color:var(--green);background:var(--green-dim)}.settings-invite-badge--pending{color:var(--amber);border-color:var(--amber);background:var(--amber-dim)}.settings-invite-badge--not-sent{color:var(--text-2);border-color:var(--line);background:transparent}.settings-resend-btn{padding:4px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--accent);border-radius:0;background:transparent;color:var(--accent);cursor:pointer}.settings-resend-btn:hover{background:var(--accent-dim)}.settings-resend-btn:disabled{opacity:.5;cursor:default}.settings-resend-all-btn{padding:8px 14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--amber);border-radius:0;background:transparent;color:var(--amber);cursor:pointer;white-space:nowrap}.settings-resend-all-btn:hover{background:var(--amber-dim)}.settings-resend-all-btn:disabled{opacity:.5;cursor:default}.settings-resend-result{font-family:var(--font-mono);font-size:11px;color:var(--green);padding:6px 0;margin-bottom:8px}
