:root {
  --bg:#f7f7f8; --card:#ffffff; --ink:#111; --muted:#666; --brand:#0a7; --line:#e6e6e9;
  --cf-bg:#f6fff9; --quiz-bg:#f5f9ff;
  --p1-bg:#fff8f6; --p2-bg:#f9fff6; --p3-bg:#fffef6; --p4-bg:#f6f9ff;
}
* { box-sizing: border-box; }
html, body { margin:0; padding:0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; color:var(--ink); background:var(--bg); }

/* Layout */
.container { max-width: 1100px; margin: 0 auto; padding: 16px; }
.topbar { position: sticky; top:0; z-index:10; display:flex; align-items:center; justify-content:space-between; padding:10px 16px; background:rgba(255,255,255,.85); backdrop-filter: blur(8px); border-bottom:1px solid var(--line); }
.topbar h1 { margin:0; font-size: 18px; }
.actions { display:flex; gap:8px; }

/* Controls */
.file-label { display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line); padding:6px 10px; border-radius:8px; background:#fff; cursor:pointer; }
.file-label input { display:none; }
button { border:1px solid var(--line); background:#fff; padding:6px 10px; border-radius:8px; cursor:pointer; }
button:hover { border-color: var(--brand); }
input, select, textarea { width:100%; border:1px solid var(--line); border-radius:8px; padding:8px; background:#fff; }
label { display:block; font-size:14px; }

/* Cards */
.card { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px; margin:12px 0; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.row { display:flex; align-items:center; }
.row.between { justify-content: space-between; }
.row.gap { gap:8px; }

/* Phase backgrounds (optional: add class to sections if需要不同色) */
.card.phase-1 { background: var(--p1-bg); }
.card.phase-2 { background: var(--p2-bg); }
.card.phase-3 { background: var(--p3-bg); }
.card.phase-4 { background: var(--p4-bg); }

/* Grids */
.grid.two { display:grid; grid-template-columns: repeat(2, 1fr); gap:12px; }
.grid.three { display:grid; grid-template-columns: repeat(3, 1fr); gap:12px; }
@media (max-width: 800px){ .grid.two, .grid.three { grid-template-columns: 1fr; } }

/* Tables */
.table { width:100%; border-collapse: collapse; }
.table th, .table td { border-bottom:1px solid var(--line); padding:6px; text-align:left; }

/* Badges */
.badge { display:inline-block; padding:2px 8px; background:#eefaf6; color:#075; border:1px solid #cfeee3; border-radius:999px; font-size:12px; }

/* Stages & flows */
.stage { border:1px dashed var(--line); border-radius:10px; padding:10px; margin:10px 0; }
.stage-header { display:flex; align-items:center; gap:8px; }
.flow-row { display:grid; grid-template-columns: 1fr 1fr auto; gap:8px; align-items:center; margin:6px 0; }

/* Totals */
.total-line { font-weight:600; padding:6px 0; }
.hint { color:var(--muted); font-size:12px; }
.footer { text-align:center; color:var(--muted); padding:24px; font-size:12px; }

/* Teaching Aids colors */
.card:has(#cf-table) .grid.two > div:first-child { background: var(--cf-bg); border:1px solid #d6f0e0; border-radius:12px; padding:12px; }
.card:has(#quiz) .grid.two > div:last-child { background: var(--quiz-bg); border:1px solid #dbe7ff; border-radius:12px; padding:12px; }

/* Prevent overflow */
.card:has(#quiz) .grid.two > div:last-child { overflow-wrap: anywhere; max-width: 100%; }

/* Quiz alignment & wrapping */
#quiz { display:flex; flex-direction:column; gap:10px; max-width: 560px; }
#quiz p { margin:0 0 6px; }
#quiz .quiz-item { display:grid; grid-template-columns: auto 1fr; align-items: start; column-gap: 10px; }
#quiz .quiz-item input[type="radio"] { margin-top: 3px; }
#quiz .quiz-item span { line-height:1.4; text-align:left; white-space: normal; overflow-wrap: anywhere; }

/* Buttons area under quiz */
.card:has(#quiz) .row.gap { flex-wrap: wrap; }

/* --- AI Tutor styles --- */
#chatbot-container { position: fixed; right: 20px; bottom: 20px; z-index: 50; }
#chatbot-toggle-btn {
  width: 56px; height: 56px; border-radius: 50%;
  border: 1px solid var(--line); background: #fff; box-shadow: 0 6px 16px rgba(0,0,0,.12);
  font-size: 20px;
}
#chatbot-window {
  width: 340px; height: 460px; display: flex; flex-direction: column;
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 16px 40px rgba(0,0,0,.18); overflow: hidden;
  margin-bottom: 10px;
}
#chatbot-window.hidden { display:none; }
#chatbot-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 12px; border-bottom:1px solid var(--line); background:#f9fafb;
}
#chatbot-header h3 { margin:0; font-size:16px; }
#chatbot-header button { border:none; background:transparent; font-size:20px; cursor:pointer; }

#chatbot-messages {
  flex:1; overflow:auto; padding:10px 12px; background:#fcfcfd;
}
.chat-message { margin-bottom:10px; }
.chat-message p { margin:0; }
.user-message { text-align:right; }
.user-message p { display:inline-block; background:#e7f0ff; border:1px solid #d6e4ff; padding:8px 10px; border-radius:12px; }
.ai-message p { display:inline-block; background:#f2f5f7; border:1px solid #e3e7ea; padding:8px 10px; border-radius:12px; }

#chatbot-input-container { border-top:1px solid var(--line); padding:8px; background:#fff; }
#chatbot-form { display:flex; gap:8px; }
#chatbot-input { flex:1; border:1px solid var(--line); border-radius:10px; padding:8px; }
#chatbot-send-btn { border:1px solid var(--line); background:#fff; border-radius:10px; padding:8px 12px; cursor:pointer; }

/* typing dots */
.typing-indicator { display:inline-flex; gap:3px; padding:6px 8px; background:#f2f5f7; border:1px solid #e3e7ea; border-radius:12px; }
.typing-indicator span {
  width:6px; height:6px; border-radius:50%; background:#9aa3ab; display:inline-block;
  animation: blink 1.4s infinite both;
}
.typing-indicator span:nth-child(2){ animation-delay: .2s; }
.typing-indicator span:nth-child(3){ animation-delay: .4s; }
@keyframes blink { 0%, 80%, 100% { opacity: .2 } 40% { opacity: 1 } }
