:root{--bg: #f7f8fa;--surface: #ffffff;--text: #1a1d24;--muted: #6b7280;--border: #e5e7eb;--primary: #4f6ef7;--primary-ink: #ffffff;--danger: #dc2626;--assisted: #b45309;--solo: #15803d;--radius: 12px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);font-size:16px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select{font:inherit;font-size:16px}button{min-height:44px;min-width:44px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius);padding:0 14px;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}input,select{min-height:44px;width:100%;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text)}label{display:flex;flex-direction:column;gap:6px;font-size:16px}h1{font-size:22px;margin:0 0 12px}h2{font-size:18px;margin:0 0 8px}.cta{background:var(--primary);color:var(--primary-ink);border-color:var(--primary);font-weight:600}.danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.link{border:none;background:none;color:var(--primary);padding:0;min-height:44px;text-decoration:underline}.app-shell{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(8px + var(--safe-top)) 16px 8px;background:var(--surface);border-bottom:1px solid var(--border)}.app-header .nav-link{border:none;background:none;font-weight:700;font-size:18px;padding:0}.app-nav{display:flex;gap:8px}.app-nav button{min-height:40px;padding:0 12px}.app-content{flex:1;overflow-y:auto;padding:16px;padding-bottom:calc(16px + var(--safe-bottom))}.auth-page,.onboarding,.chat-new,.settings-page,.progress-page,.parent-page{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.notice{color:var(--muted)}.toggle{flex-direction:row;align-items:center;gap:10px}.toggle input{width:auto;min-height:auto}.chat-list{max-width:560px;margin:0 auto}.chat-list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.chat-list-header h1{margin:0}.chat-list-header .cta{text-decoration:none;display:inline-flex;align-items:center}.chat-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.chat-items a{display:flex;flex-direction:column;gap:2px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:var(--text);min-height:44px}.chat-items span{color:var(--muted);font-size:14px}.chat-detail{display:flex;flex-direction:column;height:100%;max-width:720px;margin:0 auto}.chat-detail-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}.chat-detail-titles h1{margin:0;font-size:20px}.chat-subject{color:var(--muted);font-size:14px}.mode-toggle{display:flex;align-items:center;gap:8px}.mode-indicator{font-size:14px;font-weight:600;padding:4px 10px;border-radius:999px;color:#fff}.mode-indicator.solo{background:var(--solo)}.mode-indicator.assisted{background:var(--assisted)}.mode-btn{min-height:40px;font-size:14px}.chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:8px 0}.empty{color:var(--muted);text-align:center;margin:24px 0}.message{display:flex;flex-direction:column;gap:6px}.message.user{align-items:flex-end}.message.assistant{align-items:flex-start}.bubble{max-width:85%;padding:10px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word}.message.user .bubble{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.message.streaming .bubble{border-style:dashed}.stream-error{align-self:center;text-align:center;color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:10px 14px}.rated{color:var(--solo);font-size:14px}.feedback{display:flex;flex-wrap:wrap;gap:6px}.feedback-btn{min-height:40px;font-size:14px;padding:0 10px}.quick-actions{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:8px}.quick-action{min-height:40px;font-size:14px;padding:0 10px}.composer{padding:8px 0 calc(8px + var(--safe-bottom));background:var(--bg);border-top:1px solid var(--border)}.composer-row{display:flex;gap:8px;align-items:center}.composer-row input{flex:1}.composer-row .cta{flex-shrink:0}.attachment-input{width:auto;min-height:44px;flex-shrink:0;padding:0 8px}.attachment-list{display:flex;flex-direction:column;gap:6px;padding-bottom:8px}.attachment-item{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;font-size:14px}.attachment-item.error{border-color:var(--danger);background:#fef2f2}.attachment-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-status{color:var(--muted)}.attachment-status.error{color:var(--danger)}.attachment-remove{min-height:32px;min-width:32px;padding:0 8px;font-size:14px}.visual{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin-top:8px}.visual h4{margin:0 0 8px}.visual ol,.visual ul{margin:0;padding-left:20px}.visual table{width:100%;border-collapse:collapse}.visual th,.visual td{border:1px solid var(--border);padding:6px 8px;text-align:left;font-size:14px}.mastery-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.mastery-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.score-row{display:flex;justify-content:space-between;font-size:15px;padding:2px 0}.score-label{color:var(--muted)}.score-value{font-weight:600}.parent-blocked{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:12px 14px}.parent-report,.parent-privacy{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.settings-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:10px}.locale-toggle{display:flex;gap:8px}.locale-toggle button.active{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.error-boundary{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 16px;text-align:center}.load-older{align-self:center;min-height:40px;font-size:14px}
