/* รอบ 81: มหาวิทยาลัย เฟส 1 — prefix uni- · ใช้ตัวแปรสีของ app.css (รองรับโหมดมืด) · มือถือ ≤760px ไม่เลื่อนแนวนอน */

.uni-page { min-width: 0; }
.uni-body { display: flex; flex-direction: column; gap: 14px; }
.uni-body > .panel { margin: 0; }

/* ---------- แท็บ ---------- */
.uni-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 12px; }
.uni-tabs button { border: 1px solid var(--line); background: var(--surface); color: var(--ink); border-radius: 999px; padding: 6px 14px; font: inherit; cursor: pointer; }
.uni-tabs button.on { background: var(--brand); border-color: var(--brand); color: var(--brand-ink); }
.uni-tabs button em { font-style: normal; opacity: .75; margin-left: 4px; }
.uni-tabs.small button { padding: 4px 10px; font-size: .9em; }

/* ---------- ฟอร์ม / กล่อง ---------- */
.uni-form-panel { padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
.uni-form-panel h2, .uni-form-panel h3 { margin: 0; font-size: 1.05rem; }
.uni-grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; }
.uni-grid4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 14px; }
.uni-span2 { grid-column: span 2; }
.uni-span3 { grid-column: span 3; }
.uni-subh { margin: 14px 0 6px; font-size: 1rem; }
.uni-box { border: 1px dashed var(--line); border-radius: var(--radius-sm); padding: 12px; display: flex; flex-direction: column; gap: 8px; background: var(--brand-tint); margin-top: 10px; }
.uni-box h4 { margin: 0; }
.uni-left { justify-content: flex-start; }
.uni-sec-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.uni-sum { display: flex; gap: 14px; flex-wrap: wrap; font-size: .92em; color: var(--muted); }
.uni-sum .warn, .uni-credits.warn, .warn.num { color: var(--danger); font-weight: 600; }
.uni-inline { display: inline-flex; align-items: center; gap: 6px; font-size: .9em; color: var(--muted); }
.uni-inline input { width: 80px; }
.uni-check-mid { align-self: end; padding-bottom: 8px; }
.uni-wide-input { width: 100%; }
.uni-en { display: block; }

/* ---------- ป้าย ---------- */
.uni-badge { display: inline-block; font-size: .78em; line-height: 1.5; padding: 0 8px; border-radius: 999px; background: var(--chip); color: var(--ink); white-space: nowrap; vertical-align: middle; }
.uni-badge.off, .uni-badge.ss-cancelled, .uni-badge.cs-closed, .uni-badge.ps-withdrawn, .uni-badge.ps-dismissed { background: var(--danger-soft); color: var(--danger); }
.uni-badge.ok, .uni-badge.st-running, .uni-badge.st-open, .uni-badge.cs-active, .uni-badge.ss-open, .uni-badge.ps-active, .uni-badge.ps-graduated { background: var(--ok-soft); color: var(--ok); }
.uni-badge.warn, .uni-badge.ps-leave, .uni-badge.ps-suspended, .uni-badge.st-grading, .uni-badge.ss-closed { background: var(--warn-soft); color: var(--ink); }
.uni-badge.bad { background: var(--danger-soft); color: var(--danger); }
.uni-full { color: var(--danger); font-weight: 600; }
.uni-warn-btn { border-color: var(--danger); color: var(--danger); }

/* ---------- การ์ด / รายการ ---------- */
.uni-group { display: flex; flex-direction: column; gap: 8px; }
.uni-group-h { margin: 6px 0 0; font-size: 1rem; }
.uni-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.uni-card { padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; text-align: left; min-width: 0; }
.uni-card.off, tr.off, li.off, .uni-stu-prog.off { opacity: .6; }
.uni-card-btn { cursor: pointer; font: inherit; color: inherit; border: 1px solid var(--line); background: var(--surface); }
.uni-card-btn:hover { border-color: var(--brand); }
.uni-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.uni-card-head > div, .uni-card-head > span { min-width: 0; }
.uni-card-tools, .uni-row-tools { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.uni-card-foot { display: flex; gap: 12px; font-size: .88em; color: var(--muted); }
.uni-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.uni-list li { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--line); }
.uni-list li:last-child { border-bottom: 0; }
.uni-list li > span:first-child { flex: 1 1 200px; min-width: 0; }
.uni-dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; margin: 0 0 8px; }
.uni-dl > div { min-width: 0; }
.uni-dl > div.wide { grid-column: 1 / -1; }
.uni-dl dt { font-size: .8em; color: var(--muted); }
.uni-dl dd { margin: 0; overflow-wrap: anywhere; }
.uni-table td { vertical-align: top; }
.uni-table tr.warn td { background: var(--warn-soft); }

/* ---------- ตัวกรอง ---------- */
.uni-bar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.uni-filter { display: inline-flex; align-items: center; gap: 6px; }
.uni-filter span { color: var(--muted); font-size: .9em; }
.uni-filter select { max-width: 260px; }

/* ---------- หลักสูตรย่อย ---------- */
.uni-groups { display: flex; flex-direction: column; gap: 8px; }
.uni-grp { display: grid; grid-template-columns: 160px minmax(0, 1fr) auto auto auto; gap: 8px; align-items: center; }
.uni-addcourse { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.uni-hits { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--radius-sm); max-height: 340px; overflow: auto; }
.uni-hits li { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; padding: 6px 10px; border-bottom: 1px solid var(--line); }
.uni-hits li:last-child { border-bottom: 0; }
.uni-hits li > span:first-child { flex: 1 1 220px; min-width: 0; }
.uni-plan-pick { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.uni-plan { display: flex; flex-direction: column; gap: 12px; }
.uni-plan-year h3 { margin: 0 0 6px; font-size: .98rem; }
.uni-plan-terms { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.uni-plan-term { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px 10px; }
.uni-plan-term h4 { margin: 0 0 6px; font-size: .92rem; display: flex; justify-content: space-between; gap: 6px; }
.uni-plan-term ul { margin: 0; padding-left: 16px; font-size: .9em; }

/* ---------- กลุ่มเรียน ---------- */
.uni-slot { display: inline-block; white-space: nowrap; margin-right: 8px; font-size: .92em; }
.uni-picked { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 6px 0; }
.uni-meet { display: grid; grid-template-columns: 90px 110px 110px minmax(0, 1fr) 120px auto; gap: 6px; align-items: center; }
/* รอบ 133: แถวผู้สอน (3 ช่อง: ชื่อ | บทบาท | ลบ) — เดิมใช้ grid 6 ช่องของแถวเวลาเรียน ชื่อเลยถูกบีบเหลือ 90px */
@media (min-width: 761px) { .uni-meet.uni-ins { grid-template-columns: minmax(0, 1fr) 160px auto; } }
.uni-clashes { padding: 10px 14px; border: 1px solid var(--danger); }
.uni-clashes h2 { margin: 0 0 6px; font-size: 1rem; }
.uni-clashes ul, .uni-clashlist { margin: 0; padding-left: 18px; font-size: .92em; }

/* ---------- ตารางสัปดาห์ ---------- */
.uni-wk-grid { display: grid; gap: 0; border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; background: var(--surface); }
.uni-wk-dh { padding: 6px; font-weight: 600; text-align: center; border-bottom: 1px solid var(--line); border-left: 1px solid var(--line); background: var(--chip); }
.uni-wk-corner { background: var(--chip); border-bottom: 1px solid var(--line); }
.uni-wk-time { font-size: .78em; color: var(--muted); padding: 2px 6px; border-top: 1px solid var(--line); }
.uni-wk-cell { border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.uni-wk-item { margin: 2px; padding: 4px 6px; border-radius: 8px; background: var(--brand-soft); border-left: 3px solid var(--brand); font-size: .8em; overflow: hidden; display: flex; flex-direction: column; gap: 1px; z-index: 1; min-width: 0; }
.uni-wk-item.k-lab { background: var(--ok-soft); border-left-color: var(--ok); }
.uni-wk-item.clash, .uni-wk-list li.clash { outline: 2px solid var(--danger); }
.uni-wk-item a { color: inherit; text-decoration: none; }
.uni-wk-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uni-wk-meta { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uni-wk-list { display: none; }
.uni-wk-day h3 { margin: 10px 0 6px; font-size: 1rem; }
.uni-wk-day ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.uni-wk-day li { display: flex; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); }
.uni-wk-t { min-width: 92px; font-weight: 600; }
.uni-wk-b { display: flex; flex-direction: column; min-width: 0; }

/* ---------- โต๊ะทะเบียน ---------- */
.uni-stu-hits { margin-bottom: 8px; }
.uni-warnbox { background: var(--warn-soft); border: 1px solid var(--line); }
.uni-reg-head { padding: 12px 16px; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.uni-reg-head h2 { margin: 0; font-size: 1.1rem; }
.uni-reg-head p { margin: 2px 0 0; }
.uni-credits { display: flex; flex-direction: column; align-items: flex-end; }
.uni-credits strong { font-size: 1.6rem; line-height: 1; }
.uni-subrow td { background: var(--brand-tint); }
.uni-change { display: inline-flex; gap: 6px; flex-wrap: wrap; margin-right: 6px; }
.uni-change select { max-width: 100%; }
.uni-check { flex-basis: 100%; display: flex; gap: 6px; flex-wrap: wrap; }

/* ---------- แผงนักศึกษา / รุ่น ---------- */
.uni-stu-prog { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 10px 12px; margin-bottom: 8px; }
.uni-stu-prog-head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }
.uni-stu-term { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.uni-pickbar { display: flex; gap: 10px; align-items: center; }
.uni-checklist { list-style: none; margin: 0; padding: 0; max-height: 360px; overflow: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.uni-checklist li { padding: 6px 10px; border-bottom: 1px solid var(--line); }
.uni-checklist li:last-child { border-bottom: 0; }
.uni-checklist .check { flex-wrap: wrap; }
.uni-errlist { margin: 0; padding-left: 18px; font-size: .88em; color: var(--danger); }

/* ---------- มือถือ (จุดเดียวกับทุกไฟล์: 760px) ---------- */
@media (max-width: 760px) {
  .uni-grid2, .uni-grid4, .uni-dl { grid-template-columns: minmax(0, 1fr); }
  .uni-span2, .uni-span3 { grid-column: auto; }
  .uni-cards { grid-template-columns: minmax(0, 1fr); }
  .uni-grp { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .uni-grp > input[type="text"] { grid-column: 1 / -1; }
  .uni-addcourse { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .uni-addcourse > input { grid-column: 1 / -1; }
  .uni-meet { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); border-bottom: 1px dashed var(--line); padding-bottom: 6px; }
  .uni-wk-grid { display: none; }
  .uni-wk-list { display: block; }
  .uni-filter { flex: 1 1 100%; }
  .uni-filter select { max-width: none; flex: 1; }
  .uni-credits { align-items: flex-start; }
}

/* ---------- พิมพ์ (ตารางสัปดาห์ A4 แนวนอน / รายชื่อ) ---------- */
@media print {
  .uni-wk-grid { display: grid !important; font-size: 9pt; }
  .uni-wk-list { display: none !important; }
  .uni-bar, .uni-tabs, .no-print { display: none !important; }
}
