:root{--green:#0e7565;--ink:#10231e;--paper:#f6f9f8;--grid:#dce8e4;--ink-soft:#52665f;--correction-red:#d2382a;--chimie:#7c4ddb;--physique:#0b84c6;--card:#fff;--tint:#e6f0ed;--chat-bg:#ece5dd;--bubble-eleve:#dcf8c6;--bubble-jang:#fff;--font-heading:"Schibsted Grotesk", system-ui, sans-serif;--font-body:"Atkinson Hyperlegible", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--gutter:16px;--radius:8px;--tap:44px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;color:var(--ink);font-family:var(--font-body);background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:24px 24px;margin:0;font-size:1rem;line-height:1.5}h1,h2,h3{font-family:var(--font-heading);margin:0;font-weight:800;line-height:1.2}p{margin:0}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--green);outline-offset:2px}.mono{font-family:var(--font-mono);font-weight:500}.app{flex-direction:column;min-height:100vh;display:flex}.container{width:100%;max-width:720px;padding:0 var(--gutter);margin:0 auto}.app-header{background:var(--green);color:#fff;padding:14px 0 0}.app-header .brand{font-size:1.75rem}.brand-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px;display:flex}.today{font-size:.875rem}.strip{border:1px solid var(--grid);border-radius:var(--radius);background:var(--card);margin-bottom:12px;padding:10px 12px}.strip-line{font-size:.95rem}.strip-extra{color:var(--ink-soft)}.chip-small{min-height:36px;padding:4px 12px;font-size:.9rem}.app-header .tagline{margin-top:2px;font-size:.95rem}.tabs{gap:4px;margin-top:12px;display:flex}.tab{min-height:var(--tap);border-radius:var(--radius) var(--radius) 0 0;color:#fff;cursor:pointer;background:0 0;border:0;flex:1;padding:8px 12px;font-weight:700}.tab[aria-selected=true]{background:var(--paper);color:var(--ink)}main{flex:1;padding:16px 0 24px}.app-footer{border-top:1px solid var(--grid);background:var(--paper);color:var(--ink-soft);padding:16px 0 24px;font-size:.875rem}.app-footer p+p{margin-top:4px}.toolbar{border:1px solid var(--grid);border-radius:var(--radius);background:var(--card);gap:10px;margin-bottom:12px;padding:12px;display:grid}.field-label{margin-bottom:4px;font-weight:700;display:block}.text-input{width:100%;min-height:var(--tap);border:2px solid var(--ink-soft);border-radius:var(--radius);background:#fff;padding:8px 12px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{min-height:var(--tap);border:2px solid var(--ink-soft);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-weight:700;display:inline-flex}.chip[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:#fff}.dot{border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.dot-chimie{background:var(--chimie)}.dot-physique{background:var(--physique)}.result-count{color:var(--ink-soft);margin:4px 0 12px;font-size:.9rem}.card-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--grid);border-radius:var(--radius);background:var(--card);border-left-width:6px;padding:14px}.card-chimie{border-left-color:var(--chimie)}.card-physique{border-left-color:var(--physique)}.card-head{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.exercise-id{font-size:1rem}.subject-tag{align-items:center;gap:6px;font-size:.875rem;font-weight:700;display:inline-flex}.status-pill{border:2px solid var(--ink-soft);border-radius:999px;margin-left:auto;padding:2px 10px;font-size:.8rem;font-weight:700}.status-pill[data-status=tried]{background:var(--tint);border-color:var(--ink-soft)}.status-pill[data-status=solved]{background:var(--green);border-color:var(--green);color:#fff}.status-pill[data-status=review]{background:var(--ink);border-color:var(--ink);color:#fff}.card h3{margin-top:8px;font-size:1.05rem}.statement{margin-top:8px}.data-block{background:var(--tint);overflow-wrap:anywhere;border-radius:6px;margin-top:10px;padding:8px 10px;font-size:.9rem}.data-block .data-title{font-family:var(--font-body);margin-bottom:2px;font-weight:700;display:block}.badge{border:1.5px dashed var(--ink-soft);color:var(--ink);border-radius:6px;margin-top:10px;padding:3px 10px;font-size:.85rem;font-weight:700;display:inline-block}.card-actions{margin-top:12px}.btn{min-height:var(--tap);border:2px solid var(--green);border-radius:var(--radius);background:var(--green);color:#fff;cursor:pointer;padding:8px 16px;font-weight:700}.btn:disabled{border-color:var(--ink-soft);background:var(--tint);color:var(--ink-soft);cursor:not-allowed}.btn-quiet{color:var(--ink);border-color:var(--ink);background:#fff}.btn-danger{background:var(--ink);border-color:var(--ink)}.hint{color:var(--ink-soft);margin-top:6px;font-size:.875rem}.empty{border:1px dashed var(--ink-soft);border-radius:var(--radius);background:var(--card);padding:20px 14px}.empty+.panel{margin-top:12px}.panel{border:1px solid var(--grid);border-radius:var(--radius);background:var(--card);margin-bottom:16px;padding:14px}.panel h2{font-size:1.15rem}.progress-line{margin-top:8px;font-weight:700}.progress-bar{border:2px solid var(--ink);background:#fff;border-radius:999px;height:14px;margin-top:8px;display:flex;overflow:hidden}.progress-bar>span{height:100%;display:block}.seg-solved{background:var(--green)}.seg-tried{background:var(--ink-soft)}.seg-review{background:var(--ink)}.legend{flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0;font-size:.875rem;list-style:none;display:flex}.chapter-list{gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.chapter-row{border-bottom:1px solid var(--grid);flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding-bottom:8px;font-size:.95rem;display:flex}.chapter-row .chapter-name{flex:200px}.chapter-row .chapter-count{color:var(--ink-soft);font-size:.85rem}.notebook-row{border-bottom:1px solid var(--grid);padding:12px 0}.notebook-row:last-child{border-bottom:0}.row-head{flex-wrap:wrap;align-items:baseline;gap:2px 10px;display:flex}.row-title{font-size:.95rem}fieldset{border:0;min-width:0;margin:8px 0 0;padding:0}legend{padding:0}.status-picker{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.status-option{position:relative}.status-option input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.status-option span{min-height:var(--tap);border:2px solid var(--ink-soft);border-radius:var(--radius);text-align:center;background:#fff;justify-content:center;align-items:center;padding:6px 8px;font-weight:700;display:flex}.status-option input:checked+span[data-status=todo]{border-color:var(--ink);background:var(--tint)}.status-option input:checked+span[data-status=tried]{border-color:var(--ink-soft);background:var(--ink-soft);color:#fff}.status-option input:checked+span[data-status=solved]{border-color:var(--green);background:var(--green);color:#fff}.status-option input:checked+span[data-status=review]{border-color:var(--ink);background:var(--ink);color:#fff}.status-option input:focus-visible+span{outline:3px solid var(--green);outline-offset:2px}.note{margin-top:8px}.note summary{min-height:var(--tap);cursor:pointer;align-items:center;font-weight:700;display:flex}.note textarea{border:2px solid var(--ink-soft);border-radius:var(--radius);resize:vertical;background:#fff;width:100%;min-height:84px;padding:8px 12px}.note .counter{color:var(--ink-soft);font-size:.8rem}.notice{border:2px solid var(--ink);border-radius:var(--radius);background:var(--card);margin-bottom:12px;padding:10px 12px;font-size:.95rem}.notebook-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.notebook-actions .hint,.notebook-actions .confirm{flex-basis:100%;margin-top:0}.confirm{border:2px solid var(--ink);border-radius:var(--radius);background:var(--tint);margin-top:12px;padding:12px}.confirm .row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat{border-radius:var(--radius);background:var(--chat-bg);margin-top:14px;padding:10px}.chat-messages{flex-direction:column;gap:8px;display:flex}.chat-intro{color:var(--ink-soft);font-size:.9rem}.bubble{border-radius:var(--radius);max-width:92%;color:var(--ink);overflow-wrap:anywhere;padding:8px 10px}.bubble-eleve{background:var(--bubble-eleve);white-space:pre-wrap;align-self:flex-end}.bubble-jang{background:var(--bubble-jang);align-self:flex-start}.bubble-text{white-space:pre-wrap}.disclaimer{color:var(--ink-soft);margin-top:8px;font-size:.85rem}.typing-hint{color:var(--ink-soft);font-size:.8rem;display:block}.dots{gap:3px;margin-left:4px;display:inline-flex}.dots span{background:var(--ink-soft);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite dot-pulse}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}@keyframes dot-pulse{0%,80%,to{opacity:.3}40%{opacity:1}}.chat-status{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.chat-status .btn[aria-pressed=true]{outline:3px solid var(--ink);outline-offset:2px}.chat-form{gap:8px;margin-top:10px;display:grid}.chat-label{font-size:.85rem;font-weight:700}.chat-input{border:2px solid var(--ink-soft);border-radius:var(--radius);width:100%;color:var(--ink);font:inherit;resize:vertical;background:#fff;padding:8px}@media (min-width:560px){.status-picker{grid-template-columns:repeat(4,1fr)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.dots span{opacity:.7;animation:none}}
