/* ฟอนต์ของ healthy.mshprimary.com ฝังในเว็บเอง ไม่โหลดจาก Google Fonts (เจ้าของระบบ 16 ต.ค. 2569)
   เหตุ: iPhone ของเจ้าหน้าที่บางเครื่องโหลด fonts.googleapis.com ไม่ได้ (ตัวกันโฆษณา/DNS กรองเว็บ/เครือข่าย) หน้าจอขึ้นชื่อไอคอนเป็นตัวหนังสือ
   (add, checklist, home, account_circle) และตัวหนังสือเป็นฟอนต์เครื่อง · เครื่องที่ปิดฟอนต์จากเว็บทั้งหมด (Lockdown Mode) ใช้ font-guard.js

   ไอคอนในชุด (Material Symbols Rounded · opsz 24 · wght 400 · FILL 0–1):
   accessibility_new, account_circle, add, add_circle, add_link, add_photo_alternate, admin_panel_settings,
   air, airline_seat_flat, alarm, arrow_back, arrow_downward, arrow_upward, badge, bed, bedtime, block, bloodtype, calendar_month, cancel,
   check, check_circle, checklist, chevron_left, chevron_right, class, close, code, content_copy, create,
   crop, dark_mode, delete, description, directions_bike, directions_run, directions_walk, distance,
   diversity_3, dns, do_not_disturb_on, done, download, draft, drag_indicator, eco, edit, egg_alt, email,
   error, event, event_available, event_busy, event_note, event_upcoming, exercise, expand_more, fact_check,
   family_restroom, favorite, female, fitness_center, flag, footprint, forum, forward_to_inbox, gif, grocery,
   group, groups, handshake, health_and_safety, help, help_outline, hiking, history, home, how_to_reg, image,
   info, input, key, king_bed, label, light, link, link_off, list, local_florist, local_pharmacy, location_on,
   lock, login, logout, male, manage_accounts, mark_email_read, medication, menu, mode, monitor_heart,
   monitoring, mood, mouse, music_note, nights_stay, no_drinks, note, nutrition, open_in_new, pace, park,
   password, pause_circle, pending, person, person_add, person_check, person_heart, person_remove, phone, photo,
   photo_camera, pill, pinch, policy, pool, print, psychology, public, qr_code, qr_code_2, qr_code_scanner,
   radio, refresh, report, resize, restaurant, rice_bowl, route, schedule, school, script, search,
   self_improvement, send, sentiment_satisfied, set_meal, settings, share, shield, shield_lock, shield_person,
   smoke_free, snooze, soup_kitchen, spa, speed, sports_gymnastics, sports_handball, sports_soccer, stairs,
   start, step, style, sync, timeline, timer, title, toast, translate, undo, unfold_more, upcoming, verified, visibility,
   visibility_off, volunteer_activism, warning, water_drop, web, weight, workspace_premium, zoom_in, zoom_out

   เพิ่มไอคอนใหม่: สร้างไฟล์ใหม่ที่มีของเดิมครบ แล้วทับไฟล์เดิม
     curl -A "Mozilla/5.0 Chrome/120" "https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0..1,0&icon_names=<รายชื่อทั้งหมด เรียงตามตัวอักษร คั่นด้วย ,>"
   ดาวน์โหลด woff2 จาก url ในผลลัพธ์ มาไว้ที่ run-pages/fonts/material-symbols-rounded-subset.woff2 แล้วเพิ่มเลข ?v= ข้างล่าง
   ชื่อที่ไม่อยู่ในชุดจะขึ้นเป็นตัวหนังสือ · เทสต์ test/healthy-fonts.test.js ตรวจให้ ไอคอนเพิ่ม/ลบ จบที่นี่ */
@font-face{font-family:'Material Symbols Rounded';font-style:normal;font-weight:400;font-display:block;src:url(./fonts/material-symbols-rounded-subset.woff2?v=3) format('woff2')}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:300;font-display:swap;src:url(./fonts/noto-sans-thai-300-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:300;font-display:swap;src:url(./fonts/noto-sans-thai-300-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/noto-sans-thai-400-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/noto-sans-thai-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url(./fonts/noto-sans-thai-500-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url(./fonts/noto-sans-thai-500-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url(./fonts/noto-sans-thai-600-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url(./fonts/noto-sans-thai-600-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/noto-sans-thai-700-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/noto-sans-thai-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:800;font-display:swap;src:url(./fonts/noto-sans-thai-800-thai.woff2) format('woff2');unicode-range:U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC}
@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:800;font-display:swap;src:url(./fonts/noto-sans-thai-800-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* โหลดฟอนต์ไอคอนไม่ได้ (font-guard.js ใส่ class): ซ่อนชื่อไอคอน แสดงสัญลักษณ์แทนเท่าที่มี ปุ่มยังมีชื่อ (aria-label/ข้อความ) ตามเดิม */
/* :not(#…) เพิ่มน้ำหนัก selector ให้ชนะกฎที่มี id + !important (เช่น การ์ดกิจกรรม #eventList) */
.msh-no-icon-font .material-symbols-rounded:not(#msh-a):not(#msh-b){font-family:system-ui,sans-serif!important;font-size:0!important;width:auto!important;min-width:0!important;letter-spacing:0}
.msh-no-icon-font .material-symbols-rounded[data-icon-fallback]:not(#msh-a):not(#msh-b)::after{content:attr(data-icon-fallback);font-size:20px;line-height:1}
.msh-no-icon-font .healthy-formal .registry-more>summary::after,.msh-no-icon-font .healthy-formal .admin-menu .lang-toggle::before,.msh-no-icon-font #member .activity-card button::before{content:none!important}
