:root{--bg:#1a1a2e;--bg-surface:#16213e;--bg-card:#0f3460;--text:#e0e0e0;--text-muted:#a0a0b0;--accent:#e94560;--accent-hover:#ff6b81;--success:#2ecc71;--warning:#f39c12;--error:#e74c3c;--belt-unseen:#444;--belt-novice:#e8e8e8;--belt-apprentice:#2471a3;--belt-confirmed:#7d3c98;--belt-expert:#6e3b1e;--belt-master:#1a1a1a;--tatami-fig-label:#ffffffe0;--tatami-fig-struct:#cfd6e6;--tatami-fig-grid:#ffffff14;--tatami-fig-axis:#fff6;--tatami-fig-axis-tick:#ffffff4d;--tatami-fig-axis-label:#ffffffb3}[data-theme=light]{--tatami-fig-label:#1a1a1a;--tatami-fig-struct:#37474f;--tatami-fig-grid:#2684a538;--tatami-fig-axis:#000000bf;--tatami-fig-axis-tick:#0000008c;--tatami-fig-axis-label:#000c}.tatami-fig-label{fill:var(--tatami-fig-label)!important;color:var(--tatami-fig-label)!important}.tatami-fig-struct{fill:var(--tatami-fig-struct)!important;stroke:var(--tatami-fig-struct)!important}.tatami-fig-grid{stroke:var(--tatami-fig-grid)!important}.tatami-fig-axis{stroke:var(--tatami-fig-axis)!important}.tatami-fig-axis-tick{stroke:var(--tatami-fig-axis-tick)!important}.tatami-fig-axis-label{fill:var(--tatami-fig-axis-label)!important}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.app{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--bg-surface);border-bottom:1px solid #ffffff1a;align-items:center;gap:1rem;padding:.75rem 1.5rem;display:flex}.header h1{font-size:1.25rem;font-weight:600}.header-spacer{flex:1}.user-info{white-space:nowrap;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.user-name{color:var(--text-muted)}.logout-btn{border:1px solid var(--text-muted);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;padding:.2rem .5rem;font-size:.75rem}.user-menu-wrapper{position:relative}.user-menu-trigger{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:.3rem;padding:.2rem 0;font-size:.85rem;display:flex}.user-menu-trigger:hover{color:var(--text)}.user-menu-arrow{font-size:.65rem}.user-menu-backdrop{z-index:99;position:fixed;inset:0}.user-menu-dropdown{background:var(--bg-surface);z-index:100;border:1px solid #ffffff26;border-radius:6px;min-width:10rem;padding:.3rem 0;position:absolute;top:calc(100% + .4rem);right:0;box-shadow:0 4px 12px #0000004d}.user-menu-item{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:.5rem 1rem;font-size:.85rem;text-decoration:none;display:block}.user-menu-item:hover{background:#ffffff0f}.user-menu-divider{background:#ffffff1a;height:1px;margin:.3rem 0}.user-menu-logout{color:var(--text-muted)}.user-menu-logout:hover{color:var(--error,#ef5350)}.curriculum-selector{background:var(--bg-surface);color:var(--text);cursor:pointer;border:1px solid #ffffff26;border-radius:4px;padding:.25rem .5rem;font-size:.85rem}.curriculum-selector:hover{border-color:#ffffff4d}.add-curriculum-btn{color:var(--text-muted);border:1px solid #ffffff26;border-radius:4px;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:1.1rem;font-weight:600;text-decoration:none;transition:border-color .2s,color .2s;display:inline-flex}.add-curriculum-btn:hover{color:var(--text);border-color:#ffffff4d}.login-link{color:var(--text-muted);font-size:.85rem}.main{flex-direction:column;flex:1;width:100%;max-width:48rem;margin:0 auto;padding:1rem;display:flex}.history-table{border-collapse:collapse;background:var(--bg-surface);border-radius:8px;width:100%;overflow:hidden}.history-table thead{background:var(--bg-card)}.history-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid #ffffff1a;padding:.75rem 1rem;font-size:.8rem;font-weight:600}.history-table td{border-bottom:1px solid #ffffff0d;padding:.75rem 1rem;font-size:.9rem}.history-table tbody tr:hover{background:#ffffff08}.history-table tbody tr.clickable-row{cursor:pointer}.history-table tbody tr.clickable-row:hover{background:#e9456014}.history-table tbody tr:last-child td{border-bottom:none}.history-view-link{color:var(--accent);font-size:.85rem;font-weight:500;text-decoration:none}.history-view-link:hover{text-decoration:underline}.history-load-more{justify-content:center;margin-top:1.25rem;display:flex}.history-load-more-button{color:var(--text);cursor:pointer;background:0 0;border:1px solid #ffffff26;border-radius:6px;padding:.5rem 1.25rem;font-size:.9rem;transition:border-color .15s,color .15s}.history-load-more-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.history-load-more-button:disabled{cursor:default;opacity:.6}@keyframes session-highlight-fade{0%{box-shadow:inset 3px 0 0 var(--accent);background:#e9456059}to{background:0 0;box-shadow:inset 3px 0 #0000}}.history-table tbody tr.session-highlighted{animation:4s ease-out forwards session-highlight-fade}.session-type-badge{border-radius:4px;padding:.15rem .5rem;font-size:.8rem;font-weight:500;display:inline-block}.session-type-badge.diagnostic{color:var(--accent);background:#e9456033}.session-type-badge.daily{color:var(--success);background:#2ecc7133}.session-type-badge.exam-prep{color:var(--warning);background:#f39c1233}.session-type-badge.targeted{color:var(--belt-apprentice);background:#2471a333}.status-badge{font-size:.8rem}.status-badge.en-cours{color:var(--success)}.status-badge.terminee{color:var(--text-muted)}.empty-state{text-align:center;color:var(--text-muted);padding:2rem;font-style:italic}.text-muted{color:var(--text-muted)}.history-legend{color:var(--text-muted);gap:1.5rem;padding:.75rem 1rem;font-size:.8rem;display:flex}.eval-chips{flex-wrap:wrap;gap:.3rem;display:flex}.eval-chip{white-space:nowrap;color:inherit;background:#ffffff0d;border-radius:4px;align-items:center;gap:.15rem;padding:.1rem .4rem;font-size:.75rem;text-decoration:none;display:inline-flex;position:relative}a.eval-chip:hover{background:#ffffff1a}.eval-chip[data-tooltip]:hover:after{content:attr(data-tooltip);background:var(--bg-card);color:var(--text);white-space:nowrap;z-index:10;pointer-events:none;border:1px solid #ffffff26;border-radius:4px;margin-bottom:4px;padding:.3rem .5rem;font-size:.75rem;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.input-actions button[title],.session-options button[title],.session-error button[title],.session-blocked-actions button[title],.stale-session-actions button[title],.cheatsheet-header button[title]{position:relative}.input-actions button[title]:hover:after,.session-options button[title]:hover:after,.session-error button[title]:hover:after,.session-blocked-actions button[title]:hover:after,.stale-session-actions button[title]:hover:after,.cheatsheet-header button[title]:hover:after{content:attr(title);background:var(--bg-card);color:var(--text);white-space:nowrap;z-index:30;pointer-events:none;border:1px solid #ffffff26;border-radius:4px;padding:.3rem .5rem;font-size:.75rem;position:absolute;box-shadow:0 4px 12px #0006}.input-actions button[title]:hover:after{margin-right:8px;top:50%;right:100%;transform:translateY(-50%)}.session-options button[title]:hover:after,.session-error button[title]:hover:after,.session-blocked-actions button[title]:hover:after,.stale-session-actions button[title]:hover:after,.cheatsheet-header button[title]:hover:after{margin-bottom:6px;bottom:100%;left:50%;transform:translate(-50%)}.session-start{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem 0;display:flex}.session-start h2{margin-bottom:1.5rem}.ai-disclosure{color:var(--text-muted,#a0a0b0);text-align:center;background:#ffffff08;border:1px solid #ffffff14;border-radius:6px;max-width:36rem;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.85rem}.session-options{gap:1.5rem;width:100%;max-width:40rem;display:flex}.session-option{background:var(--bg-surface);border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;flex:1;gap:.75rem;padding:1.5rem;display:flex}.session-option.primary{border-color:var(--accent)}.session-option h3{margin:0;font-size:1.1rem}.session-option p{color:var(--text-muted);flex:1;font-size:.85rem}.session-option button{align-self:flex-start}.stale-session-banner{background:var(--bg-surface);border:1px solid var(--warning,#e0a030);text-align:left;border-radius:8px;width:100%;max-width:40rem;margin-bottom:1rem;padding:1rem 1.5rem}.stale-session-banner p{color:var(--text);margin:0 0 .75rem;font-size:.95rem}.stale-session-actions{gap:.75rem;display:flex}.session-page{flex-direction:column;flex:1;min-height:0;display:flex}.chat{scroll-behavior:smooth;flex-direction:column;flex:1;gap:.75rem;min-height:0;padding:.5rem 0 1rem;display:flex;overflow-y:auto}.message{border-radius:.75rem;max-width:85%;padding:.85rem 1rem;line-height:1.55}.message.tutor{background:var(--bg-card);border-left:3px solid var(--accent);align-self:flex-start}.message.student{background:var(--bg-surface);border-right:3px solid var(--success);text-align:right;align-self:flex-end}.message.student .role{color:var(--success)}.message .role{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-bottom:.3rem;font-size:.7rem;font-weight:700}.message.streaming{border-left-color:var(--warning)}.message-interrupted-chip{background:var(--bg-surface);color:var(--text-muted);border-left:2px solid var(--warning);border-radius:.4rem;margin-top:.5rem;padding:.35rem .55rem;font-size:.78rem;font-style:italic;line-height:1.35}.remediation-resources{background:var(--bg-surface);border-left:3px solid var(--accent);border-radius:.5rem;margin:.75rem 0;padding:.75rem .9rem}.remediation-resources-intro{color:var(--text-muted);margin:0 0 .5rem;font-size:.85rem}.remediation-resources-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.external-resource-link{color:var(--text);flex-wrap:wrap;align-items:baseline;gap:.45rem;text-decoration:none;display:flex}.external-resource-link:hover .external-resource-title{text-decoration:underline}.external-resource-badge{color:var(--accent);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;background:#e945602e;border-radius:.3rem;flex:none;padding:.1rem .4rem;font-size:.72rem;font-weight:600}.external-resource-title{font-weight:600}.external-resource-meta{color:var(--text-muted);font-size:.78rem}.remediation-resource{flex-direction:column;gap:.3rem;display:flex}.cours-resource-link{color:var(--text);flex-wrap:wrap;align-items:baseline;gap:.45rem;text-decoration:none;display:flex}.cours-resource-link:hover .cours-resource-title{text-decoration:underline}.cours-resource-badge{background:var(--accent);color:#fff;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;border-radius:.3rem;flex:none;padding:.1rem .4rem;font-size:.72rem;font-weight:600}.cours-resource-title{font-weight:600}.kc-resources{margin-top:.6rem}.kc-resources-summary{cursor:pointer;color:var(--text-muted);font-size:.85rem}.kc-resources-list{flex-direction:column;gap:.4rem;margin:.4rem 0 0;padding:0;list-style:none;display:flex}.typing-dots{letter-spacing:.15em;color:var(--text-muted);animation:1.2s steps(3,end) infinite blink;display:inline-block}@keyframes blink{0%{opacity:.2}50%{opacity:1}to{opacity:.2}}.math-content p{margin-bottom:.5rem}.math-content p:last-child{margin-bottom:0}.math-content .katex-display{margin:.75rem 0}.math-content table{border-collapse:collapse;width:100%;margin:.75rem 0;font-size:.875rem}.math-content th,.math-content td{text-align:left;border:1px solid #ffffff1f;padding:.4rem .6rem}.math-content th{text-transform:uppercase;color:var(--text-muted);background:#ffffff0f;font-size:.8rem;font-weight:600}.math-content pre{background:#0000004d;border-radius:.375rem;margin:.5rem 0;padding:.75rem;font-size:.85rem;overflow-x:auto}.math-content code{background:#ffffff0f;border-radius:.2rem;padding:.1rem .3rem;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.85em}.math-content pre code{background:0 0;padding:0}.graph-block{margin:.75rem 0}.graph-board{border:1px solid #ffffff1a;border-radius:.5rem;width:100%;height:20rem;overflow:hidden}.graph-board svg{background:#0d1b2a!important}.graph-placeholder{height:100%;color:var(--text-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex}.math-content ul,.math-content ol{margin:.4rem 0;padding-left:1.25rem}.math-content li{margin-bottom:.2rem}.math-content figure.exercise-figure{justify-content:center;margin:.75rem 0;display:flex}.math-content figure.exercise-figure>a{cursor:zoom-in;background:#fff;border-radius:6px;max-width:100%;padding:.5rem;transition:transform .15s ease-out;display:inline-block}.math-content figure.exercise-figure>a:hover{transform:scale(1.02)}.math-content figure.exercise-figure img{width:auto;max-width:100%;height:auto;max-height:420px;display:block}.math-content figure.exercise-figure figcaption{color:var(--text-muted);text-align:center;margin-top:.35rem;font-size:.85rem}.latex-cheatsheet{background:var(--bg-surface);border:1px solid #ffffff26;border-radius:.5rem;flex-shrink:0;margin-bottom:.5rem;font-size:.85rem}.cheatsheet-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:.4rem .75rem;display:flex}.cheatsheet-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1rem}.cheatsheet-body{padding:.5rem .75rem}.cheatsheet-body p{color:var(--text-muted);margin:0 0 .5rem}.cheatsheet-table{border-collapse:collapse;width:100%}.cheatsheet-table td{border-bottom:1px solid #ffffff0d;padding:.2rem .5rem}.cheatsheet-table td:first-child{white-space:nowrap;color:var(--accent);font-family:monospace}.cheatsheet-table td:last-child{color:var(--text-muted)}.demo-templates-empty{color:var(--text-muted);margin:0 0 .35rem}.image-attach-btn{background:var(--bg-surface);color:var(--text-muted);cursor:pointer;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:background .15s,color .15s;display:flex}.image-attach-btn:hover{color:var(--accent);background:#ffffff14}.image-attach-btn:disabled{opacity:.4;cursor:not-allowed}.message-image{margin:.5rem 0}.message-image img{cursor:pointer;border:1px solid #ffffff1a;border-radius:6px;max-width:100%;max-height:400px}.message-image img:hover{opacity:.9}.session-option-buttons{flex-wrap:wrap;gap:.5rem;display:flex}.message-image-badge{color:var(--text-muted);opacity:.7;align-items:center;gap:.35rem;padding:.2rem 0;font-size:.8rem;display:flex}.message-image-details{margin:.25rem 0}.message-image-details>summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.message-image-details>summary::-webkit-details-marker{display:none}.message-image-details>summary:hover{opacity:1}.message-image-badge span{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.image-preview{background:var(--bg-surface);color:var(--text-muted);border:1px dashed #fff3;border-radius:.5rem;flex-shrink:0;align-items:center;gap:.5rem;padding:.35rem .75rem;font-size:.85rem;display:flex}.image-preview-name{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.image-preview-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:.9rem;line-height:1}.image-preview-remove:hover{color:#e74c3c}.upload-error{color:#e74c3c;overflow-wrap:anywhere;background:#e74c3c14;border:1px solid #e74c3c73;border-radius:.5rem;flex-shrink:1;align-items:center;gap:.5rem;max-width:100%;padding:.35rem .75rem;font-size:.85rem;display:inline-flex}.upload-error-dismiss{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:.9rem;line-height:1}.upload-error-dismiss:hover{opacity:.75}.latex-help-btn{background:var(--bg-surface);color:var(--text-muted);cursor:pointer;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;width:2rem;height:2rem;font-size:.9rem;font-weight:600;transition:background .15s,color .15s}.latex-help-btn:hover{color:var(--accent);background:#ffffff14}.insert-menu-btn{background:var(--bg-surface);color:var(--text-muted);cursor:pointer;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;width:2rem;height:2rem;font-size:1rem;font-weight:600;transition:background .15s,color .15s}.insert-menu-btn:hover{color:var(--accent);background:#ffffff14}.composer-insert-panel{background:var(--bg-surface);border:1px solid #ffffff26;border-radius:.5rem;flex-shrink:0;margin-bottom:.5rem;font-size:.85rem}.composer-insert-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem .75rem;display:flex}.composer-insert-back{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.2rem;line-height:1;transition:color .15s}.composer-insert-back:hover{color:var(--accent)}.composer-insert-header strong{flex:auto}.composer-insert-list{flex-direction:column;gap:.35rem;padding:.5rem .75rem;display:flex}.composer-insert-item{text-align:left;cursor:pointer;background:#ffffff08;border:1px solid #ffffff1a;border-radius:.4rem;grid-template-rows:auto auto;grid-template-columns:1.5rem 1fr;align-items:center;column-gap:.5rem;width:100%;padding:.5rem .6rem;transition:background .15s,border-color .15s;display:grid}.composer-insert-item:hover{border-color:var(--accent);background:#ffffff14}.composer-insert-icon{color:var(--accent);text-align:center;grid-row:1/span 2;font-size:1.2rem;font-weight:700}.composer-insert-label{color:var(--text);font-weight:600}.composer-insert-desc{color:var(--text-muted);font-size:.8rem;line-height:1.3}.sign-table-builder{flex-direction:column;gap:.6rem;padding:.5rem .75rem;display:flex}.composer-insert-intro{color:var(--text-muted);margin:0}.sign-table-fields{flex-wrap:wrap;gap:.75rem;display:flex}.sign-table-field{flex-direction:column;flex:6rem;gap:.2rem;display:flex}.sign-table-field span{color:var(--text-muted);font-size:.8rem}.sign-table-field-inline{flex-direction:row;flex:none;align-items:center;gap:.4rem}.sign-table-grid{background:#ffffff05;border:1px solid #ffffff1a;border-radius:.4rem;place-items:center;gap:.3rem .35rem;padding:.5rem .4rem;display:grid;overflow-x:auto}.sign-table-grid-label{color:var(--text);background:0 0;border:none;border-right:1px solid #ffffff1f;justify-self:stretch;width:100%;padding:.2rem .5rem .2rem .1rem;font-size:.9rem}.sign-table-grid-label:focus{border-bottom:1px solid var(--accent);outline:none}math-field.sign-table-bound-field{min-width:2.6rem;color:var(--tatami-fig-label);--caret-color:var(--accent);--selection-background-color:#e945604d;background:#ffffff0a;border:1px solid #ffffff26;border-radius:.3rem;padding:.1rem .25rem;font-size:.95rem}math-field.sign-table-bound-field::part(menu-toggle),math-field.sign-table-bound-field::part(virtual-keyboard-toggle){display:none}.sign-table-select{color:var(--text);text-align:center;text-align-last:center;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff26;border-radius:.3rem;min-width:2rem;padding:.1rem .15rem;font-size:1rem;font-weight:600}.sign-table-select:focus{border-color:var(--accent);outline:none}.sign-table-select-dir{color:var(--accent)}.sign-table-coltools{flex-wrap:wrap;gap:.4rem;display:flex}.sign-table-coltool{color:var(--text);cursor:pointer;background:#ffffff08;border:1px solid #ffffff26;border-radius:.3rem;padding:.3rem .6rem;transition:background .15s,color .15s,border-color .15s}.sign-table-coltool:hover:not(:disabled){border-color:var(--accent);background:#ffffff14}.sign-table-coltool:disabled{opacity:.4;cursor:not-allowed}.sign-table-actions{justify-content:flex-end;display:flex}.input-actions{flex-direction:column;align-items:center;gap:.5rem;display:flex}.input-area{border-top:1px solid #ffffff1a;flex-shrink:0;gap:.5rem;padding:.75rem 0;transition:border-color .15s;display:flex}.input-area-dragover{border-color:var(--accent);border-style:dashed}.input-area textarea.text-input{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff26;border-right:3px solid var(--success);resize:none;border-radius:.75rem;flex:1;min-height:3rem;max-height:12rem;padding:.85rem 1rem;font-family:inherit;font-size:1rem;line-height:1.55;overflow-y:auto}.input-area textarea.text-input:focus{border-color:var(--accent);border-right-color:var(--success);outline:none}.input-area textarea.text-input::placeholder{color:var(--text-muted)}.input-area math-field.mathlive-input{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff26;border-right:3px solid var(--success);border-radius:.75rem;flex:1;min-height:3rem;max-height:8rem;padding:.85rem 1rem;font-size:1rem;line-height:1.55;overflow:hidden}.input-area math-field.mathlive-input::-webkit-scrollbar{display:none}.demo-buffer{flex-direction:column;gap:.4rem;padding:.5rem 0;display:flex}.demo-chip{background:var(--bg-surface);border:1px solid #ffffff26;border-right:3px solid var(--success);border-radius:.75rem;align-items:flex-start;gap:.5rem;padding:.5rem .75rem .5rem .5rem;font-size:.95rem;line-height:1.45;transition:border-color .15s,background .15s;display:flex}.demo-chip-active{border-color:var(--accent);background:var(--bg-card)}.demo-chip-index{text-align:center;min-width:1.4rem;color:var(--text-muted);flex-shrink:0;font-size:.8rem;font-weight:700}.demo-chip-content{min-width:0;color:var(--text);text-align:left;cursor:pointer;font:inherit;overflow-wrap:break-word;word-break:break-word;background:0 0;border:none;flex:1;padding:0}.demo-chip-content .math-content,.demo-chip-content .math-content p{overflow-wrap:break-word;word-break:break-word;margin:0}.demo-chip-content:hover{color:var(--accent-hover)}.demo-chip-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:.3rem;flex-shrink:0;padding:.2rem .4rem;font-size:1rem;line-height:1}.demo-chip-remove:hover{color:var(--accent);background:#e945601f}.demo-edit-banner{border-left:3px solid var(--accent);color:var(--accent);background:#e945601f;border-radius:.4rem;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem .75rem;font-size:.85rem;font-weight:600;display:flex}.demo-edit-cancel{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:.4rem;padding:.2rem .6rem;font-size:.8rem}.demo-edit-cancel:hover{background:var(--accent);color:var(--text)}.mode-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:.5rem;justify-content:center;align-items:center;min-width:2.4rem;padding:.35rem .55rem;font-size:.95rem;line-height:1;transition:background .15s,color .15s,border-color .15s;display:flex}.mode-toggle-btn:hover{color:var(--text);border-color:var(--accent)}.mode-toggle-btn-on{background:var(--accent);border-color:var(--accent);color:var(--bg)}.mode-toggle-btn-on:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--bg)}.demo-mode-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:.5rem;justify-content:center;align-items:center;padding:.5rem;transition:background .15s,color .15s,border-color .15s;display:flex}.demo-mode-btn:hover{color:var(--text);border-color:var(--success)}.demo-mode-btn-on{background:var(--success);border-color:var(--success);color:var(--bg)}.demo-mode-btn-on:hover{background:var(--success);color:var(--bg)}.input-area math-field.mathlive-input:focus,.input-area math-field.mathlive-input:focus-within{border-color:var(--accent);border-right-color:var(--success);outline:none}.btn{cursor:pointer;border:none;border-radius:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:background .2s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.session-start,.session-error,.session-finished{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1rem;padding:2rem;display:flex}.session-readonly-banner{color:var(--text-muted);border-top:1px solid #ffffff1a;flex-shrink:0;justify-content:center;align-items:center;gap:1rem;padding:1rem 2rem;display:flex}.session-start p,.session-finished p{max-width:28rem;color:var(--text-muted);line-height:1.6}.session-error .error{color:var(--error);font-weight:500}@media (width<=640px){.message{max-width:95%}.main{padding:.5rem}.input-area textarea.text-input{font-size:.9rem}}.nav{gap:.25rem;display:flex}.nav-link{color:var(--text-muted);border-radius:.375rem;padding:.35rem .75rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.nav-link:hover{color:var(--text);background:#ffffff14}.nav-link[aria-current]{background:var(--accent);color:#fff}.dashboard{flex-direction:column;gap:1.25rem;display:flex}.dashboard h2{font-size:1.25rem;font-weight:600}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1rem;display:grid}.stat-card{background:var(--bg-card);text-align:center;border-radius:.75rem;padding:1.25rem}.stat-value{color:var(--accent);font-size:2rem;font-weight:700}.stat-label{color:var(--text-muted);text-transform:uppercase;margin-top:.25rem;font-size:.875rem;font-weight:600}.stat-detail{color:var(--text-muted);margin-top:.5rem;font-size:.8rem}.card{background:var(--bg-card);border-radius:.75rem;padding:1.25rem}.card h3{margin-bottom:.75rem;font-size:1rem;font-weight:600}.belt-bar{border-radius:.5rem;gap:1px;height:1.5rem;display:flex;overflow:hidden}.belt-segment{min-width:2px;transition:width .3s}.belt-segment.belt-unseen{background:var(--belt-unseen)}.belt-segment.belt-novice{background:var(--belt-novice)}.belt-segment.belt-apprentice{background:var(--belt-apprentice)}.belt-segment.belt-confirmed{background:var(--belt-confirmed)}.belt-segment.belt-expert{background:var(--belt-expert)}.belt-segment.belt-master{background:var(--belt-master)}.belt-legend,.heatmap-legend{color:var(--text-muted);flex-wrap:wrap;gap:.75rem;margin-top:.75rem;font-size:.8rem;display:flex}.legend-item{align-items:center;gap:.35rem;display:flex}.legend-dot{border-radius:50%;width:.7rem;height:.7rem;display:inline-block}.legend-dot.belt-unseen{background:var(--belt-unseen)}.legend-dot.belt-novice{background:var(--belt-novice)}.legend-dot.belt-apprentice{background:var(--belt-apprentice)}.legend-dot.belt-confirmed{background:var(--belt-confirmed)}.legend-dot.belt-expert{background:var(--belt-expert)}.legend-dot.belt-master{background:var(--belt-master)}.legend-dot.due{border:2px solid var(--warning);background:0 0}.card.exam-card{border-left:3px solid var(--warning)}.exam-title{font-size:1.1rem;font-weight:600}.exam-detail{color:var(--text-muted);margin-top:.25rem;font-size:.875rem}.heatmap-page{flex-direction:column;gap:1.25rem;display:flex}.heatmap-page h2{font-size:1.25rem;font-weight:600}.heatmap-subtitle{color:var(--text-muted);margin-top:-.75rem;font-size:.875rem}.heatmap-grid{flex-direction:column;gap:1rem;display:flex}.heatmap-block{background:var(--bg-card);border-radius:.75rem;padding:1rem}.heatmap-block-label{text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem;font-size:.8rem;font-weight:600}.heatmap-dots{flex-wrap:wrap;gap:.5rem;display:flex}.heatmap-dot-wrapper{color:inherit;text-decoration:none;display:inline-block;position:relative}.heatmap-dot{cursor:pointer;border-radius:.375rem;width:1.75rem;height:1.75rem;transition:transform .15s}.heatmap-dot-wrapper:hover .heatmap-dot{z-index:1;transform:scale(1.3)}.tooltip{background:var(--bg-surface);z-index:100;pointer-events:none;border:1px solid #ffffff26;border-radius:.5rem;min-width:14rem;padding:.5rem .75rem;display:none;position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0006}.tooltip:after{content:"";border:6px solid #0000;border-top-color:#ffffff26;position:absolute;top:100%;left:50%;transform:translate(-50%)}.heatmap-dot-wrapper:hover .tooltip{display:block}.tooltip-id{color:var(--text-muted);font-size:.75rem;font-weight:600}.tooltip-name{color:var(--text);margin-top:.15rem;font-size:.875rem}.tooltip-streak{color:var(--text-muted);margin-top:.25rem;font-size:.75rem}.heatmap-dot.belt-unseen{background:var(--belt-unseen)}.heatmap-dot.belt-novice{background:var(--belt-novice)}.heatmap-dot.belt-apprentice{background:var(--belt-apprentice)}.heatmap-dot.belt-confirmed{background:var(--belt-confirmed)}.heatmap-dot.belt-expert{background:var(--belt-expert)}.heatmap-dot.belt-master{background:var(--belt-master);box-shadow:inset 0 0 0 1px #fff3}.heatmap-dot.due{box-shadow:0 0 0 2px var(--warning);animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 0 2px var(--warning)}50%{box-shadow:0 0 0 4px var(--warning), 0 0 8px var(--warning)}}.geometry-page{flex-direction:column;gap:1rem;display:flex}.geo-toolbar{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.geo-tool{background:var(--bg-surface);color:var(--text-muted);cursor:pointer;border:1px solid #ffffff1a;border-radius:.5rem;flex-direction:column;align-items:center;gap:.15rem;padding:.5rem .65rem;font-size:.75rem;transition:background .15s,color .15s,border-color .15s;display:flex}.geo-tool:hover{color:var(--text);background:#ffffff14}.geo-tool.active{background:var(--accent);color:#fff;border-color:var(--accent)}.geo-tool-icon{font-size:1.1rem;line-height:1}.geo-tool-label{font-size:.65rem;font-weight:500}.geo-toolbar-sep{background:#ffffff1a;width:1px;height:2rem;margin:0 .25rem}.geo-canvas{border:1px solid #ffffff1a;border-radius:.75rem;width:100%;height:28rem;overflow:hidden}.geo-canvas .JXGtext{color:#aaa!important;font-family:inherit!important;font-size:.75rem!important}.geo-canvas svg{background:#0d1b2a!important}.geo-status{color:var(--text-muted);justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.85rem;display:flex}.geo-step-count{color:var(--accent);font-weight:600}.geo-steps{background:var(--bg-card);border-radius:.75rem;padding:1rem}.geo-steps h3{margin-bottom:.5rem;font-size:.9rem;font-weight:600}.geo-steps-list{flex-direction:column;gap:.25rem;display:flex}.geo-step{color:var(--text-muted);border-bottom:1px solid #ffffff0d;padding:.25rem 0;font-size:.8rem}.geo-step:last-child{border-bottom:none}.exam-upload-page{flex-direction:column;gap:1.25rem;display:flex}.exam-upload-page h2{font-size:1.25rem;font-weight:600}.drop-zone{text-align:center;cursor:pointer;border:2px dashed #ffffff26;border-radius:.75rem;padding:2.5rem 1.5rem;transition:border-color .2s,background .2s}.drop-zone.dragging{border-color:var(--accent);background:#e9456014}.drop-zone-icon{margin-bottom:.75rem;font-size:2.5rem;display:block}.drop-zone-text{color:var(--text-muted);margin-bottom:1rem;font-size:.9rem}.drop-zone-btn{cursor:pointer;display:inline-block}.exam-preview{background:var(--bg-card);border-radius:.75rem;padding:1rem}.exam-preview h3{margin-bottom:.75rem;font-size:1rem;font-weight:600}.pdf-viewer-component{flex-direction:column;gap:.5rem;display:flex}.pdf-controls{justify-content:center;align-items:center;gap:1rem;display:flex}.pdf-nav-btn{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff1a;padding:.4rem .8rem;font-size:.85rem}.pdf-nav-btn:disabled{opacity:.3;cursor:not-allowed}.pdf-page-info{color:var(--text-muted);text-align:center;min-width:8rem;font-size:.85rem}.pdf-canvas-wrapper{background:#2a2a2a;border:1px solid #ffffff1a;border-radius:.5rem;justify-content:center;max-height:36rem;display:flex;position:relative;overflow:auto}.pdf-canvas-wrapper canvas{max-width:100%;height:auto;display:block}.pdf-loading{color:var(--text-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.exam-results{background:var(--bg-card);border-radius:.75rem;flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.exam-results.confirmed{border:2px solid var(--success)}.confirm-banner{background:var(--success);color:#fff;text-align:center;text-transform:uppercase;letter-spacing:.05em;border-radius:.375rem;padding:.4rem;font-size:.85rem;font-weight:600}.exam-results-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.exam-meta-fields{flex-direction:column;flex:1;gap:.4rem;display:flex}.exam-title-input{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff1a;border-radius:.375rem;padding:.4rem .6rem;font-size:1.1rem;font-weight:600}.exam-date-input{background:var(--bg-surface);color:var(--text-muted);border:1px solid #ffffff1a;border-radius:.375rem;padding:.3rem .6rem;font-size:.85rem}.exam-title-input:disabled,.exam-date-input:disabled{opacity:.7;background:0 0;border-color:#0000}.exam-grade{white-space:nowrap;font-size:1.5rem;font-weight:700}.grade-good{color:var(--success)}.grade-ok{color:var(--warning)}.grade-bad{color:var(--error)}.exam-results h4{color:var(--text-muted);text-transform:uppercase;margin-top:.5rem;font-size:.9rem;font-weight:600}.question-table{flex-direction:column;gap:1px;font-size:.85rem;display:flex}.question-row{border-bottom:1px solid #ffffff0d;grid-template-columns:2.5rem 1fr 3.5rem 7rem 1fr;align-items:center;gap:.5rem;padding:.5rem 0;display:grid}.question-row.header{color:var(--text-muted);text-transform:uppercase;border-bottom:1px solid #ffffff1a;font-size:.75rem;font-weight:600}.q-num{font-weight:600}.q-score{text-align:center;font-weight:600}.score-good{color:var(--success)}.score-ok{color:var(--warning)}.score-bad{color:var(--error)}.q-error select{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff1a;border-radius:.25rem;width:100%;padding:.2rem .4rem;font-size:.8rem}.q-error select:disabled{opacity:.6;border-color:#0000}.q-comment{color:var(--text-muted);font-size:.8rem}.kc-updates{flex-direction:column;gap:.35rem;display:flex}.kc-update-row{align-items:center;gap:.5rem;padding:.3rem 0;font-size:.85rem;display:flex}.kc-dot{border-radius:50%;flex-shrink:0;width:.7rem;height:.7rem}.kc-dot.belt-unseen{background:var(--belt-unseen)}.kc-dot.belt-novice{background:var(--belt-novice)}.kc-dot.belt-apprentice{background:var(--belt-apprentice)}.kc-dot.belt-confirmed{background:var(--belt-confirmed)}.kc-dot.belt-expert{background:var(--belt-expert)}.kc-dot.belt-master{background:var(--belt-master)}.kc-id{color:var(--text-muted);min-width:3rem;font-weight:600}.kc-name{flex:1}.kc-level{color:var(--text-muted);font-weight:500}.confirm-btn{align-self:flex-end;margin-top:.5rem}.kc-catalog-page{flex-direction:column;gap:1rem;display:flex}.kc-catalog-page h2{font-size:1.25rem;font-weight:600}.kc-catalog-subtitle{color:var(--text-muted);margin-top:-.5rem;font-size:.875rem}.kc-block-card{background:var(--bg-card);border-radius:.75rem;overflow:hidden}.kc-block-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.75rem 1rem;transition:background .15s;display:flex}.kc-block-header:hover{background:#ffffff0a}.kc-block-chevron{color:var(--text-muted);text-align:center;width:1rem;font-size:.9rem}.kc-block-name{flex:1;font-size:.95rem;font-weight:600}.kc-block-count{color:var(--text-muted);font-size:.8rem}.kc-block-body{padding:0 1rem .75rem;display:none}.kc-block-body.open{display:block}.kc-table{font-size:.85rem}.kc-table-header{color:var(--text-muted);text-transform:uppercase;border-bottom:1px solid #ffffff1a;grid-template-columns:3.5rem 1fr 5.5rem 3rem 4rem;gap:.5rem;padding:.4rem 0;font-size:.75rem;font-weight:600;display:grid}.kc-table-row{color:inherit;border-bottom:1px solid #ffffff0a;border-radius:.25rem;grid-template-columns:3.5rem 1fr 5.5rem 3rem 4rem;align-items:center;gap:.5rem;padding:.45rem .5rem;text-decoration:none;transition:background-color .1s;display:grid}a.kc-table-row:hover{background-color:#ffffff0a}.kc-table-row:last-child{border-bottom:none}.kc-col-id{color:var(--text-muted);font-size:.8rem;font-weight:600}.kc-col-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kc-col-streak{text-align:center;color:var(--text-muted)}.kc-col-due{color:var(--text-muted);font-size:.75rem}.kc-col-due.is-due{color:var(--warning);font-weight:600}.kc-level-badge{text-align:center;border-radius:.25rem;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.kc-level-badge.belt-unseen{background:var(--belt-unseen);color:#999}.kc-level-badge.belt-novice{background:var(--belt-novice);color:#333}.kc-level-badge.belt-apprentice{background:var(--belt-apprentice);color:#fff}.kc-level-badge.belt-confirmed{background:var(--belt-confirmed);color:#fff}.kc-level-badge.belt-expert{background:var(--belt-expert);color:#fff}.kc-level-badge.belt-master{background:var(--belt-master);color:#fff}.session-summary-text{color:var(--text-muted);-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;margin:.35rem 0 0;font-size:.8rem;font-style:italic;line-height:1.4;display:-webkit-box;overflow:hidden}.session-summary-text.expanded{-webkit-line-clamp:unset;line-clamp:unset;display:block;overflow:visible}.session-summary-toggle{color:var(--accent,#6ea8fe);cursor:pointer;background:0 0;border:none;margin-top:.2rem;padding:0;font-size:.75rem;font-weight:600}.session-summary-toggle:hover{text-decoration:underline}.errors-page{padding:.5rem 0}.error-pattern-card{background:var(--bg-surface);border-left:3px solid var(--text-muted);border-radius:.75rem;margin-bottom:.75rem;padding:1rem}.error-pattern-card.severity-recurring{border-left-color:#f39c12}.error-pattern-card.severity-systematic{border-left-color:#e74c3c}.pattern-header{align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.severity-badge{text-transform:uppercase;border-radius:.25rem;padding:.2rem .5rem;font-size:.75rem;font-weight:600}.severity-badge.severity-oneoff{color:var(--text-muted);background:#ffffff1a}.severity-badge.severity-recurring{color:#f39c12;background:#f39c1226}.severity-badge.severity-systematic{color:#e74c3c;background:#e74c3c26}.pattern-category{color:var(--text-muted);font-size:.85rem}.pattern-count{color:var(--text);margin-left:auto;font-weight:600}.pattern-description{margin:.25rem 0;line-height:1.5}.pattern-example{color:var(--text-muted);background:#ffffff08;border-left:2px solid #ffffff24;border-radius:0 .25rem .25rem 0;margin:.5rem 0;padding:.4rem .6rem;font-size:.85rem}.pattern-example-label{color:var(--text);margin-bottom:.15rem;font-style:normal;font-weight:600;display:block}.pattern-breakdown{font-variant-numeric:tabular-nums}.pattern-kcs{flex-wrap:wrap;gap:.25rem;margin-top:.5rem;display:flex}.pattern-kc-chip{color:var(--text-muted);background:#ffffff14;border-radius:.25rem;padding:.15rem .4rem;font-size:.75rem;text-decoration:none}a.pattern-kc-chip:hover{color:var(--text);background:#ffffff24}.pattern-dates{color:var(--text-muted);margin-top:.5rem;font-size:.75rem}.view-toggle{background:var(--bg-surface);border:1px solid #ffffff14;border-radius:.5rem;gap:0;margin:.75rem 0 1rem;display:inline-flex;overflow:hidden}.view-toggle .toggle-btn{appearance:none;color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:.45rem .85rem;font-size:.85rem;transition:background .12s,color .12s}.view-toggle .toggle-btn:hover{color:var(--text);background:#ffffff0a}.view-toggle .toggle-btn.active{color:var(--text);background:#ffffff14;font-weight:600}.view-toggle .toggle-btn+.toggle-btn{border-left:1px solid #ffffff14}.errors-aggregate{flex-direction:column;gap:1rem;display:flex}.error-kc-group{background:var(--bg-surface);border-left:3px solid var(--text-muted);border-radius:.75rem;padding:.85rem 1rem}.error-kc-group h3{color:var(--text);margin:0 0 .5rem;font-size:.95rem}.error-kc-group h3 a{color:inherit;text-decoration:none}.error-kc-group h3 a:hover{text-decoration:underline}.error-kc-group ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.error-row{border-top:1px dashed #ffffff0f;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.4rem 0;font-size:.85rem;display:flex}.error-row:first-child{border-top:0}.error-row .pattern-count{margin-left:auto}.error-row .pattern-dates{flex-basis:100%;margin-top:.15rem}.status-badge{text-transform:uppercase;letter-spacing:.02em;border-radius:.25rem;padding:.18rem .45rem;font-size:.7rem;font-weight:600}.status-badge.status-open{color:#f39c12;background:#f39c1226}.status-badge.status-remediated{color:#2ecc71;background:#2ecc7126}.status-badge.status-regressed{color:#e74c3c;background:#e74c3c26}.pattern-remediation{color:var(--text-muted);font-size:.75rem;font-style:italic}.pattern-source-session{margin-top:.4rem}.pattern-source-link{color:var(--text-muted);font-size:.75rem}a.pattern-source-link:hover{color:var(--text)}.pattern-rework{margin-top:.6rem}.pattern-rework-link{text-decoration:none}.controles-page{padding:.5rem 0}.controles-section{margin-bottom:2rem}.section-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.section-header h3{margin:0}.btn-sm{padding:.4rem .8rem;font-size:.85rem}.exam-card{background:var(--bg-surface);border-left:3px solid var(--text-muted);border-radius:.75rem;margin-bottom:.75rem;padding:1rem}.exam-card.upcoming{border-left-color:#5dade2}.exam-card.completed{border-left-color:#2ecc71}.exam-card-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.exam-card-info{flex-direction:column;gap:.25rem;display:flex}.exam-card-meta{align-items:center;gap:.5rem;display:flex}.exam-date{color:var(--text-muted);white-space:nowrap;font-size:.85rem}.exam-score{color:#2ecc71;font-weight:600}.exam-theme{color:var(--text-muted);background:#ffffff14;border-radius:.25rem;padding:.15rem .4rem;font-size:.8rem}.exam-comment{color:var(--text-muted);margin:.5rem 0 0;font-size:.85rem;font-style:italic}.exam-docs{flex-direction:column;gap:.25rem;margin-top:.5rem;display:flex}.exam-doc{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.doc-type{min-width:3rem;font-weight:600}.doc-name{color:var(--text-muted)}.doc-analysis{color:var(--text-muted);margin-left:auto;font-size:.75rem}.exam-docs-empty{color:var(--text-muted);margin-top:.5rem;font-size:.85rem}.exam-form{background:var(--bg-surface);border:1px solid #ffffff26;border-radius:.75rem;margin-bottom:1rem;padding:1.25rem}.exam-form h4{margin:0 0 1rem}.form-group{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.form-group label{color:var(--text-muted);font-size:.85rem}.form-group input,.form-group textarea,.form-group select{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff26;border-radius:.375rem;padding:.5rem;font-size:.9rem}.form-error{color:var(--error);background:#e74c3c26;border-radius:.375rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.85rem}.form-notice{color:var(--warning);background:#f39c1226;border-radius:.375rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.85rem}.ds-theme-picker{flex-wrap:wrap;gap:.5rem;display:flex}.ds-theme-option{border:1px solid var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;min-height:2.25rem;padding:.35rem .7rem;font-size:.85rem;display:flex}.ds-theme-option:has(input:checked){border-color:var(--accent);color:var(--accent)}.ds-theme-option:has(input:disabled){opacity:.45;cursor:not-allowed}.form-actions{justify-content:flex-end;gap:.5rem;margin-top:.75rem;display:flex}.btn-ghost{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #ffffff26;border-radius:.375rem;padding:.5rem 1rem}.btn-ghost:hover{border-color:var(--text);color:var(--text)}.exam-upload-actions{align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.upload-btn{color:var(--text-muted);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:.25rem;padding:.3rem .6rem;font-size:.8rem}.upload-btn:hover{border-color:var(--accent);color:var(--accent)}.upload-btn:disabled{opacity:.5;cursor:not-allowed}.upload-btn.drag-over{border-color:var(--accent);color:var(--accent);background:#5dade226;border-style:dashed}.btn-edit-exam{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #ffffff26;border-radius:.25rem;padding:.2rem .5rem;font-size:.75rem}.btn-edit-exam:hover{border-color:var(--accent);color:var(--accent)}.exam-edit-form{padding:.5rem 0 .75rem}.exam-edit-form .form-group{margin-bottom:.5rem}.btn-delete-exam{color:#e74c3c;cursor:pointer;background:0 0;border:1px solid #e74c3c4d;border-radius:.25rem;margin-left:auto;padding:.25rem .5rem;font-size:.75rem}.btn-delete-exam:hover{background:#e74c3c1a;border-color:#e74c3c}.upload-status{color:var(--text-muted);font-size:.8rem;font-style:italic}.exam-kc-badges{flex-wrap:wrap;gap:.35rem;margin:.5rem 0;display:flex}.kc-outcome-badge{white-space:nowrap;border-radius:1rem;padding:.15rem .5rem;font-size:.75rem;font-weight:500;text-decoration:none}a.kc-outcome-badge{transition:filter .1s}a.kc-outcome-badge:hover{filter:brightness(1.3)}.kc-outcome-badge.outcome-success{color:#2ecc71;background:#2ecc7133}.kc-outcome-badge.outcome-hesitant{color:#f39c12;background:#f39c1233}.kc-outcome-badge.outcome-failure{color:#e74c3c;background:#e74c3c33}.kc-outcome-badge{position:relative}.kc-outcome-badge:after{content:attr(data-tooltip);background:var(--bg);color:var(--text);white-space:nowrap;pointer-events:none;opacity:0;z-index:10;border:1px solid #ffffff26;border-radius:.375rem;margin-bottom:.25rem;padding:.3rem .6rem;font-size:.75rem;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.kc-outcome-badge:hover:after{opacity:1}.exam-bilan{color:var(--text);background:#ffffff08;border-radius:.5rem;margin:.75rem 0;padding:.75rem;font-size:.9rem;line-height:1.5}.exam-bilan h2{margin:0 0 .5rem;font-size:1.1rem}.exam-bilan h3{color:var(--text-muted);margin:.75rem 0 .35rem;font-size:.95rem}.exam-bilan p{margin:.35rem 0}.exam-bilan ul{margin:.35rem 0;padding-left:1.25rem}.exam-bilan li{margin:.2rem 0}.exam-bilan strong{color:var(--text)}.detail-section-title{color:var(--text-muted);margin:0 0 .5rem;font-size:.9rem;font-weight:500}.exam-teacher-comments{color:var(--text-muted);flex-wrap:wrap;align-items:baseline;gap:.35rem;margin:.35rem 0;font-size:.85rem;display:flex}.teacher-label{font-weight:500}.teacher-quote{color:var(--text);min-width:0;font-style:italic}.exam-analysis-summary{color:var(--text-muted);margin:.25rem 0 0;font-size:.85rem}.exam-doc-wrapper{margin-bottom:.25rem}.exam-doc.expandable{cursor:pointer}.exam-doc.expandable:hover{background:#ffffff08;border-radius:.25rem}.doc-chevron{width:1rem;color:var(--text-muted);font-size:.7rem}.doc-name{color:var(--accent);text-decoration:none}.doc-name:hover{text-decoration:underline}.btn-detail-toggle{color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #ffffff26;border-radius:.25rem;margin-left:auto;padding:.25rem .6rem;font-size:.8rem}.btn-detail-toggle:hover{border-color:var(--accent);background:#ffffff08}.btn-analyze{margin-left:auto;font-size:.75rem}.exam-doc-analysis{border-left:2px solid #ffffff14;margin:.25rem 0 .5rem;padding:.75rem 0 .75rem 1.5rem}.copy-score-header{align-items:baseline;gap:.25rem;margin-bottom:.75rem;display:flex}.copy-score-value{font-size:1.5rem;font-weight:700}.copy-score-max{color:var(--text-muted);font-size:1rem}.copy-score-header.score-good .copy-score-value{color:#2ecc71}.copy-score-header.score-ok .copy-score-value{color:#f39c12}.copy-score-header.score-bad .copy-score-value{color:#e74c3c}.copy-score-discrepancy{color:#f39c12;background:#f39c1226;border-radius:.375rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.85rem}.copy-answer-cards{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.copy-answer-card{background:#ffffff08;border-left:3px solid #ffffff1a;border-radius:.5rem;padding:.75rem}.copy-answer-card.outcome-success{border-left-color:#2ecc71}.copy-answer-card.outcome-hesitant{border-left-color:#f39c12}.copy-answer-card.outcome-failure{border-left-color:#e74c3c}.answer-card-header{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.answer-question-badge{font-size:.85rem;font-weight:600}.answer-score-badge{color:var(--text-muted);font-size:.85rem}.answer-outcome{border-radius:.25rem;padding:.1rem .4rem;font-size:.8rem}.answer-outcome.outcome-success{color:#2ecc71}.answer-outcome.outcome-hesitant{color:#f39c12}.answer-outcome.outcome-failure{color:#e74c3c}.answer-kc-tags{flex-wrap:wrap;gap:.25rem;margin-left:auto;display:flex}.answer-kc-tag{color:#5dade2;background:#5dade233;border-radius:.25rem;padding:.1rem .35rem;font-family:monospace;font-size:.7rem;text-decoration:none;position:relative}a.answer-kc-tag:hover{background:#5dade259}.answer-kc-tag:after{content:attr(data-tooltip);background:var(--bg);color:var(--text);white-space:nowrap;pointer-events:none;opacity:0;z-index:10;border:1px solid #ffffff26;border-radius:.375rem;margin-bottom:.25rem;padding:.3rem .6rem;font-family:inherit;font-size:.75rem;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.answer-kc-tag:hover:after{opacity:1}.answer-error-box{background:#e74c3c1a;border-radius:.375rem;flex-wrap:wrap;align-items:baseline;gap:.25rem;margin-top:.5rem;padding:.5rem .75rem;font-size:.85rem;line-height:1.4;display:flex}.answer-error-box .error-detail{flex:10rem;min-width:0}.error-label{color:#e74c3c}.error-detail{color:var(--text-muted)}.answer-student-text{color:var(--text-muted);margin-top:.35rem;font-size:.8rem;font-style:italic}.copy-teacher-comments{background:#ffffff08;border-radius:.5rem;margin:.75rem 0;padding:.75rem}.copy-teacher-comments h4{color:var(--text-muted);margin:0 0 .5rem;font-size:.85rem}.copy-teacher-comments ul{margin:0;padding:0;list-style:none}.copy-teacher-comments li{color:var(--text);border-left:2px solid #ffffff1a;padding:.2rem 0 .2rem .5rem;font-size:.85rem;font-style:italic}.copy-summary{background:#ffffff08;border-radius:.5rem;margin-top:.75rem;padding:.75rem;font-size:.9rem;line-height:1.5}.copy-summary h2{margin:0 0 .5rem;font-size:1.1rem}.copy-summary h3{color:var(--text-muted);margin:.75rem 0 .35rem;font-size:.95rem}.copy-summary p{margin:.35rem 0}.copy-summary ul{margin:.35rem 0;padding-left:1.25rem}.copy-summary li{margin:.2rem 0}.copy-summary strong{color:var(--text)}.analysis-subject{margin-top:.25rem}.analysis-total{margin-bottom:.5rem;font-weight:600}.analysis-themes{color:var(--text-muted);margin-bottom:.5rem;font-size:.85rem}.analysis-question-cards{flex-direction:column;gap:.5rem;display:flex}.analysis-question-card{background:#ffffff08;border-radius:.5rem;padding:.75rem}.question-card-header{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.question-number-badge{background:#ffffff14;border-radius:.25rem;padding:.1rem .4rem;font-size:.85rem;font-weight:600}.question-points{color:var(--text-muted);font-size:.85rem}.question-difficulty{letter-spacing:.1rem;color:#f39c12;font-size:.75rem}.question-text{color:var(--text-muted);margin:.35rem 0 .25rem;font-size:.85rem}.question-kc-tags{flex-wrap:wrap;gap:.25rem;display:flex}.question-kc-tag{color:#5dade2;background:#5dade233;border-radius:.25rem;padding:.1rem .35rem;font-family:monospace;font-size:.7rem}.tag.tag-kc{color:#5dade2;background:#5dade233;border-radius:.25rem;padding:.1rem .35rem;font-family:monospace;font-size:.7rem;text-decoration:none}a.tag.tag-kc:hover{background:#5dade259}.analysis-summary{background:#ffffff08;border-radius:.5rem;margin-top:.75rem;padding:.75rem}.analysis-summary h2{margin:0 0 .5rem;font-size:1.1rem}.analysis-summary p{margin:.35rem 0;font-size:.9rem}.analysis-theme-tags{flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem;display:flex}.analysis-theme-tag{color:var(--text-muted);background:#ffffff14;border-radius:1rem;padding:.15rem .5rem;font-size:.75rem}.form-hint{color:var(--text-muted);margin:.5rem 0 0;font-size:.8rem;font-style:italic}.form-toggle{color:var(--text-muted);cursor:pointer;background:0 0;border:none;margin-bottom:.5rem;padding:.25rem 0;font-size:.85rem}.form-toggle:hover{color:var(--text)}.btn-link{cursor:pointer;background:0 0;border:none}.visual-widget{margin:1rem 0}.visual-widget .jsxgraph-container{--tatami-fig-label:#1a1a1a;--tatami-fig-struct:#37474f;--tatami-fig-grid:#2684a538;--tatami-fig-axis:#000000bf;--tatami-fig-axis-tick:#0000008c;--tatami-fig-axis-label:#000c;background:#fff;border:1px solid #0000001a;border-radius:.5rem;overflow:hidden;box-shadow:0 1px 4px #00000059}.visual-caption{color:var(--text-muted);text-align:center;margin-top:.35rem;font-size:.75rem}.visual-fallback-expr{color:var(--text-muted);padding:.5rem;font-family:monospace;font-size:.85rem}.visual-fallback-text{color:var(--text-muted);padding:.5rem;font-size:.85rem}.visual-error{background:#f39c121a;border:1px solid #f39c124d;border-radius:.5rem;margin:.75rem 0;padding:.75rem}.visual-error-title{color:#f39c12;margin:0;font-size:.85rem;font-weight:600}.visual-error-detail{color:var(--text-muted);margin:.25rem 0 0;font-size:.85rem}.visual-error-raw summary{color:#f39c12;cursor:pointer;margin-top:.5rem;font-size:.8rem}.visual-error-raw pre{color:var(--text-muted);margin-top:.25rem;font-size:.75rem;overflow-x:auto}.visual-error-actions{margin:.5rem 0 0;font-size:.8rem}.visual-error-report{color:#f39c12;text-underline-offset:.15em;text-decoration:underline}.visual-error-report:after{content:" ↗";font-size:.7em}.visual-error-report:hover,.visual-error-report:focus{color:#ffb046}.mcq-widget{background:#ffffff08;border:1px solid #ffffff1a;border-radius:.5rem;margin:1rem 0;padding:.85rem 1rem}.mcq-questions{margin:0;padding:0;list-style:inside decimal}.mcq-question+.mcq-question{border-top:1px dashed #ffffff14;margin-top:1rem;padding-top:.85rem}.mcq-prompt{margin-bottom:.55rem;font-weight:500}.mcq-choices{flex-direction:column;gap:.4rem;margin-top:.25rem;display:flex}.mcq-choice{cursor:pointer;border:1px solid #ffffff1a;border-radius:.4rem;align-items:center;gap:.55rem;padding:.45rem .7rem;transition:background .12s,border-color .12s;display:flex}.mcq-choice:hover{background:#ffffff0a}.mcq-choice input[type=radio],.mcq-choice input[type=checkbox]{accent-color:#4a90d9;flex-shrink:0;margin:0}.mcq-choice-label{flex:1}.mcq-choice-selected{background:#4a90d91f;border-color:#4a90d9}.mcq-choice-locked{cursor:default}.mcq-choice-locked:hover{background:0 0}.mcq-choice-locked.mcq-choice-selected{background:#4a90d926}.mcq-choice-dimmed{opacity:.55}.mcq-choice-correct{background:#2ecc7124;border-color:#2ecc71}.mcq-choice-correct.mcq-choice-locked:hover{background:#2ecc7124}.mcq-choice-wrong{background:#e74c3c24;border-color:#e74c3c}.mcq-choice-wrong.mcq-choice-locked:hover{background:#e74c3c24}.mcq-choice-missed{opacity:.85;background:0 0;border-style:dashed;border-color:#2ecc71}.mcq-choice-missed.mcq-choice-locked:hover{background:0 0}.mcq-choice-mark{flex-shrink:0;margin-left:auto;font-size:1rem;font-weight:700;line-height:1}.mcq-choice-mark.mark-correct{color:#2ecc71}.mcq-choice-mark.mark-wrong{color:#e74c3c}.mcq-choice-mark.mark-missed{color:#2ecc71;opacity:.65}.mcq-actions{text-align:right;margin:.85rem 0 0}.mcq-status{color:var(--text-muted);text-align:right;margin:.6rem 0 0;font-size:.8rem;font-style:italic}.mcq-status-warning{color:#f39c12;text-align:left;background:#f39c121a;border:1px solid #f39c1259;border-radius:.4rem;padding:.5rem .7rem;font-style:normal}.tableau-widget{margin:1rem 0}.tableau-scroll{background:#ffffff08;border:1px solid #ffffff1a;border-radius:.5rem;overflow-x:auto}.tableau-table{border-collapse:collapse;width:max-content;min-width:100%;margin:0 auto}.tableau-row-label{text-align:left;color:var(--text);white-space:nowrap;border-right:2px solid #ffffff2e;padding:.4rem .85rem;font-weight:500}.tableau-cell{text-align:center;vertical-align:middle;color:var(--text);min-width:2.4rem;padding:.35rem .5rem}math-field.tableau-cell-input::part(virtual-keyboard-toggle),math-field.tableau-cell-input::part(menu-toggle){display:none}.tableau-bound-cell{font-size:.95rem}.tableau-spacer-cell,.tableau-empty-cell{min-width:1.6rem}.tableau-sign-cell .tableau-sign{font-size:1.15rem;font-weight:600;line-height:1;display:inline-block}.tableau-variation-row .tableau-cell{min-height:2.6rem}.tableau-variation-arrow .tableau-arrow{color:var(--text);font-size:1.5rem;line-height:1;display:inline-block}.tableau-variable-row .tableau-cell,.tableau-variable-row .tableau-row-label{background:#ffffff05;border-bottom:3px double #ffffff40}.tableau-data-row+.tableau-data-row .tableau-cell,.tableau-data-row+.tableau-data-row .tableau-row-label{border-top:1px dashed #ffffff0f}.curriculum-picker{flex-direction:column;align-items:center;padding:2rem 1rem;display:flex}.curriculum-picker h2{margin-bottom:.5rem}.picker-subtitle{color:var(--text-muted);text-align:center;margin-bottom:2rem}.curriculum-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem;width:100%;max-width:56rem;display:grid}.curriculum-card{background:var(--bg-surface);border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;gap:.75rem;padding:1.5rem;transition:border-color .2s;display:flex}.curriculum-card:hover{border-color:#ffffff40}.curriculum-card h3{margin:0;font-size:1.05rem}.curriculum-card p{color:var(--text-muted);flex:1;font-size:.85rem;line-height:1.5}.all-enrolled{color:var(--text-muted);margin-bottom:1.5rem}.curriculum-card .btn-primary{cursor:pointer;border:none;border-radius:.5rem;align-self:flex-start;padding:.6rem 1.25rem;font-size:.9rem;font-weight:600;transition:background .2s}.footer{text-align:center;border-top:1px solid #ffffff0f;padding:1.5rem 2rem;font-size:.8rem}.footer a{color:var(--text-muted);text-decoration:none}.footer a:hover{color:var(--accent)}.mentions-legales{max-width:48rem;margin:0 auto;padding:2rem 1rem;line-height:1.7}.mentions-legales h2,.mentions-legales section{margin-bottom:2rem}.mentions-legales h3{color:var(--accent);margin-bottom:.75rem}.mentions-legales p,.mentions-legales li{color:var(--text-muted);margin-bottom:.5rem}.mentions-legales ul{margin-bottom:.75rem;padding-left:1.5rem}.mentions-legales a{color:var(--accent)}.mentions-legales a:hover{color:var(--accent-hover)}.legal-table{border-collapse:collapse;width:100%;margin:.75rem 0;font-size:.9rem}.legal-table th,.legal-table td{text-align:left;border-bottom:1px solid #ffffff14;padding:.5rem .75rem}.legal-table th{color:var(--text);font-weight:600}.legal-table td{color:var(--text-muted)}.legal-updated{color:var(--text-muted);margin-top:2rem;font-size:.8rem;font-style:italic}.parent-dashboard{max-width:56rem;margin:0 auto;padding:2rem 1rem}.parent-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.parent-header h2{margin:0}.parent-empty{text-align:center;color:var(--text-muted);background:var(--bg-surface);border:1px solid #ffffff14;border-radius:8px;padding:3rem 2rem}.children-grid{gap:1.25rem;display:grid}.child-dashboard-card{background:var(--bg-surface);border:1px solid #ffffff14;border-radius:10px;padding:1.5rem}.child-dashboard-card .child-card-header{justify-content:space-between;align-items:baseline;margin-bottom:1.25rem;display:flex}.child-dashboard-card .child-card-header h3{margin:0;font-size:1.15rem}.child-curriculum-tag{color:var(--text-muted);background:#ffffff0d;border-radius:4px;padding:.2rem .6rem;font-size:.8rem}.child-stats-grid{grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem;display:grid}.child-stat{background:#ffffff08;border-radius:6px;flex-direction:column;align-items:center;padding:.75rem;display:flex}.child-stat-value{color:var(--accent);font-size:1.5rem;font-weight:700}.child-stat-label{color:var(--text-muted);margin-top:.2rem;font-size:.75rem}.child-alerts{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.child-alert{border-radius:6px;padding:.5rem .75rem;font-size:.82rem;line-height:1.4}.child-alert-info{color:#93bbfd;background:#3b82f614;border:1px solid #3b82f633}.child-alert-warning{color:#fbbf24;background:#eab30814;border:1px solid #eab30833}.child-alert-gentle{color:#c4b5fd;background:#a855f714;border:1px solid #a855f733}.child-next-exam{background:#e9456014;border:1px solid #e9456033;border-radius:6px;align-items:center;gap:.5rem;margin-bottom:.75rem;padding:.6rem .75rem;font-size:.85rem;display:flex}.exam-icon{font-size:1rem}.child-last-active{color:var(--text-muted);font-size:.8rem}.adult-seat-panel{margin-bottom:2rem}.adult-seat-panel-empty{display:none}.adult-seat-panel-heading{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .75rem;font-size:1rem;font-weight:600}.adult-seat-card{border-left:3px solid var(--accent)}.adult-seat-badge{background:var(--accent);color:var(--bg);letter-spacing:.03em;vertical-align:middle;border-radius:4px;margin-left:.5rem;padding:.1rem .5rem;font-size:.7rem;font-weight:600;display:inline-block}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.add-child-page{max-width:36rem;margin:0 auto;padding:2rem 1rem}.add-child-page h2{margin:1rem 0 1.5rem}.back-link{color:var(--text-muted);font-size:.85rem;text-decoration:none}.back-link:hover{color:var(--accent)}.add-child-section{background:var(--bg-surface);border:1px solid #ffffff14;border-radius:8px;padding:1.5rem}.add-child-form{flex-direction:column;gap:1rem;display:flex}.seat-mode-selector{background:#ffffff08;border:1px solid #ffffff1a;border-radius:8px;gap:.5rem;margin:0 0 1.25rem;padding:.25rem;display:flex}.seat-mode-option{cursor:pointer;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.5rem .75rem;font-size:.9rem;transition:background .15s;display:flex}.seat-mode-option:hover{background:#ffffff0a}.seat-mode-option input[type=radio]{accent-color:var(--accent)}.adult-seat-intro{color:var(--text-muted);background:#ffffff08;border:1px solid #ffffff14;border-radius:6px;margin:0 0 1rem;padding:.75rem 1rem;font-size:.88rem;line-height:1.5}.form-row{flex-direction:column;gap:.25rem;display:flex}.form-row label{color:var(--text-muted);font-size:.85rem}.form-row input,.form-row select{background:var(--bg);color:var(--text);border:1px solid #ffffff26;border-radius:6px;padding:.6rem .75rem;font-size:.95rem}.form-row input:focus,.form-row select:focus{border-color:var(--accent);outline:none}.consent-section{background:#ffffff08;border:1px solid #ffffff1a;border-radius:8px;margin-top:.5rem;padding:1rem}.consent-section h3{color:var(--text);margin:0 0 .75rem;font-size:1rem}.consent-info{color:var(--text-muted);font-size:.85rem;line-height:1.5}.consent-info ul{margin:.5rem 0;padding-left:1.25rem}.consent-info li{margin-bottom:.25rem}.consent-info a{color:var(--accent)}.consent-checkbox{border-top:1px solid #ffffff14;margin-top:.75rem;padding-top:.75rem}.checkbox-label{color:var(--text);cursor:pointer;align-items:flex-start;gap:.5rem;font-size:.85rem;line-height:1.4;display:flex}.checkbox-label input[type=checkbox]{flex-shrink:0;margin-top:.2rem}.checkbox-label a{color:var(--accent)}.success-msg{color:var(--success);background:#2ecc711a;border:1px solid #2ecc714d;border-radius:6px;margin-top:.75rem;padding:.75rem;font-size:.9rem}.success-msg a{color:var(--success);margin-top:.5rem;display:inline-block}.child-detail-link{color:var(--accent);border-top:1px solid #ffffff0f;margin-top:.75rem;padding-top:.75rem;font-size:.85rem;text-decoration:none;display:block}.child-detail-link:hover{text-decoration:underline}.child-detail-page{max-width:56rem;margin:0 auto;padding:2rem 1rem}.child-detail-page .back-link{color:var(--text-muted);font-size:.85rem;text-decoration:none}.child-detail-page .back-link:hover{color:var(--accent)}.child-detail-header{justify-content:space-between;align-items:baseline;margin:1rem 0 2rem;display:flex}.child-detail-header h2{margin:0}.child-detail-curriculum-select{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff26;border-radius:6px;padding:.4rem .6rem;font-size:.85rem}.child-detail-section{margin-bottom:2rem}.child-detail-section h3{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem;font-size:1rem}.child-detail-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.child-kc-block{margin-bottom:1.25rem}.child-kc-block-title{margin-bottom:.5rem;font-size:.85rem;font-weight:600}.child-kc-dots{flex-wrap:wrap;gap:.4rem;display:flex}.child-kc-dot{cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:.65rem;font-weight:600;text-decoration:none;display:flex;position:relative}.child-kc-dot[title]:hover:after{content:attr(title);background:var(--bg);white-space:nowrap;z-index:10;border:1px solid #ffffff26;border-radius:4px;margin-bottom:4px;padding:.3rem .5rem;font-size:.7rem;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.child-kc-dot.level-unseen{color:var(--text-muted);background:#ffffff0d}.child-kc-dot.level-novice{color:var(--text);background:#ffffff1f}.child-kc-dot.level-apprentice{color:#60a5fa;background:#3b82f633}.child-kc-dot.level-confirmed{color:#a78bfa;background:#8b5cf633}.child-kc-dot.level-expert{color:#c084fc;background:#a855f740}.child-kc-dot.level-master{color:#fbbf24;background:#eab30833}.child-sessions-table{border-collapse:collapse;width:100%;font-size:.85rem}.child-sessions-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid #ffffff1a;padding:.5rem .75rem;font-weight:500}.child-sessions-table td{border-bottom:1px solid #ffffff0d;padding:.5rem .75rem}.child-exam-card{background:var(--bg-surface);border:1px solid #ffffff14;border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:.75rem 1rem;display:flex}.child-exam-info{flex-direction:column;gap:.15rem;display:flex}.child-exam-subject{font-weight:500}.child-exam-date{color:var(--text-muted);font-size:.8rem}.child-exam-score{color:var(--accent);font-size:1.1rem;font-weight:700}.score-trend{margin-bottom:1.5rem}.score-trend h4{color:var(--text-muted);margin-bottom:.75rem;font-size:.9rem}.score-trend-chart{background:var(--bg-surface);border:1px solid #ffffff14;border-radius:8px;align-items:flex-end;gap:.75rem;height:160px;padding:.5rem;display:flex}.score-bar-container{flex-direction:column;flex:1;align-items:center;min-width:2.5rem;max-width:4rem;height:100%;display:flex}.score-bar-label{color:var(--text);white-space:nowrap;margin-bottom:.25rem;font-size:.7rem;font-weight:600}.score-bar-track{background:#ffffff08;border-radius:4px;flex:1;align-items:flex-end;width:100%;display:flex;overflow:hidden}.score-bar-fill{border-radius:4px 4px 0 0;width:100%;min-height:4px;transition:height .3s}.score-bar-date{color:var(--text-muted);white-space:nowrap;margin-top:.25rem;font-size:.65rem}.child-no-data{color:var(--text-muted);padding:1rem 0;font-size:.85rem;font-style:italic}:is(.main:has(.banque-page),.main:has(.home-page)){max-width:100%;padding:0}.banque-page{width:100%}.banque-layout{grid-template-columns:240px 1fr;align-items:start;gap:1.25rem;display:grid}.banque-sidebar{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex-direction:column;gap:.5rem;max-height:calc(100vh - 6rem);padding:.75rem;display:flex;position:sticky;top:1rem;overflow-y:auto}.banque-sidebar-header{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border);padding-bottom:.25rem;font-size:.8rem;font-weight:700}.banque-facet-group{margin-bottom:.25rem}.banque-facet-title{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);margin-bottom:.25rem;font-size:.7rem;font-weight:700}.banque-facet-list{margin:0;padding:0;list-style:none}.banque-facet-item{cursor:pointer;color:var(--text);border-radius:4px;justify-content:space-between;align-items:center;padding:.2rem .4rem;font-size:.8rem;transition:background .1s;display:flex}.banque-facet-item:hover{background:#ffffff0d}.banque-facet-item.active{color:var(--accent);background:#e945601f;font-weight:600}.banque-facet-count{color:var(--text-muted);text-align:right;min-width:1.5rem;font-size:.7rem}.banque-facet-item.active .banque-facet-count{color:var(--accent)}.banque-main{min-width:0}.banque-search-bar{gap:.5rem;margin-bottom:1rem;display:flex}.banque-search-bar input{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;flex:1;padding:.6rem .8rem;font-size:.95rem}.banque-search-bar input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #e9456026}.banque-count{color:var(--text-muted);margin-bottom:.75rem;font-size:.85rem}.banque-empty,.banque-error{color:var(--text-muted);text-align:center;padding:2rem}.banque-error{color:var(--danger)}.banque-cards{flex-direction:column;gap:.5rem;display:flex}.banque-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;display:flex}.banque-page-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:.4rem .9rem;font-size:.9rem;transition:border-color .15s,opacity .15s}.banque-page-btn:hover:not(:disabled){border-color:var(--accent)}.banque-page-btn:disabled{opacity:.4;cursor:default}.banque-page-status{color:var(--text-muted);font-size:.85rem}.banque-card{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:.75rem 1rem;transition:border-color .15s}.banque-card:hover{border-color:var(--accent)}.banque-card-header{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.banque-card-id{color:var(--text-muted);font-family:monospace;font-size:.8rem}.banque-card-source{color:var(--text-muted);margin-left:auto;font-size:.75rem}.banque-badge{text-transform:uppercase;letter-spacing:.02em;border-radius:4px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;display:inline-block}.banque-badge-d1{color:#000;background:#2ecc71}.banque-badge-d2{color:#fff;background:#3498db}.banque-badge-d3{color:#000;background:#f39c12}.banque-badge-d4{color:#fff;background:#e74c3c}.banque-badge-d5{color:#fff;background:#8e44ad}.banque-badge-level{color:var(--text-muted);border:1px solid var(--border);background:#ffffff14}.banque-badge-generated{background:var(--accent);color:var(--bg);border:1px solid var(--accent);font-weight:600}.banque-card-preview{color:var(--text);-webkit-line-clamp:4;-webkit-box-orient:vertical;margin-bottom:.4rem;font-size:.85rem;line-height:1.5;display:-webkit-box;overflow:hidden}.banque-card-tags{flex-wrap:wrap;gap:.3rem;display:flex}.banque-tag{border-radius:3px;padding:.1rem .4rem;font-size:.7rem;display:inline-block}.banque-tag-kc{color:#3498db;background:#3498db26;font-family:monospace}.banque-tag-comp{font-weight:600}.banque-comp-chercher{color:#9b59b6;background:#9b59b626}.banque-comp-modeliser{color:#e67e22;background:#e67e2226}.banque-comp-representer{color:#2ecc71;background:#2ecc7126}.banque-comp-raisonner{color:#3498db;background:#3498db26}.banque-comp-calculer{color:#e74c3c;background:#e74c3c26}.banque-comp-communiquer{color:#f1c40f;background:#f1c40f26}.banque-card-expanded{border-color:var(--accent)}.banque-card-expand-icon{color:var(--text-muted);margin-left:.25rem;font-size:.65rem}.banque-card-detail{border-top:1px solid var(--border);color:var(--text);margin-top:.75rem;padding-top:.75rem;font-size:.85rem}.banque-statement{margin-bottom:.75rem}.banque-statement-label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);margin-bottom:.4rem;font-size:.75rem;font-weight:700}.banque-statement-content{background:var(--bg);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;border-radius:6px;margin:0;padding:.75rem 1rem;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.82rem;line-height:1.6;overflow-x:auto}.banque-detail-section{color:var(--text-muted);margin-bottom:.3rem;font-size:.8rem}.banque-figure-descriptions{margin-bottom:.75rem}.banque-figure-description{color:var(--text-muted);margin:.2rem 0;font-size:.82rem;line-height:1.5}.banque-loading{color:var(--text-muted);padding:1rem 0}@media (width<=700px){.banque-layout{grid-template-columns:1fr}.banque-sidebar{max-height:none;position:static}.banque-search-bar{flex-direction:column}.banque-card-source{margin-left:0}}.compte-page{max-width:700px;margin:0 auto;padding:2rem 1rem}.compte-page h2{margin-bottom:1.5rem}.compte-info{background:var(--bg-card);border-radius:.75rem;margin-bottom:2rem;padding:1.25rem}.compte-info p{margin-bottom:.4rem}.compte-section{background:var(--bg-surface);border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem}.compte-section h3{margin-bottom:.75rem}.compte-section p{color:var(--text-muted);margin-bottom:1rem}.droits-list{color:var(--text-muted);margin:.75rem 0;padding-left:1.5rem;font-size:.9rem;line-height:1.8}.connecter-appareil-page{text-align:center;max-width:480px;margin:0 auto;padding:2rem 1rem}.connecter-appareil-page h2{margin-bottom:1rem}.connecter-appareil-help{color:var(--text-muted);text-align:left;margin-bottom:1.5rem}.connecter-appareil-loading{color:var(--text-muted);padding:4rem 0}.connecter-appareil-qr-wrapper{background:#fff;border-radius:.75rem;margin-bottom:.75rem;padding:1rem;display:inline-block}.connecter-appareil-qr{display:block}.connecter-appareil-expiry{color:var(--text-muted);margin-bottom:1.5rem;font-size:.875rem}.connecter-appareil-warning{color:var(--text-muted);text-align:left;background:#e74c3c14;border:1px solid #e74c3c40;border-radius:.5rem;margin-top:1.5rem;padding:.75rem 1rem;font-size:.85rem}.invite-parent-page{max-width:500px;margin:0 auto;padding:1rem}.invite-parent-description{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9rem}.invite-parent-empty{color:var(--text-muted)}.invite-parent-form{flex-direction:column;gap:1.25rem;display:flex}.invite-children-fieldset{border:1px solid var(--border);border-radius:8px;padding:1rem}.invite-children-fieldset legend{color:var(--text-muted);padding:0 .5rem;font-size:.9rem}.invite-child-label{cursor:pointer;align-items:center;gap:.5rem;padding:.4rem 0;font-size:.95rem;display:flex}.invite-select-all{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-top:.5rem;padding:0;font-size:.85rem;text-decoration:underline}.invite-email-row{flex-direction:column;gap:.4rem;display:flex}.invite-email-row label{color:var(--text-muted);font-size:.9rem}.invite-email-row input{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;padding:.5rem .75rem;font-size:.95rem}.invite-submit-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;align-self:flex-start;padding:.6rem 1.2rem;font-size:.95rem;font-weight:600}.invite-submit-btn:disabled{opacity:.6;cursor:not-allowed}.invite-success{color:var(--success);font-size:.9rem}.invite-error{color:var(--warning);font-size:.9rem}.accept-invitation-page{text-align:center;max-width:500px;margin:0 auto;padding:1rem}.invitation-details{margin:2rem 0}.invitation-children{margin:1rem 0 1.5rem;font-size:1.1rem}.invitation-accepted{margin:2rem 0}.invitation-go-link{color:var(--accent);margin-top:1rem;font-weight:600;text-decoration:none;display:inline-block}.invitation-go-link:hover{text-decoration:underline}.invitation-auth-links{flex-direction:column;align-items:center;gap:1rem;margin-top:1.5rem;display:flex}.invitation-login-link{color:var(--accent);font-size:.9rem}.tarifs-page{text-align:center;max-width:700px;margin:0 auto;padding:1rem}.tarifs-subtitle{color:var(--text-muted);margin-bottom:2rem}.tarifs-error{color:var(--warning);margin-bottom:1rem}.tarifs-grid{grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2rem;display:grid}@media (width<=600px){.tarifs-grid{grid-template-columns:1fr}}.tarif-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;padding:1.5rem;display:flex;position:relative}.tarif-featured{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tarif-badge{background:var(--accent);color:#fff;border-radius:12px;padding:.2rem .75rem;font-size:.8rem;font-weight:600;position:absolute;top:-.75rem}.tarif-name{margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.tarif-price{margin-bottom:1rem}.tarif-amount{color:var(--accent);font-size:2.5rem;font-weight:700}.tarif-currency{color:var(--text-muted);font-size:1rem}.tarif-features{text-align:left;width:100%;margin:0 0 1.5rem;padding:0;list-style:none}.tarif-features li{color:var(--text-muted);padding:.3rem 0;font-size:.9rem}.tarif-features li:before{content:"✓";color:var(--success);margin-right:.5rem}.tarif-btn{border:1px solid var(--accent);width:100%;color:var(--accent);cursor:pointer;background:0 0;border-radius:6px;margin-top:auto;padding:.6rem;font-size:.95rem;font-weight:600}.tarif-btn:hover{background:var(--accent);color:#fff}.tarif-btn:disabled{opacity:.6;cursor:not-allowed}.tarif-btn-featured{background:var(--accent);color:#fff}.tarifs-footer{color:var(--text-muted);font-size:.85rem}.subscription-info{margin-bottom:1rem}.compte-no-sub{color:var(--text-muted);margin-bottom:1rem}.btn-secondary{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:.5rem 1rem;font-size:.9rem}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}.cours-page{max-width:800px;margin:0 auto;padding:2rem 1rem}.cours-breadcrumb{color:var(--text-muted);margin-bottom:1.5rem;font-size:.85rem}.cours-breadcrumb a{color:var(--accent);text-decoration:none}.cours-breadcrumb a:hover{text-decoration:underline}.cours-breadcrumb-current{color:var(--text)}.cours-title{margin-bottom:1rem;font-size:1.8rem;line-height:1.3}.cours-meta{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.cours-chip{background:var(--bg-card);color:var(--text-muted);border:1px solid #ffffff14;border-radius:999px;padding:.25rem .75rem;font-size:.8rem;display:inline-block}.cours-chip-block{color:#5dade2;background:#2471a333;border-color:#2471a34d}.cours-chip-criticality{color:var(--accent);background:#e9456026;border-color:#e9456040}.cours-chip-curriculum{color:var(--success);background:#2ecc711f;border-color:#2ecc7133}.cours-content{margin-bottom:2rem;font-size:.95rem;line-height:1.8}.cours-content h2{color:var(--accent);margin-top:1.5rem;margin-bottom:.5rem;font-size:1.15rem}.cours-content ol,.cours-content ul{margin:.5rem 0;padding-left:1.5rem}.cours-content li{margin-bottom:.3rem}.cours-section{margin-bottom:2rem}.cours-section h2{color:var(--text);margin-bottom:.75rem;font-size:1.2rem}.cours-links{flex-wrap:wrap;gap:.5rem;display:flex}.cours-link-chip{background:var(--bg-surface);color:var(--accent);border:1px solid #e9456033;border-radius:6px;padding:.4rem .9rem;font-size:.9rem;text-decoration:none;transition:border-color .15s,background .15s;display:inline-block}.cours-link-chip:hover{background:var(--bg-card);border-color:var(--accent)}.cours-exercises{flex-direction:column;gap:1rem;display:flex}.cours-exercise-card{background:var(--bg-surface);border:1px solid #ffffff0f;border-radius:8px;padding:1rem}.cours-exercise-statement{margin:.5rem 0 .75rem;font-size:.95rem;line-height:1.55}.cours-exercise-attribution{color:var(--text-muted);border-top:1px solid #ffffff14;margin-top:.75rem;padding-top:.6rem;font-size:.8rem}.cours-exercise-attribution a{color:var(--text-muted);text-underline-offset:2px;-webkit-text-decoration:underline #ffffff40;text-decoration:underline #ffffff40}.cours-exercise-attribution a:hover{color:var(--text)}.cours-exercise-text{color:var(--text);white-space:pre-wrap;margin:0 0 .75rem;font-size:.9rem;line-height:1.6}.cours-exercise-text.collapsed{max-height:4.8em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 60%,#0000 100%);mask-image:linear-gradient(#000 60%,#0000 100%)}.cours-expand-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-bottom:.75rem;padding:0;font-size:.85rem}.cours-expand-btn:hover{text-decoration:underline}.cours-exercise-meta{align-items:center;gap:.5rem;display:flex}.cours-chip-source{color:var(--text-muted);font-size:.7rem;font-style:italic}.cours-block-description{color:var(--text-muted);margin-bottom:1rem;font-size:.9rem;font-style:italic;line-height:1.6}.cours-cta{background:var(--bg-surface);text-align:center;border:1px solid #e9456033;border-radius:12px;margin-top:3rem;padding:2rem}.cours-cta p{margin-bottom:1rem;font-size:1.05rem}.cours-cta-btn{background:var(--accent);color:#fff;border-radius:8px;padding:.7rem 2rem;font-weight:600;text-decoration:none;transition:background .15s;display:inline-block}.cours-cta-btn:hover{background:var(--accent-hover)}.landing-lead{margin-bottom:2rem;font-size:1.1rem;line-height:1.6}.landing-section{margin-bottom:2.5rem}.landing-section h2,.landing-faq h2{margin-bottom:.75rem;font-size:1.35rem}.landing-section h3{margin:1.5rem 0 .5rem;font-size:1.1rem}.landing-section p,.landing-section li{line-height:1.6}.landing-section ul{padding-left:1.25rem}.landing-section li{margin-bottom:.5rem}.landing-note{color:var(--text-muted);font-size:.85rem}.landing-dialogue{background:var(--bg-surface);border-radius:12px;grid-template-columns:max-content 1fr;gap:.5rem 1rem;padding:1rem 1.25rem;display:grid}.landing-dialogue dt{color:var(--accent);font-weight:600}.landing-dialogue dd{margin:0}.landing-levels,.landing-lessons{flex-wrap:wrap;gap:.5rem;list-style:none;display:flex;padding-left:0!important}.landing-levels a,.landing-lessons a{color:var(--accent);border:1px solid #e945604d;border-radius:8px;padding:.4rem .8rem;text-decoration:none;display:inline-block}.landing-levels a:hover,.landing-lessons a:hover{background:var(--bg-surface)}.landing-exams{margin:0 0 2.5rem;padding:0;list-style:none}.landing-exams li{margin-bottom:1.25rem}.landing-exams a{color:var(--accent);font-size:1.15rem;font-weight:600;text-decoration:none}.landing-exams p{margin:.25rem 0 0;line-height:1.6}.landing-faq{margin-bottom:2.5rem}.landing-faq-item{border-bottom:1px solid #ffffff14;padding:.75rem 0}.landing-faq-item summary{cursor:pointer;font-weight:600}.landing-faq-item p{margin:.5rem 0 0;line-height:1.6}@media (width<=600px){.landing-dialogue{grid-template-columns:1fr;gap:.15rem}.landing-dialogue dd{margin-bottom:.5rem}}.cours-index-group{margin-bottom:2.5rem}.cours-index-group h2{color:var(--text);margin-bottom:1rem;font-size:1.3rem}.cours-index-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.cours-index-card{background:var(--bg-surface);color:var(--text);border:1px solid #ffffff0f;border-radius:10px;flex-direction:column;gap:.5rem;padding:1.25rem;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.cours-index-card:hover{border-color:var(--accent);background:var(--bg-card)}.cours-index-card-name{font-size:1rem;font-weight:600}.cours-index-card-count{color:var(--text-muted);font-size:.85rem}.cours-level-block{margin-bottom:2rem}.cours-programme-title{margin:2rem 0 1rem;font-size:1.35rem}.cours-level-block h3{color:var(--text);border-bottom:1px solid #ffffff0f;margin-bottom:.75rem;padding-bottom:.4rem;font-size:1.15rem}.cours-level-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.cours-level-link{color:var(--accent);padding:.35rem 0;font-size:.95rem;text-decoration:none;display:inline-block}.cours-level-link:hover{text-decoration:underline}.bienvenue-page{justify-content:center;align-items:flex-start;min-height:60vh;padding:3rem 1rem;display:flex}.bienvenue-card{background:var(--bg-surface);text-align:center;border:1px solid #ffffff14;border-radius:12px;width:100%;max-width:520px;padding:2.5rem}.bienvenue-icon{margin-bottom:1rem;font-size:3rem}.bienvenue-card h2{margin-bottom:.5rem;font-size:1.5rem}.bienvenue-subtitle{color:var(--text-muted);margin-bottom:2rem;font-size:.95rem}.bienvenue-spinner{border:3px solid #ffffff1a;border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;margin:1.5rem auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.bienvenue-email-box{background:#ffffff0a;border:1px solid #ffffff14;border-radius:8px;margin-bottom:1.5rem;padding:1.25rem}.bienvenue-email-box p{color:var(--text-muted);margin:0;font-size:.9rem}.bienvenue-email{font-weight:600;color:var(--text)!important;margin:.5rem 0!important;font-size:1.1rem!important}.bienvenue-email-hint{margin-top:.5rem!important;font-size:.85rem!important}.bienvenue-steps{text-align:left;margin-bottom:1.5rem}.bienvenue-steps h3{color:var(--text);margin-bottom:.75rem;font-size:1rem}.bienvenue-steps ol{color:var(--text-muted);margin:0;padding-left:1.5rem;font-size:.9rem;line-height:2}.bienvenue-actions{margin-bottom:1.5rem}.bienvenue-resend-msg{color:var(--success);margin-top:.5rem;font-size:.85rem}.bienvenue-help{color:var(--text-muted);margin-bottom:.5rem;font-size:.8rem}.bienvenue-help a{color:var(--accent)}.bienvenue-login-link{color:var(--text-muted);font-size:.85rem}.bienvenue-login-link a{color:var(--accent)}.waitlist-page{text-align:left;max-width:620px}.waitlist-page h2{text-align:left;margin:.5rem 0 1rem;font-size:1.75rem}.waitlist-badge{color:#5dade2;letter-spacing:.05em;text-transform:uppercase;background:#5dade233;border-radius:999px;padding:.25rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.waitlist-intro{color:var(--text);margin-bottom:1.5rem;line-height:1.6}.waitlist-highlights{gap:.5rem;margin:0 0 2rem;padding:0;list-style:none;display:grid}.waitlist-highlights li{color:var(--text-muted);padding-left:1.5rem;line-height:1.5;position:relative}.waitlist-highlights li:before{content:"•";color:var(--accent);font-weight:700;position:absolute;left:.4rem}.waitlist-learn-more{margin:0 0 1.5rem;font-size:.95rem}.waitlist-learn-more a{color:var(--accent);font-weight:500;text-decoration:none}.waitlist-learn-more a:hover{text-decoration:underline}.waitlist-form-block{background:#ffffff08;border:1px solid #ffffff14;border-radius:12px;margin-bottom:1.5rem;padding:1.25rem 1.5rem}.waitlist-form-block h3{margin:0 0 .5rem;font-size:1.1rem}.waitlist-form-lead{color:var(--text-muted);margin:0 0 1rem;font-size:.9rem}.waitlist-form{flex-wrap:wrap;gap:.5rem;display:flex}.waitlist-form input[type=email]{background:var(--bg);color:var(--text);border:1px solid #ffffff26;border-radius:6px;flex:16rem;padding:.6rem .8rem;font-size:.95rem}.waitlist-form input[type=email]:focus{border-color:var(--accent);outline:none}.waitlist-form button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:.6rem 1.2rem;font-weight:600}.waitlist-form button[disabled]{opacity:.6;cursor:not-allowed}.waitlist-success{color:#2ecc71;background:#2ecc711a;border:1px solid #2ecc714d;border-radius:6px;margin:0;padding:.75rem 1rem}.waitlist-error{color:var(--warning);margin:.75rem 0 0;font-size:.9rem}.cheatsheet-tutorial-link{border-top:1px solid #ffffff14;margin:.5rem 0 0;padding-top:.5rem}.cheatsheet-tutorial-link a{color:var(--accent);font-size:.85rem}.cheatsheet-tutorial-link a:hover{color:var(--accent-hover)}.first-session-tip{background:#e945601f;border:1px solid #e9456059;border-radius:.5rem;flex-shrink:0;align-items:flex-start;gap:.5rem;margin-bottom:.5rem;padding:.6rem .75rem;font-size:.9rem;display:flex}.first-session-tip-text{color:var(--text);flex:1;line-height:1.5}.first-session-tip-link{color:var(--accent);white-space:nowrap;font-weight:600}.first-session-tip-link:hover{color:var(--accent-hover)}.first-session-tip-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:.1rem .25rem;font-size:.9rem;line-height:1}.first-session-tip-close:hover{color:var(--text)}.report-problem{flex-shrink:0;margin-top:.5rem}.report-problem-toggle{color:var(--text-muted);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:.2rem 0;font-size:.85rem;text-decoration:underline}.report-problem-toggle:hover,.report-problem-toggle:focus{color:var(--text)}.report-problem-panel{background:var(--surface,#ffffff08);border:1px solid #e945604d;border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.report-problem-intro{color:var(--text);margin:0;font-size:.9rem;line-height:1.5}.report-problem-text{box-sizing:border-box;resize:vertical;width:100%;font:inherit;color:var(--text);background:var(--bg,#0003);border:1px solid var(--border,#ffffff26);border-radius:.375rem;padding:.5rem}.report-problem-error{color:var(--accent,#e94560);margin:0;font-size:.85rem}.report-problem-actions{gap:.5rem;display:flex}.report-problem-thanks{color:var(--text);margin:0;font-size:.9rem}.aide-math{max-width:48rem;margin:0 auto;padding:1.5rem 1rem 3rem;line-height:1.7}.aide-math h1{margin-bottom:1rem;font-size:1.6rem}.aide-math h2{color:var(--accent);margin-bottom:.75rem;font-size:1.2rem}.aide-math h3{margin-bottom:.4rem;font-size:1rem}.aide-math section{margin-top:2rem}.aide-math-intro{color:var(--text-muted)}.aide-math p{margin-bottom:.75rem}.aide-math code{background:var(--bg-surface);color:var(--accent);overflow-wrap:anywhere;border-radius:.25rem;padding:.1rem .35rem;font-family:monospace;font-size:.9em}.aide-mode-btn{background:var(--bg-card);color:var(--text);white-space:nowrap;border:1px solid #ffffff26;border-radius:.35rem;padding:.05rem .4rem;font-size:.85em;display:inline-block}.aide-mode-card,.aide-try-card{background:var(--bg-surface);border:1px solid #ffffff1f;border-radius:.5rem;margin-bottom:.75rem;padding:1rem}.aide-mode-card p,.aide-try-card p{color:var(--text-muted);margin-bottom:.5rem}.aide-mode-examples{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.aide-mode-examples li{margin:0}.aide-table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.aide-patterns-table{border-collapse:collapse;width:100%;font-size:.9rem}.aide-patterns-table th,.aide-patterns-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #ffffff14;padding:.4rem .6rem}.aide-patterns-table th{color:var(--text-muted);white-space:nowrap;font-weight:600}.aide-patterns-table td:first-child{color:var(--text);white-space:nowrap}.aide-rendu .math-content,.aide-rendu .math-content p{margin:0}.aide-try-input{background:var(--bg);width:100%;color:var(--text);border:1px solid #ffffff26;border-radius:.5rem;margin-bottom:.6rem;padding:.6rem .75rem;font-family:monospace;font-size:1rem}.aide-try-input:focus{border-color:var(--accent);outline:none}.aide-try-preview{background:var(--bg);border:1px dashed #ffffff26;border-radius:.5rem;min-height:3rem;padding:.75rem;overflow-x:auto}.aide-try-preview .math-content,.aide-try-preview .math-content p{margin:0}math-field.aide-mathlive{background:var(--bg);width:100%;color:var(--text);border:1px solid #ffffff26;border-radius:.5rem;margin-bottom:.6rem;padding:.6rem .75rem;font-size:1.1rem;display:block}.aide-mathlive-readout{color:var(--text-muted);font-size:.9rem}.aide-math-mobile ul,.aide-math-more ul{padding-left:1.25rem}.aide-math-mobile li{color:var(--text-muted);margin-bottom:.5rem}.aide-math-more .btn-primary{margin-top:.5rem;display:inline-block}.aide-raisonnement{max-width:48rem;margin:0 auto;padding:1.5rem 1rem 3rem;line-height:1.7}.aide-raisonnement h1{margin-bottom:1rem;font-size:1.6rem}.aide-raisonnement h2{color:var(--accent);margin-bottom:.75rem;font-size:1.2rem}.aide-raisonnement h3{margin-bottom:.4rem;font-size:1.05rem}.aide-raisonnement section{margin-top:2rem}.aide-raisonnement p{margin-bottom:.75rem}.aide-raisonnement-intro{color:var(--text-muted)}.aide-rais-distinction,.aide-rais-pitfalls ul{padding-left:1.25rem}.aide-rais-distinction li,.aide-rais-pitfalls li{margin-bottom:.6rem}.aide-rais-note{color:var(--text-muted);font-size:.9rem;font-style:italic}.aide-rais-card{background:var(--bg-surface);border:1px solid #ffffff1f;border-radius:.5rem;margin-top:1rem;padding:.85rem 1rem}.aide-rais-when,.aide-rais-amorce{color:var(--text-muted);margin-bottom:.4rem}.aide-rais-amorce em{color:var(--text)}.aide-rais-level{color:var(--text-muted);font-size:.85rem;font-weight:400}.aide-rais-example{border-top:1px solid #ffffff14;margin-top:.5rem;padding-top:.5rem}.aide-rais-example-label{color:var(--text-muted);margin-bottom:.25rem;font-size:.85rem;display:block}.aide-rais-example ul{margin:.25rem 0 0;padding-left:1.25rem}.aide-rais-example li{margin-bottom:.35rem}.aide-rais-more .btn-primary{margin-top:.5rem;display:inline-block}.checker-page{max-width:720px;margin:0 auto;padding:1rem}.checker-intro{color:var(--text-muted);margin-bottom:1.5rem}.checker-fields{flex-wrap:wrap;align-items:flex-end;gap:1rem;display:flex}.checker-field{flex-direction:column;flex:260px;gap:.35rem;display:flex}.checker-field-label{color:var(--text-muted);font-size:.85rem}.checker-equiv{color:var(--accent);padding-bottom:.5rem;font-size:1.6rem}.checker-verify-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:1.25rem;padding:.6rem 1.4rem;font-size:1rem}.checker-verify-btn:hover:not(:disabled){background:var(--accent-hover)}.checker-verify-btn:disabled{opacity:.6;cursor:default}.checker-result{margin-top:1.5rem}.checker-verdict{border-left:4px solid var(--text-muted);background:var(--bg-surface);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.6rem;padding:1rem 1.25rem;display:flex}.checker-verdict .checker-icon{font-size:1.4rem}.checker-verdict-text{font-size:1.1rem;font-weight:600}.checker-correct{border-left-color:var(--success)}.checker-incorrect{border-left-color:var(--error)}.checker-unsupported{border-left-color:var(--warning)}.checker-cta{color:var(--text-muted);flex-basis:100%;margin:.5rem 0 0;font-size:.95rem}.checker-cta-link{color:var(--accent);white-space:nowrap;font-weight:600}.checker-error{color:var(--error);margin-top:.75rem}.checker-statement{margin:1rem 0 1.5rem}.checker-statement-latex{white-space:pre-wrap;font-family:inherit}.checker-statement-empty{color:var(--text-muted);font-style:italic}.checker-figure-description{color:var(--text-muted);margin:.25rem 0}.checker-questions{flex-direction:column;gap:1rem;margin:0;padding:0;list-style:none;display:flex}.checker-question{margin:0}.checker-answer{border:1px solid var(--border,#80808040);background:var(--bg-surface);border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;padding:1rem 1.25rem;display:flex}.checker-answer .checker-field{flex:260px}.checker-answer .checker-verify-btn{margin-top:0}.checker-answer .checker-result{flex-basis:100%;margin-top:.5rem}.checker-boolean .checker-field-label{flex-basis:100%}.checker-boolean-choices{gap:.75rem;display:flex}.checker-cta-row{background:0 0;border-style:dashed;align-items:baseline}.checker-cta-row .checker-cta{flex:300px;margin:0}.site-brand{color:var(--text);white-space:nowrap;flex:none;font-size:1.125rem;font-weight:600;text-decoration:none}.site-brand:hover{color:var(--accent)}@media (width<=900px){.header{flex-wrap:wrap;gap:.5rem;padding:.5rem .75rem}.site-brand{order:1}.header-spacer{order:2}.user-info{order:3;min-width:0;font-size:.8rem}.user-menu-trigger{text-overflow:ellipsis;white-space:nowrap;max-width:45vw;overflow:hidden}.nav{z-index:100;background:var(--bg-surface);border-bottom:1px solid #ffffff1a;flex-direction:column;order:4;gap:0;max-height:calc(100vh - 100%);padding:.25rem 0;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 16px #00000059}.nav.nav-open{display:flex}.nav-link{border-radius:0;align-items:center;min-height:44px;padding:.5rem 1rem;font-size:1rem;display:flex}.nav-link[aria-current]{border-radius:0}}.table-scroll{overscroll-behavior-x:contain;overflow-x:auto}@media (width<=900px){.session-options{flex-direction:column;gap:1rem}.exam-doc{flex-wrap:wrap}.doc-name{overflow-wrap:anywhere;min-width:0}.btn-detail-toggle{margin-left:0}.exam-upload-actions{flex-wrap:wrap}.btn-delete-exam{margin-left:0}}@media (hover:none),(width<=900px){.kc-outcome-badge:after{content:none}}.nav-toggle{width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border:0;order:0;justify-content:center;align-items:center;padding:0;display:none}.nav-toggle-bars,.nav-toggle-bars:before,.nav-toggle-bars:after{background:currentColor;border-radius:1px;width:20px;height:2px;display:block}.nav-toggle-bars{position:relative}.nav-toggle-bars:before,.nav-toggle-bars:after{content:"";position:absolute;left:0}.nav-toggle-bars:before{top:-6px}.nav-toggle-bars:after{top:6px}.nav-backdrop{z-index:99;position:fixed;inset:0}@media (width<=900px){.nav-toggle{display:inline-flex}.header{position:relative}}.ds-panel{flex-wrap:wrap;align-items:center;gap:.75rem;margin:.5rem 0;display:flex}.ds-chrono{color:var(--text-muted);font-size:.85rem}.ds-chrono-target{opacity:.75}.ds-hint{color:var(--text-muted);font-size:.8rem}.ds-grade{background:var(--bg-card);border:1px solid #ffffff1f;border-radius:.5rem;margin:.75rem 0;padding:.75rem}.ds-grade-header{flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.ds-grade-score{font-size:1.3rem;font-weight:600}.ds-grade-badge{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--accent);color:var(--accent);border-radius:1rem;padding:.15rem .45rem;font-size:.7rem}.ds-grade-provisional{color:#f39c12;margin:.5rem 0 0;font-size:.85rem}.ds-grade-questions{flex-direction:column;gap:.3rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.ds-grade-question{flex-wrap:wrap;align-items:baseline;gap:.5rem;font-size:.85rem;display:flex}.ds-q-name{min-width:2.5rem;font-weight:600}.ds-q-points{color:var(--text-muted);font-variant-numeric:tabular-nums}.ds-q-adjust{color:#f39c12}.ds-q-detail{color:var(--text-muted);flex-basis:100%;min-width:0;overflow:auto hidden}.ds-grade-raw{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.ds-reading{border-top:1px solid #ffffff14;margin-top:.75rem;padding-top:.5rem;font-size:.85rem}.ds-reading>summary{cursor:pointer;color:var(--text-muted)}.ds-reading-hint{color:var(--text-muted);margin:.5rem 0}.ds-reading-pages{scroll-snap-type:x proximity;flex-wrap:nowrap;gap:.5rem;margin-bottom:.75rem;padding-bottom:.35rem;display:flex;overflow-x:auto}.ds-reading-page{scroll-snap-align:start;flex:none;margin:0}.ds-reading-page img{object-fit:cover;object-position:top;background:#fff;border:1px solid #ffffff1f;border-radius:.35rem;width:auto;max-width:12rem;height:9rem;display:block}.ds-reading-pdf{color:var(--text-muted);border:1px dashed #ffffff40;border-radius:.35rem;padding:.4rem .6rem;display:inline-block}.ds-reading-page figcaption{color:var(--text-muted);margin-top:.2rem;font-size:.75rem}.ds-reading-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.ds-reading-item{flex-direction:column;gap:.2rem;display:flex}.ds-reading-row{flex-wrap:wrap;align-items:baseline;gap:.4rem;display:flex}.ds-reading-label{color:var(--text-muted);min-width:6.5rem;font-size:.75rem}.ds-reading-row .math-content{flex:12rem;min-width:0;padding-block:.15rem;overflow:auto hidden}.ds-grade-summary{margin-top:.75rem;font-size:.9rem}.ds-form-hint{margin-bottom:.75rem;line-height:1.45}.exam-kc-override{margin:.5rem 0}.exam-kc-override-header{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.exam-kc-label{color:var(--text-muted);font-size:.85rem}.exam-kc-empty{color:var(--text-muted);margin:0;font-size:.85rem;font-style:italic}.exam-kc-chips{flex-wrap:wrap;gap:.35rem;display:flex}.exam-kc-chip{color:var(--text-muted);background:#ffffff12;border:1px solid #ffffff1f;border-radius:1rem;padding:.15rem .5rem;font-size:.75rem}.exam-kc-edit{margin:.5rem 0}.exam-kc-search{width:100%}.exam-kc-multiselect{border:1px solid #ffffff1f;border-radius:.375rem;max-height:14rem;margin:.4rem 0;padding:.25rem;list-style:none;overflow-y:auto}.exam-kc-option{padding:.1rem 0}.exam-kc-option label{cursor:pointer;align-items:center;gap:.5rem;min-height:1.9rem;font-size:.85rem;display:flex}.exam-kc-option input{flex:none}.ds-conceal-note{color:var(--text-muted);margin:.4rem 0;font-size:.8rem;font-style:italic}.ds-blocked{color:#f39c12;flex-basis:100%;font-size:.8rem}.ds-pages{flex-direction:column;gap:.5rem;margin:.5rem 0;display:flex}.ds-page-chips{flex-wrap:wrap;gap:.35rem;display:flex}.doc-remove{color:var(--text-muted);font-size:.8rem}.doc-remove:hover:not(:disabled){color:#e74c3c}.ds-page-chip{background:#ffffff12;border:1px solid #ffffff26;border-radius:1rem;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.8rem;display:inline-flex}.ds-page-chip-failed{color:#e74c3c;border-color:#e74c3c}.ds-page-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:0;min-width:1.25rem;padding:0;font-size:1rem;line-height:1}.ds-sheet-page{max-width:45rem;margin:0 auto}.ds-sheet-header h1{margin-bottom:.35rem}.ds-sheet-meta{color:var(--text-muted);flex-wrap:wrap;gap:1rem;margin-bottom:.35rem;font-size:.9rem;display:flex}.ds-sheet-themes,.ds-sheet-instructions{color:var(--text-muted);margin-bottom:.35rem;font-size:.9rem}.ds-sheet-print{margin:.75rem 0 1.5rem}a.btn,a.btn:visited{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}a.btn:not(.btn-primary),a.btn:not(.btn-primary):visited{color:var(--text-muted);background:#ffffff14;border:1px solid #ffffff26;border-radius:.25rem}a.btn:not(.btn-primary):hover{color:var(--accent);border-color:var(--accent)}.ds-sheet-exercise{break-inside:avoid;page-break-inside:avoid;margin-bottom:2rem}.ds-sheet-exercise-title{border-bottom:1px solid var(--text-muted);justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;padding-bottom:.35rem;font-size:1.05rem;display:flex}.ds-sheet-exercise-points{color:var(--text-muted);white-space:nowrap;font-size:.9rem}.ds-sheet-latex{white-space:pre-wrap;font-size:.9rem}.ds-sheet-figure-description,.ds-sheet-attribution,.ds-sheet-estimate,.ds-sheet-origin{color:var(--text-muted);font-size:.8rem}.ds-sheet-attribution{margin-top:.5rem}.ds-sheet-footer{border-top:1px solid var(--text-muted);padding-top:.75rem}.ds-sheet-error,.ds-sheet-loading{color:var(--text-muted)}@media print{.header,.footer,.ds-sheet-print{display:none!important}body,.app,.main,.ds-sheet-page{max-width:none;margin:0;padding:0;color:#000!important;background:#fff!important}.ds-sheet-meta,.ds-sheet-themes,.ds-sheet-instructions,.ds-sheet-exercise-points,.ds-sheet-figure-description,.ds-sheet-attribution,.ds-sheet-estimate,.ds-sheet-origin{color:#444!important}.ds-sheet-exercise-title,.ds-sheet-footer{border-color:#000!important}.ds-sheet img,.ds-sheet svg{max-width:100%;height:auto}@page{margin:1.8cm 1.6cm}}.session-options.hidden{display:none}.session-class-checklist{text-align:left;width:100%;max-width:40rem;margin-bottom:1rem}.class-checklist h3{margin:0 0 .5rem}.class-checklist-hint{color:var(--text-muted);margin:.5rem 0;font-size:.85rem}.class-chapters{flex-direction:column;gap:.25rem;margin:.75rem 0;padding:0;list-style:none;display:flex}.class-chapter{border:1px solid #ffffff14;border-radius:6px;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.5rem .75rem;display:flex}.class-chapter.is-current{border-color:var(--accent)}.class-chapter-title{flex:12rem}.class-chapter-note{color:var(--text-muted);font-size:.75rem;font-style:italic}.class-chapter-seen,.class-chapter-current{color:var(--text-muted);cursor:pointer;align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.class-checklist-actions{flex-wrap:wrap;gap:.75rem;margin-top:.75rem;display:flex}.class-chip{background:var(--bg-surface);border:1px solid #ffffff1a;border-radius:999px;flex-wrap:wrap;align-items:center;gap:.25rem .75rem;width:fit-content;max-width:100%;margin-bottom:1rem;padding:.5rem .75rem;font-size:.9rem;display:flex}.class-chip-editor{margin-bottom:1rem}.class-progress-summary p{margin:.25rem 0}.class-chip-note{color:var(--text-muted);font-size:.8rem}.class-chip .btn-link,.class-checklist .btn-link,.class-checklist-hint a,.class-checklist-hint a:visited{color:var(--accent-hover);font-weight:600}.class-chip .btn-link,.class-checklist-back{padding:.25rem .5rem;font-size:.9rem}.class-chip .btn-link:hover,.class-checklist .btn-link:hover,.class-checklist-hint a:hover{color:var(--text);text-decoration:underline}.class-chip .btn-link:disabled,.class-checklist .btn-link:disabled{opacity:.5;cursor:default;text-decoration:none}