:root{--ink: #182b5c;--ink-soft: #3a4d85;--paper: #f7f4ec;--card: #ffffff;--poppy: #d43a2f;--leaf: #3e7c59;--tint: #e6ebf7;--line: #d8d2c4;--radius: 14px;--font-display: "Fraunces", Georgia, serif;--font-body: "Public Sans", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);font-weight:700;margin:0 0 .4rem}h1{font-size:1.9rem}h2{font-size:1.35rem}a{color:var(--ink)}button{font-family:var(--font-body);cursor:pointer}:focus-visible{outline:3px solid var(--poppy);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.shell{max-width:680px;margin:0 auto;padding:0 16px 90px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 0 10px}.logo{font-family:var(--font-display);font-weight:900;font-size:1.5rem;letter-spacing:-.02em}.logo span{color:var(--poppy)}.streak-pill{background:var(--ink);color:var(--paper);border-radius:999px;padding:6px 14px;font-weight:600;font-size:.9rem}.bottomnav{position:fixed;bottom:0;left:0;right:0;background:var(--ink);display:flex;justify-content:space-around;padding:10px 8px calc(10px + env(safe-area-inset-bottom));z-index:20}.bottomnav a{color:#b9c4e4;text-decoration:none;font-size:.78rem;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:2px;padding:2px 10px;border-radius:8px}.bottomnav a.active{color:var(--paper)}.bottomnav .icon{font-size:1.25rem;line-height:1}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:14px}.carte{background:var(--card);border:2px solid var(--ink);border-radius:var(--radius);padding:22px 20px;margin-bottom:18px;position:relative}.carte:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid var(--line);border-radius:calc(var(--radius) - 6px);pointer-events:none}.carte h2{text-align:center;font-style:italic;font-weight:700;margin-bottom:2px}.carte .date{text-align:center;font-size:.82rem;color:var(--ink-soft);margin-bottom:14px;letter-spacing:.06em;text-transform:uppercase}.task{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px dotted var(--line);position:relative;z-index:1}.task:last-child{border-bottom:none}.task .box{width:24px;height:24px;border:2px solid var(--ink);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.9rem;color:var(--paper)}.task.done .box{background:var(--leaf);border-color:var(--leaf)}.task .label{flex:1;font-weight:500}.task.done .label{text-decoration:line-through;color:var(--ink-soft)}.task .count{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.task .go{background:var(--ink);color:var(--paper);border:none;border-radius:8px;padding:7px 14px;font-weight:600;font-size:.85rem}.task.done .go{display:none}.btn{background:var(--ink);color:var(--paper);border:none;border-radius:10px;padding:13px 20px;font-size:1rem;font-weight:600;width:100%}.btn.secondary{background:transparent;color:var(--ink);border:2px solid var(--ink)}.btn.poppy{background:var(--poppy)}.btn.leaf{background:var(--leaf)}.btn:disabled{opacity:.45;cursor:default}.btn-row{display:flex;gap:10px}.btn-row .btn{flex:1}.field{margin-bottom:12px}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:4px}.field input,.field select,.field textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;font-size:1rem;font-family:var(--font-body);background:var(--card);color:var(--ink)}.error{color:var(--poppy);font-weight:600;font-size:.9rem;margin:8px 0}.muted{color:var(--ink-soft);font-size:.9rem}.progressbar{height:8px;background:var(--tint);border-radius:999px;overflow:hidden;margin:12px 0 20px}.progressbar>div{height:100%;background:var(--poppy);border-radius:999px;transition:width .3s}.exercise-prompt{font-family:var(--font-display);font-size:1.45rem;font-weight:700;margin:8px 0 18px}.choices{display:flex;flex-direction:column;gap:10px}.choice-btn{background:var(--card);border:2px solid var(--line);border-radius:10px;padding:13px;font-size:1rem;text-align:left;font-weight:500;color:var(--ink)}.choice-btn.selected{border-color:var(--ink);background:var(--tint)}.choice-btn.right{border-color:var(--leaf);background:#e6f2ea}.choice-btn.wrong{border-color:var(--poppy);background:#fbe9e7}.feedback{border-radius:10px;padding:12px 14px;margin-top:14px;font-weight:500}.feedback.ok{background:#e6f2ea;color:var(--leaf)}.feedback.bad{background:#fbe9e7;color:var(--poppy)}.flashcard{background:var(--card);border:2px solid var(--ink);border-radius:var(--radius);min-height:180px;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:1.7rem;font-weight:700;text-align:center;padding:20px;margin-bottom:16px;cursor:pointer;-webkit-user-select:none;user-select:none}.audio-btn{background:var(--tint);border:2px solid var(--ink);color:var(--ink);border-radius:999px;width:74px;height:74px;font-size:1.8rem;display:block;margin:10px auto 20px}.convo-thread{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.bubble{max-width:85%;padding:12px 14px;border-radius:16px}.bubble.partner{background:var(--card);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:4px}.bubble.me{background:var(--ink);color:var(--paper);align-self:flex-end;border-bottom-right-radius:4px}.bubble .fr{font-weight:600}.bubble .en{font-size:.85rem;opacity:.75;margin-top:3px}.bubble .correction{font-size:.82rem;color:var(--poppy);margin-top:5px;font-weight:600}.mic-btn{width:88px;height:88px;border-radius:50%;border:none;background:var(--poppy);color:#fff;font-size:2rem;display:block;margin:0 auto;box-shadow:0 4px #a32b23}.mic-btn.recording{animation:pulse 1.2s infinite;background:#a32b23}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.mic-hint{text-align:center;font-size:.85rem;color:var(--ink-soft);margin-top:8px}.convo-controls{position:sticky;bottom:74px;background:var(--paper);padding:12px 0 4px}.unit-head{display:flex;justify-content:space-between;align-items:baseline;margin:18px 0 8px}.unit-head .avg{font-size:.82rem;color:var(--ink-soft)}.lesson-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:8px;text-decoration:none}.lesson-row.locked{opacity:.45;pointer-events:none}.lesson-row .dot{width:12px;height:12px;border-radius:50%;background:var(--line);flex-shrink:0}.lesson-row.completed .dot{background:var(--leaf)}.lesson-row .t{flex:1;font-weight:500}.lesson-row .score{font-size:.82rem;color:var(--ink-soft)}.type-tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;background:var(--tint);border-radius:6px;padding:3px 7px;font-weight:700;color:var(--ink-soft)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;text-align:center}.stat .n{font-family:var(--font-display);font-size:2rem;font-weight:900}.stat .l{font-size:.8rem;color:var(--ink-soft);font-weight:600}.auth-hero{text-align:center;padding:48px 0 24px}.auth-hero .big{font-family:var(--font-display);font-size:3rem;font-weight:900;letter-spacing:-.03em}.auth-hero .big span{color:var(--poppy)}.auth-hero p{color:var(--ink-soft)}table.admin{width:100%;border-collapse:collapse;font-size:.9rem}table.admin th,table.admin td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line)}.spinner{text-align:center;padding:40px;color:var(--ink-soft)}
