*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:-apple-system,system-ui,Segoe UI,sans-serif;background:#f6f4ef;color:#1b1b1b;overscroll-behavior-y:none}.app{max-width:720px;margin:0 auto;height:100dvh;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 16px 0}.header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex:0 0 auto}.session-badge{background:#2a5d4e;color:#fff;padding:4px 12px;border-radius:999px;font-size:13px}.chat{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:12px;padding-bottom:12px}.bubble{padding:12px 16px;border-radius:16px;max-width:85%;white-space:pre-wrap;line-height:1.5}.bubble.user{align-self:flex-start;background:#2a5d4e;color:#fff;border-bottom-right-radius:4px}.bubble.assistant{align-self:flex-start;background:#fff;border-bottom-right-radius:4px;box-shadow:0 1px 2px #0000000d}.bubble.thinking{display:flex;gap:4px;align-items:center;padding:14px 18px}.bubble.thinking .dot{width:6px;height:6px;border-radius:50%;background:#888;animation:bounce 1.2s infinite ease-in-out}.bubble.thinking .dot:nth-child(2){animation-delay:.15s}.bubble.thinking .dot:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}.composer{flex:0 0 auto;background:#f6f4ef;margin:0 -16px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid #e5e1d6}.composer-inner{max-width:720px;margin:0 auto;display:flex;gap:8px}.composer textarea{flex:1;min-width:0;border:1px solid #d8d3c4;border-radius:12px;padding:10px 12px;font-size:16px;font-family:inherit;resize:none;min-height:44px;max-height:160px}.composer button{flex:0 0 auto}.composer button{background:#2a5d4e;color:#fff;border:none;border-radius:12px;padding:0 20px;font-size:15px;cursor:pointer}.composer button:disabled{opacity:.5;cursor:not-allowed}.session-end-card{max-width:720px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:12px;padding:6px 0}.session-end-text{margin:0;color:#555;font-size:15px;text-align:center}.session-end-btn{padding:10px 22px}.composer .mic-btn{padding:0;width:44px;min-width:44px;height:44px;border-radius:12px;background:#f6f4ef;color:#2a5d4e;border:1px solid #d8d3c4;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.composer .mic-btn.recording{background:#c0392b;border-color:#c0392b;color:#fff;animation:mic-pulse 1.2s ease-in-out infinite}.composer .mic-btn.transcribing{color:#999}@keyframes mic-pulse{0%,to{box-shadow:0 0 #c0392b80}50%{box-shadow:0 0 0 6px #c0392b00}}.exercise-card{background:#fff;border-radius:16px;padding:20px;margin:8px 0;box-shadow:0 2px 8px #0000000f}.exercise-card h3{margin:0 0 8px}.exercise-card .instructions{color:#555;margin-bottom:16px}.wheel-row{display:flex;align-items:center;gap:12px;margin:8px 0}.wheel-row label{flex:0 0 140px;font-size:14px}.wheel-row input[type=range]{flex:1}.wheel-row .value{flex:0 0 32px;text-align:right;font-variant-numeric:tabular-nums}.card-sort{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.card-sort button{padding:8px 14px;border-radius:999px;border:1px solid #d8d3c4;background:#fff;cursor:pointer;font-size:14px}.card-sort button.selected{background:#2a5d4e;color:#fff;border-color:#2a5d4e}.submit-btn{background:#2a5d4e;color:#fff;border:none;padding:10px 20px;border-radius:12px;cursor:pointer;font-size:15px;margin-top:12px}.wheel-row label{word-break:break-word}@media (max-width: 480px){.app{padding-left:12px;padding-right:12px}.composer{margin:0 -12px;padding-left:12px;padding-right:12px}.exercise-card{padding:16px}.wheel-row label{flex-basis:96px}}
