:root{--bg:#0f0f13;--surface:#1a1a24;--surface2:#223;--border:#2a2a3e;--text:#e8e8f0;--text-dim:#88a;--green:#22c55e;--blue:#3b82f6;--yellow:#eab308;--red:#ef4444;--purple:#a855f7;--radius:12px;--radius-sm:8px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}.container{max-width:960px;margin:0 auto;padding:24px 16px}.header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;padding-bottom:16px;border-bottom:1px solid var(--border)}.header h1{font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,var(--green),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header-badge{font-size:.75rem;color:var(--text-dim);padding:4px 10px;border-radius:20px}.card,.header-badge{background:var(--surface);border:1px solid var(--border)}.card{border-radius:var(--radius);padding:20px}.card,.card-title{margin-bottom:16px}.card-title{font-size:1.1rem;font-weight:600;display:flex;align-items:center;gap:8px}.seance{display:flex;align-items:flex-start;gap:16px;padding:14px 0;border-bottom:1px solid var(--border)}.seance:last-child{border-bottom:none;padding-bottom:0}.seance-day{min-width:90px;font-weight:600;font-size:.9rem}.seance-details{flex:1 1}.seance-type{display:inline-block;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}.type-seuil{background:#3b82f633;color:var(--blue)}.type-fractionne{background:#a855f733;color:var(--purple)}.type-sortie_longue{background:#22c55e33;color:var(--green)}.type-recuperation{background:#eab30833;color:var(--yellow)}.type-footing{background:#6366f133;color:#818cf8}.type-repos{background:#44446633;color:var(--text-dim)}.seance-meta{display:flex;gap:16px;font-size:.85rem}.seance-desc,.seance-meta{margin-top:4px;color:var(--text-dim)}.seance-desc{font-size:.8rem;line-height:1.5}.intensity-faible{color:var(--text-dim)}.intensity-modere{color:var(--yellow)}.intensity-eleve{color:var(--red)}.feedback-section{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.star-rating{display:flex;gap:2px}.star{cursor:pointer;font-size:1.2rem;color:#444;transition:color .15s}.star.active{color:var(--yellow)}.star:hover{color:#facc15}.feedback-input{flex:1 1;min-width:140px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;color:var(--text);font-size:.85rem;outline:none}.feedback-input:focus{border-color:var(--blue)}.btn{background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);padding:6px 14px;font-size:.85rem;font-weight:500;cursor:pointer;transition:opacity .15s}.btn:hover{opacity:.85}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-regenerate{background:transparent;border:1px solid var(--yellow);color:var(--yellow)}.btn-regenerate:hover{background:#eab30822}.history-table{width:100%;border-collapse:collapse;font-size:.85rem}.history-table th{text-align:left;font-weight:600;color:var(--text-dim);font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;padding:8px 10px}.history-table td,.history-table th{border-bottom:1px solid var(--border)}.history-table td{padding:10px;color:var(--text)}.history-table tr:hover td{background:var(--surface2)}.loading{text-align:center;color:var(--text-dim);padding:40px 0}.error{color:var(--red);background:#ef444422;border:1px solid #ef444444;border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:16px}.success-msg{color:var(--green);background:#22c55e22;border:1px solid #22c55e44;border-radius:var(--radius-sm);padding:8px 12px;font-size:.85rem;margin-bottom:8px}@media (max-width:640px){.container{padding:16px 12px}.header{align-items:flex-start}.header,.seance{flex-direction:column;gap:8px}.seance-day{min-width:unset}.history-table{font-size:.75rem}.history-table td,.history-table th{padding:6px 8px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fadeIn .3s ease-out}