/* ไอคอนของระบบ — Google Material Symbols ชุดเดียวทั้งระบบ
   โหลดให้ทุกหน้าโดย shell-navbar.js หน้าไหนก็ใช้ได้ทันที ไม่ต้องประกาศเอง

   ฝังเป็นไฟล์ในเว็บเอง (ชุดย่อยเฉพาะไอคอนที่ใช้ ~10 KB · มีแกน FILL 0–1 ใช้ font-variation-settings:'FILL' 1 ทำไอคอนทึบได้) จึงไม่ต้องต่อเน็ตออกนอก
   โรงพยาบาล ไม่มีวูบตอนโหลด และไม่ติด CSP

   ไอคอนในชุด:
   account_tree, add, admin_panel_settings, arrow_back, arrow_downward, arrow_left, arrow_right, arrow_upward,
   attach_file, audio_file, autorenew, backup, badge, bar_chart, block, bloodtype, calendar_month, campaign,
   chat, check, check_circle, chevron_left, chevron_right, close, close_fullscreen, cloud_sync, content_copy,
   coronavirus,
   corporate_fare, crop, dangerous, dark_mode, database, delete, description, devices, dns, done_all, download,
   draft, drag_indicator, edit, emoji_events, error, event_busy, expand_more, experiment, face, fact_check,
   fiber_new, filter_alt, filter_list, fingerprint, flag, folder_zip, groups, help, history,
   home_health, hub, image, info, laptop_mac, left_panel_close, left_panel_open, light_mode, link, link_off,
   local_hospital, location_city, lock, lock_open, logout, man_2, man_4, map, merge, movie, newspaper, notifications,
   notifications_off, oncology, open_in_full, open_in_new, pending_actions, person, person_add, person_remove,
   photo_camera, picture_as_pdf, print, priority_high, public, qr_code_scanner, radiology, redo, refresh,
   rocket_launch, schedule, search, send, settings, slideshow, smartphone, sort, star, subdirectory_arrow_right,
   sync_alt, table_chart, table_rows, text_decrease, text_increase, tune, undo, upload_file, vaccines,
   verified_user, view_column, view_list, visibility, visibility_off, vpn_lock, water_drop, woman

   เพิ่มไอคอนใหม่: สร้างไฟล์ฟอนต์ใหม่ที่มีของเดิมครบด้วย แล้วทับไฟล์เดิม
     curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0..1,0&icon_names=<รายชื่อทั้งหมด เรียงตามตัวอักษร คั่นด้วย ,>"
   (UA สั้น ๆ ได้ไฟล์ truetype แทน woff2 · 24 ต.ค. 2569) แล้วดาวน์โหลด woff2 จาก url ในผลลัพธ์ มาไว้ที่ assets/fonts/material-symbols-subset.woff2
   แล้วเพิ่มเลข ?v= ของ src ข้างล่าง ไม่งั้นเบราว์เซอร์ที่จำไฟล์เก่าไว้จะยังเห็นชื่อไอคอนเป็นตัวหนังสือ
   ถ้าเพิ่มชื่อใหม่แต่ไม่สร้างไฟล์ใหม่ ไอคอนจะกลายเป็นข้อความชื่อไอคอนบนหน้าจอ */
@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('/assets/fonts/material-symbols-subset.woff2?v=26') format('woff2');
}
/* คลาส material-symbols-outlined ต้องมีเสมอ · public/system-font.css ยกเว้นคลาสนี้ไว้
   จากกฎที่บังคับฟอนต์ให้ทุก element ถ้าตั้งชื่อคลาสเอง ไอคอนจะกลายเป็นตัวอักษร */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: 400;
  font-style: normal;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}
.msh-icon {
  font-size: 1.15em;
  vertical-align: -0.18em;
}
/* ไอคอนเรียงลำดับของหัวตารางทั้งระบบ: <span class="material-symbols-outlined msh-sort-icon [is-asc|is-desc]">sort</span>
   เล็กและจาง ไม่แย่งสายตาจากชื่อคอลัมน์ (เจ้าของระบบ 5 พ.ย. 2569 · PAGE-SHELL-RULES ข้อ 7)
   ยังไม่เรียง = เทาจาง 14px · ชี้/โฟกัสหัวคอลัมน์ = ชัดขึ้น · เรียงอยู่ = สีน้ำเงินเต็ม · น้อยไปมาก = กลับหัว
   หน้าห้ามตั้ง font-size / opacity ของ .msh-sort-icon เอง (test/sort-icon-rule.test.js) */
.msh-sort-icon{font-size:14px;vertical-align:-2px;color:#98a2b3;opacity:.5;transition:opacity .15s}
:hover>.msh-sort-icon,:focus-visible>.msh-sort-icon{opacity:.85}
.msh-sort-icon.is-asc,.msh-sort-icon.is-desc{color:#176bc3;opacity:1}
.msh-sort-icon.is-asc{transform:scaleY(-1)}
