{"id":641,"date":"2026-09-20T12:54:06","date_gmt":"2026-09-20T05:54:06","guid":{"rendered":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/fcwm-dashboard\/"},"modified":"2026-09-20T12:54:06","modified_gmt":"2026-09-20T05:54:06","slug":"fcwm-dashboard","status":"publish","type":"page","link":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/fcwm-dashboard\/","title":{"rendered":"FCWM Dashboard"},"content":{"rendered":"            <div class=\"fcwm-login-prompt fcwm-login-2col\">\n                <div class=\"fcwm-login-col-left\">\n                    \t\t<div class=\"fcwm-clsb\">\n\t\t\t<div class=\"fcwm-clsb-head\">\n\t\t\t\t<span class=\"fcwm-clsb-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"1.5\" style=\"color:#c0415a\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z\" \/><\/svg><\/span>\n\t\t\t\t<span>\n\t\t\t\t\t<span class=\"fcwm-clsb-title\">\u0e15\u0e32\u0e23\u0e32\u0e07\u0e04\u0e32\u0e1a\u0e02\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e19\u0e35\u0e49<\/span>\n\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\n\t\t\t\t\t\t<div class=\"fcwm-clsb-empty\">\n\t\t\t\t\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e30\u0e1a\u0e38\u0e2b\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<style>\n\t\t.fcwm-clsb{background:#fff;border:1.5px solid #F0D8CC;border-radius:18px;padding:22px;\n\t\t\twidth:100%;box-sizing:border-box;text-align:left;box-shadow:0 8px 30px rgba(120,50,50,.06)}\n\t\t.fcwm-clsb-head{display:flex;align-items:flex-start;gap:9px;margin-bottom:16px;\n\t\t\tpadding-bottom:13px;border-bottom:1px solid #f3e7df}\n\t\t.fcwm-clsb-icon{flex-shrink:0;line-height:1}\n\t\t.fcwm-clsb-title{display:block;font-size:15px;font-weight:700;color:#3a2a1e}\n\t\t.fcwm-clsb-room{display:block;font-size:13px;color:#c0415a;font-weight:600;margin-top:1px}\n\t\t.fcwm-clsb-now{border:1.5px solid #bfe3d4;background:#f4fbf8;border-radius:13px;padding:14px 15px;margin-bottom:15px}\n\t\t.fcwm-clsb-now.exam{border-color:#f3c9d2;background:#fdf4f6}\n\t\t.fcwm-clsb-now-tag{font-size:12px;font-weight:700;color:#0F6E56}\n\t\t.fcwm-clsb-now.exam .fcwm-clsb-now-tag{color:#9a2f45}\n\t\t.fcwm-clsb-now-subj{font-size:18px;font-weight:800;color:#2a1d14;margin:6px 0 4px;line-height:1.25}\n\t\t.fcwm-clsb-now-meta{font-size:13px;color:#7a5d4e;line-height:1.55}\n\t\t.fcwm-clsb-soon-h{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#a8978c;margin:0 0 8px}\n\t\t.fcwm-clsb-soon{width:100%;border-collapse:collapse;font-size:13.5px}\n\t\t.fcwm-clsb-soon td{padding:9px 6px;border-bottom:1px solid #f3eae1;vertical-align:top;color:#3a2a1e}\n\t\t.fcwm-clsb-soon tr:last-child td{border-bottom:none}\n\t\t.fcwm-clsb-soon td.t{white-space:nowrap;color:#9a7b66;font-size:12.5px;width:1%;font-weight:600}\n\t\t.fcwm-clsb-soon .i{font-size:12px;color:#9a8475}\n\t\t.fcwm-clsb-soon .x{display:inline-block;background:#fdf0f3;color:#9a2f45;border:1px solid #f5c0cb;border-radius:7px;font-size:10px;font-weight:700;padding:1px 7px;vertical-align:middle}\n\t\t.fcwm-clsb-empty{font-size:13.5px;color:#a8978c;text-align:center;padding:22px 6px;line-height:1.5}\n\t\t<\/style>\n\t\t                <\/div>\n                <div class=\"fcwm-login-box\" style=\"background:#ffffff !important;color:#3a2020 !important;border:1.5px solid #F0D0C8 !important\">\n                                        <img decoding=\"async\" src=\"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-content\/uploads\/2026\/04\/logochula01_big.png\" alt=\"Chulalongkorn University\"\n                         style=\"max-height:60px;width:auto;object-fit:contain;margin-bottom:10px\">\n                                        <div class=\"fcwm-login-system-name\" style=\"color:#c0415a !important\">Chulalongkorn University<\/div>\n                    \t\t<div class=\"fcwm-student-panel\" data-rest=\"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/fcwm\/v1\/student\/\" data-nonce=\"4ec55d881c\">\n\n\t\t\t<!-- v3.6.4 \u2014 Modal \u0e41\u0e08\u0e49\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2b\u0e25\u0e31\u0e07 check-in \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 -->\n\t\t\t<div id=\"fcwm-stu-modal\" class=\"fcwm-stu-modal\" role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<div class=\"fcwm-stu-modal-box\">\n\t\t\t\t\t<button type=\"button\" id=\"fcwm-stu-modal-x\" class=\"fcwm-stu-modal-x\" aria-label=\"close\">&times;<\/button>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-icon\" id=\"fcwm-stu-modal-icon\">\u2713<\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-title\" id=\"fcwm-stu-modal-title\">\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-sub\" id=\"fcwm-stu-modal-sub\"><\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-rows\" id=\"fcwm-stu-modal-rows\"><\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-foot\">\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e08\u0e30\u0e1b\u0e34\u0e14\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e43\u0e19 <b id=\"fcwm-stu-modal-cd\">10<\/b> \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<!-- v3.6.7 \u2014 Modal \u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e32\u0e1a \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e32\u0e1a active \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19 -->\n\t\t\t<div id=\"fcwm-stu-picker\" class=\"fcwm-stu-modal\" role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<div class=\"fcwm-stu-modal-box\">\n\t\t\t\t\t<div class=\"fcwm-stu-modal-icon\">\ud83d\udcda<\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-title\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e32\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-modal-sub\" style=\"font-size:13px;color:#7a6558;font-weight:500;margin:6px 0 14px\">\u0e02\u0e13\u0e30\u0e19\u0e35\u0e49\u0e21\u0e35\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e32\u0e1a\u0e43\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e19\u0e35\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e32\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13<\/div>\n\t\t\t\t\t<div id=\"fcwm-stu-picker-list\" class=\"fcwm-stu-picker-list\"><\/div>\n\t\t\t\t\t<div class=\"fcwm-stu-picker-foot\">\n\t\t\t\t\t\t<button type=\"button\" id=\"fcwm-stu-picker-cancel\" class=\"fcwm-stu-btn fcwm-stu-btn-ghost\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01<\/button>\n\t\t\t\t\t\t<button type=\"button\" id=\"fcwm-stu-picker-ok\" class=\"fcwm-stu-btn fcwm-stu-btn-primary\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e40\u0e02\u0e49\u0e32\u0e04\u0e32\u0e1a<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<!-- \u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014 \u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e25\u0e31\u0e01 (\u0e40\u0e14\u0e48\u0e19) -->\n\t\t\t<div id=\"fcwm-stu-active\" class=\"fcwm-stu-card fcwm-stu-card-ok\" style=\"display:none\">\n\t\t\t\t<div class=\"fcwm-stu-okicon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"1.5\" style=\"color:#0F6E56\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z\" \/><\/svg><\/div>\n\t\t\t\t<div class=\"fcwm-stu-title\">You are checked in<\/div>\n\t\t\t\t<div class=\"fcwm-stu-kv\"><span>Student ID<\/span><strong id=\"fcwm-stu-sid\"><\/strong><\/div>\n\t\t\t\t<div class=\"fcwm-stu-kv\"><span>Device<\/span><b id=\"fcwm-stu-host\">216.73.217.18<\/b><\/div>\n\t\t\t\t\t\t\t\t<div id=\"fcwm-stu-session\" class=\"fcwm-stu-session\" style=\"display:none\"><\/div>\n\t\t\t\t<button type=\"button\" id=\"fcwm-stu-logout\" class=\"fcwm-stu-btn fcwm-stu-btn-ghost\">Log out<\/button>\n\t\t\t<\/div>\n\n\t\t\t<div id=\"fcwm-stu-form\" class=\"fcwm-stu-card\" style=\"\">\n\t\t\t\t<div class=\"fcwm-stu-title\">Student sign-in<\/div>\n\t\t\t\t<div class=\"fcwm-stu-sub\">Enter your student ID to sign in on this computer<\/div>\n\t\t\t\t<input type=\"text\" id=\"fcwm-stu-input\" inputmode=\"numeric\" autocomplete=\"off\"\n\t\t\t\t       placeholder=\"Student ID\" class=\"fcwm-stu-input\">\n\t\t\t\t<input type=\"text\" id=\"fcwm-stu-name\" autocomplete=\"off\" maxlength=\"190\"\n\t\t\t\t       placeholder=\"\u0e0a\u0e37\u0e48\u0e2d\" class=\"fcwm-stu-input\">\n\t\t\t\t<input type=\"text\" id=\"fcwm-stu-lastname\" autocomplete=\"off\" maxlength=\"190\"\n\t\t\t\t       placeholder=\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\" class=\"fcwm-stu-input\">\n\t\t\t\t<input type=\"text\" id=\"fcwm-stu-seat\" autocomplete=\"off\" maxlength=\"8\"\n\t\t\t\t       placeholder=\"Seat no. (if any)\" class=\"fcwm-stu-input fcwm-stu-seat\">\n\t\t\t\t<div id=\"fcwm-stu-msg\" class=\"fcwm-stu-msg\" role=\"alert\"><\/div>\n\t\t\t\t<button type=\"button\" id=\"fcwm-stu-submit\" class=\"fcwm-stu-btn fcwm-stu-btn-primary\">Sign in<\/button>\n\t\t\t\t<div class=\"fcwm-stu-device\">Device: 216.73.217.18<\/div>\n\t\t\t<\/div>\n\n\t\t\t<!-- \u0e40\u0e08\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48 \u2014 \u0e44\u0e21\u0e48\u0e40\u0e14\u0e48\u0e19 \u0e01\u0e14\u0e02\u0e22\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19 user\/pass -->\n\t\t\t<div class=\"fcwm-staff-wrap\">\n\t\t\t\t<button type=\"button\" id=\"fcwm-staff-toggle\" class=\"fcwm-staff-toggle\">\n\t\t\t\t\tStaff \/ Administrator login <span class=\"fcwm-staff-caret\">\u25be<\/span>\n\t\t\t\t<\/button>\n\t\t\t\t<form id=\"fcwm-staff-form\" class=\"fcwm-staff-form\" method=\"post\" action=\"https:\/\/classroom.eng.chula.ac.th\/firstclass\/login\/\" style=\"display:none\">\n\t\t\t\t\t<input type=\"text\" name=\"log\" autocomplete=\"username\"\n\t\t\t\t\t       placeholder=\"Username\" class=\"fcwm-staff-input\">\n\t\t\t\t\t<input type=\"password\" name=\"pwd\" autocomplete=\"current-password\"\n\t\t\t\t\t       placeholder=\"Password\" class=\"fcwm-staff-input\">\n\t\t\t\t\t<input type=\"hidden\" name=\"redirect_to\" value=\"https:\/\/classroom.eng.chula.ac.th\/firstclass\/fcwm-dashboard\/\">\n\t\t\t\t\t<input type=\"hidden\" name=\"testcookie\" value=\"1\">\n\t\t\t\t\t<button type=\"submit\" class=\"fcwm-stu-btn fcwm-staff-submit\">Log in<\/button>\n\t\t\t\t<\/form>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t<style>\n\t\t.fcwm-student-panel{margin-top:8px;text-align:left}\n\t\t.fcwm-stu-card{border:1.5px solid #ead9c9;border-radius:14px;padding:20px 18px;background:#FFFDF8;\n\t\t\tbox-shadow:0 4px 16px rgba(120,60,60,.06);display:flex;flex-direction:column;gap:12px}\n\t\t.fcwm-stu-card-ok{border-color:#bfe3d4;background:#f4fbf8;align-items:center;text-align:center}\n\t\t.fcwm-stu-okicon{margin-bottom:-2px}\n\t\t.fcwm-stu-title{font-size:18px;font-weight:800;color:#3a2020;text-align:center;letter-spacing:-.2px}\n\t\t.fcwm-stu-sub{font-size:13px;color:#7a5555;text-align:center;line-height:1.5;margin-top:-4px}\n\t\t.fcwm-stu-input{background:#fff;border:2px solid #e2cdb8;border-radius:11px;color:#2a1d14;\n\t\t\tfont-size:20px;letter-spacing:2px;text-align:center;padding:14px;width:100%;box-sizing:border-box;\n\t\t\ttransition:border-color .15s,box-shadow .15s}\n\t\t.fcwm-stu-input:focus{border-color:#c0415a;box-shadow:0 0 0 4px rgba(192,65,90,.12);outline:none}\n\t\t.fcwm-stu-seat{font-size:15px;letter-spacing:1px}\n\t\t.fcwm-stu-session{font-size:13px;color:#0F6E56;font-weight:600;text-align:center;\n\t\t\tbackground:#eef8f3;border-radius:8px;padding:6px 10px}\n\t\t\/* v3.6.4 \u2014 check-in modal *\/\n\t\t.fcwm-stu-modal{position:fixed;inset:0;background:rgba(40,20,20,.45);z-index:99999;\n\t\t\tdisplay:none;align-items:center;justify-content:center;padding:20px}\n\t\t.fcwm-stu-modal.show{display:flex;animation:fcwmFade .18s ease}\n\t\t@keyframes fcwmFade{from{opacity:0}to{opacity:1}}\n\t\t.fcwm-stu-modal-box{background:#fff;border-radius:18px;max-width:380px;width:100%;\n\t\t\tpadding:26px 26px 20px;text-align:center;position:relative;box-shadow:0 20px 60px rgba(60,20,20,.3);\n\t\t\tborder-top:6px solid #0F6E56;animation:fcwmPop .2s ease}\n\t\t.fcwm-stu-modal-box.exam{border-top-color:#c0415a}\n\t\t.fcwm-stu-modal-box.ok{border-top-color:#0F6E56}\n\t\t@keyframes fcwmPop{from{transform:scale(.92);opacity:.4}to{transform:scale(1);opacity:1}}\n\t\t.fcwm-stu-modal-x{position:absolute;top:10px;right:14px;border:none;background:none;font-size:24px;\n\t\t\tline-height:1;color:#b9a99c;cursor:pointer;padding:2px 6px}\n\t\t.fcwm-stu-modal-x:hover{color:#6b5544}\n\t\t.fcwm-stu-modal-icon{font-size:40px;line-height:1;margin-bottom:6px}\n\t\t.fcwm-stu-modal-title{font-size:17px;font-weight:800;color:#2a1d14}\n\t\t.fcwm-stu-modal-box.exam .fcwm-stu-modal-title{color:#9a2f45}\n\t\t.fcwm-stu-modal-sub{font-size:20px;font-weight:800;color:#1a2744;margin:6px 0 14px;line-height:1.3}\n\t\t.fcwm-stu-modal-rows{text-align:left;border-top:1px solid #f0e6db;padding-top:12px}\n\t\t.fcwm-stu-modal-rows .r{display:flex;justify-content:space-between;gap:12px;font-size:14px;\n\t\t\tpadding:5px 0;color:#3a2a1e}\n\t\t.fcwm-stu-modal-rows .r span{color:#9a8475}\n\t\t.fcwm-stu-modal-rows .r b{font-weight:700;text-align:right}\n\t\t.fcwm-stu-modal-foot{font-size:12px;color:#a8978c;margin-top:14px}\n\t\t\/* v3.6.7\/v3.6.8 \u2014 class picker (bulletproof: \u0e01\u0e31\u0e19 theme CSS \u0e14\u0e31\u0e19 input\/label) *\/\n\t\t.fcwm-stu-picker-list{text-align:left;display:flex;flex-direction:column;gap:9px;margin:4px 0 4px}\n\t\t.fcwm-stu-pick{display:flex !important;align-items:flex-start;gap:10px;border:1.5px solid #ead9c9;border-radius:12px;\n\t\t\tpadding:12px 14px;cursor:pointer;transition:border-color .12s,background .12s;background:#fff;\n\t\t\twidth:100%;box-sizing:border-box;text-align:left;margin:0}\n\t\t.fcwm-stu-pick:hover{border-color:#e3b9c4}\n\t\t.fcwm-stu-pick.sel{border-color:#c0415a;background:#fdf4f6}\n\t\t.fcwm-stu-pick input[type=radio]{width:18px;height:18px;min-width:18px;max-width:18px;flex:0 0 18px;\n\t\t\tmargin:2px 0 0;padding:0;accent-color:#c0415a;-webkit-appearance:radio;appearance:auto;box-sizing:border-box}\n\t\t.fcwm-stu-pick-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left}\n\t\t.fcwm-stu-pick-subj{font-size:15px;font-weight:700;color:#2a1d14;line-height:1.35;word-break:break-word}\n\t\t.fcwm-stu-pick-x{display:inline-block;background:#fdf0f3;color:#9a2f45;border:1px solid #f5c0cb;\n\t\t\tborder-radius:7px;font-size:10px;font-weight:700;padding:1px 7px;vertical-align:middle}\n\t\t.fcwm-stu-pick-meta{font-size:12.5px;color:#7a5d4e;line-height:1.4;word-break:break-word}\n\t\t.fcwm-stu-picker-foot{display:flex;gap:10px;margin-top:16px}\n\t\t.fcwm-stu-picker-foot .fcwm-stu-btn{flex:1;width:auto}\n\t\t\/* v3.6.2 \u2014 \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e04\u0e32\u0e1a\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32 login *\/\n\t\t.fcwm-stu-classes{margin-bottom:16px}\n\t\t.fcwm-stu-cls-now{border:1.5px solid #bfe3d4;background:#f4fbf8;border-radius:14px;\n\t\t\tpadding:14px 16px;margin-bottom:12px;text-align:center}\n\t\t.fcwm-stu-cls-now.exam{border-color:#f3c9d2;background:#fdf4f6}\n\t\t.fcwm-stu-cls-tag{font-size:12px;font-weight:700;color:#0F6E56;letter-spacing:.02em}\n\t\t.fcwm-stu-cls-now.exam .fcwm-stu-cls-tag{color:#9a2f45}\n\t\t.fcwm-stu-cls-subj{font-size:17px;font-weight:700;color:#2a1d14;margin:5px 0 3px}\n\t\t.fcwm-stu-cls-meta{font-size:13px;color:#7a5d4e;line-height:1.5}\n\t\t.fcwm-stu-cls-soon-h{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;\n\t\t\tcolor:#a8978c;margin:0 0 6px 2px}\n\t\t.fcwm-stu-cls-soon{width:100%;border-collapse:collapse;font-size:13px}\n\t\t.fcwm-stu-cls-soon td{padding:7px 8px;border-bottom:1px solid #f0e6db;vertical-align:top;color:#3a2a1e}\n\t\t.fcwm-stu-cls-soon tr:last-child td{border-bottom:none}\n\t\t.fcwm-stu-cls-soon td.t{white-space:nowrap;color:#7a5d4e;font-size:12px;width:1%}\n\t\t.fcwm-stu-cls-soon .i{font-size:12px;color:#9a8475}\n\t\t.fcwm-stu-cls-soon .x{display:inline-block;background:#fdf0f3;color:#9a2f45;border:1px solid #f5c0cb;\n\t\t\tborder-radius:7px;font-size:10px;font-weight:600;padding:1px 7px}\n\t\t.fcwm-stu-msg{font-size:13px;min-height:16px;text-align:center}\n\t\t.fcwm-stu-msg.err{color:#c0415a}.fcwm-stu-msg.ok{color:#0F6E56}\n\t\t.fcwm-stu-btn{border:none;border-radius:11px;font-size:15px;font-weight:700;padding:13px;width:100%;\n\t\t\tcursor:pointer;transition:background .15s,opacity .15s;font-family:inherit}\n\t\t.fcwm-stu-btn-primary{background:#c0415a;color:#fff;box-shadow:0 4px 12px rgba(192,65,90,.28)}\n\t\t.fcwm-stu-btn-primary:hover{background:#9a2f45}\n\t\t.fcwm-stu-btn-ghost{background:#fff;color:#0F6E56;border:1.5px solid #bfe3d4}\n\t\t.fcwm-stu-btn-ghost:hover{background:#eef8f3}\n\t\t.fcwm-stu-kv{display:flex;justify-content:space-between;gap:14px;font-size:14px;color:#5a4040;\n\t\t\twidth:100%;max-width:260px}\n\t\t.fcwm-stu-kv span{color:#8a7060}\n\t\t.fcwm-stu-device{font-size:11px;color:#a8917f;text-align:center;margin-top:-2px}\n\t\t.fcwm-staff-wrap{margin-top:16px;text-align:center}\n\t\t.fcwm-staff-toggle{background:none;border:none;color:#9a8475;font-size:12.5px;cursor:pointer;\n\t\t\tpadding:6px 10px;border-radius:8px;font-family:inherit}\n\t\t.fcwm-staff-toggle:hover{color:#c0415a;background:#faf2ec}\n\t\t.fcwm-staff-caret{display:inline-block;transition:transform .18s}\n\t\t.fcwm-staff-caret.open{transform:rotate(180deg)}\n\t\t.fcwm-staff-form{display:flex;flex-direction:column;gap:9px;margin-top:10px;\n\t\t\tpadding:14px;border:1px solid #ecdcc9;border-radius:11px;background:#fff}\n\t\t.fcwm-staff-input{border:1.5px solid #e2cdb8;border-radius:9px;padding:10px 12px;font-size:14px;\n\t\t\twidth:100%;box-sizing:border-box;font-family:inherit}\n\t\t.fcwm-staff-input:focus{border-color:#c0415a;box-shadow:0 0 0 3px rgba(192,65,90,.1);outline:none}\n\t\t.fcwm-staff-submit{background:#5a4a3e;color:#fff;font-size:14px;padding:10px}\n\t\t.fcwm-staff-submit:hover{background:#3f332a}\n\t\t<\/style>\n\n\t\t<script>\n\t\t(function(){\n\t\t\tvar panel=document.querySelector('.fcwm-student-panel'); if(!panel) return;\n\t\t\tvar REST=panel.getAttribute('data-rest'), NONCE=panel.getAttribute('data-nonce');\n\t\t\tvar input=document.getElementById('fcwm-stu-input'), msg=document.getElementById('fcwm-stu-msg');\n\t\t\tvar submit=document.getElementById('fcwm-stu-submit'), logout=document.getElementById('fcwm-stu-logout');\n\t\t\tvar formB=document.getElementById('fcwm-stu-form'), actB=document.getElementById('fcwm-stu-active');\n\t\t\tfunction setMsg(t,c){ msg.textContent=t||''; msg.className='fcwm-stu-msg'+(c?' '+c:''); }\n\t\t\tfunction post(p,b){ return fetch(REST+p,{method:'POST',headers:{'Content-Type':'application\/json','X-FCWM-Nonce':NONCE},body:JSON.stringify(b||{})}).then(function(r){return r.json();}); }\n\t\t\tvar seatEl=document.getElementById('fcwm-stu-seat');\n\t\t\tvar nameEl=document.getElementById('fcwm-stu-name');\n\t\t\tvar lastEl=document.getElementById('fcwm-stu-lastname');\n\t\t\tvar sidVal='', seatVal='', nameVal='', lastVal='';\n\t\t\tfunction doCheckin(chosenId){\n\t\t\t\tsubmit.disabled=true; setMsg('Signing in...','');\n\t\t\t\tvar body={student_id:sidVal,seat_no:seatVal,student_name:nameVal,student_lastname:lastVal,_fcwm_nonce:NONCE};\n\t\t\t\tif(chosenId){ body.class_session_id=chosenId; }\n\t\t\t\tpost('checkin',body).then(function(d){\n\t\t\t\t\tsubmit.disabled=false;\n\t\t\t\t\tif(d&&d.ok){\n\t\t\t\t\t\tdocument.getElementById('fcwm-stu-sid').textContent=(d.student_id||sidVal)+(d.seat_no?' \u00b7 '+d.seat_no:'');\n\t\t\t\t\t\tif(d.hostname){ document.getElementById('fcwm-stu-host').textContent=d.hostname+(d.room_name?' ('+d.room_name+')':''); }\n\t\t\t\t\t\tvar se=document.getElementById('fcwm-stu-session'); if(se){ se.textContent=d.session||''; se.style.display=d.session?'':'none'; }\n\t\t\t\t\t\tformB.style.display='none'; actB.style.display=''; setMsg('','');\n\t\t\t\t\t\tshowClassModal(d);\n\t\t\t\t\t} else { setMsg('Sign-in failed. Please try again.','err'); }\n\t\t\t\t}).catch(function(){ submit.disabled=false; setMsg('Network error','err'); });\n\t\t\t}\n\t\t\tfunction checkin(){\n\t\t\t\tvar sid=(input.value||'').trim();\n\t\t\t\tif(!sid){ setMsg('Please enter your student ID','err'); input.focus(); return; }\n\t\t\t\tsidVal=sid; seatVal=(seatEl&&seatEl.value||'').trim();\n\t\t\t\tnameVal=(nameEl&&nameEl.value||'').trim(); lastVal=(lastEl&&lastEl.value||'').trim();\n\t\t\t\tsubmit.disabled=true; setMsg('Signing in...','');\n\t\t\t\t\/\/ v3.6.7 \u2014 \u0e40\u0e0a\u0e47\u0e04\u0e04\u0e32\u0e1a active \u0e01\u0e48\u0e2d\u0e19: \u0e16\u0e49\u0e32\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19 \u22652 \u0e04\u0e32\u0e1a \u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19\u0e40\u0e25\u0e37\u0e2d\u0e01\n\t\t\t\tpost('active-classes',{_fcwm_nonce:NONCE}).then(function(r){\n\t\t\t\t\tvar cls=(r&&r.classes)||[];\n\t\t\t\t\tif(cls.length>=2){ submit.disabled=false; setMsg('',''); showClassPicker(cls); }\n\t\t\t\t\telse { doCheckin(null); }\n\t\t\t\t}).catch(function(){ doCheckin(null); });\n\t\t\t}\n\t\t\tif(submit) submit.addEventListener('click',checkin);\n\t\t\tif(input)  input.addEventListener('keydown',function(e){ if(e.key==='Enter'){ e.preventDefault(); if(nameEl){nameEl.focus();}else{checkin();} } });\n\t\t\tif(nameEl) nameEl.addEventListener('keydown',function(e){ if(e.key==='Enter'){ e.preventDefault(); if(lastEl){lastEl.focus();}else{checkin();} } });\n\t\t\tif(lastEl) lastEl.addEventListener('keydown',function(e){ if(e.key==='Enter'){ e.preventDefault(); if(seatEl){seatEl.focus();}else{checkin();} } });\n\t\t\tif(seatEl) seatEl.addEventListener('keydown',function(e){ if(e.key==='Enter'){ e.preventDefault(); checkin(); } });\n\n\t\t\t\/\/ v3.6.4 \u2014 Modal \u0e41\u0e08\u0e49\u0e07\u0e04\u0e32\u0e1a\u0e2b\u0e25\u0e31\u0e07 check-in\n\t\t\tvar modal=document.getElementById('fcwm-stu-modal'), modalCd=null, modalTo=null;\n\t\t\tfunction closeModal(){ if(modal){ modal.classList.remove('show'); } if(modalCd){clearInterval(modalCd);} if(modalTo){clearTimeout(modalTo);} }\n\t\t\tfunction esc(s){ var d=document.createElement('div'); d.textContent=(s==null?'':String(s)); return d.innerHTML; }\n\t\t\tfunction showClassModal(d){\n\t\t\t\tif(!modal) return;\n\t\t\t\tvar icon=document.getElementById('fcwm-stu-modal-icon');\n\t\t\t\tvar title=document.getElementById('fcwm-stu-modal-title');\n\t\t\t\tvar sub=document.getElementById('fcwm-stu-modal-sub');\n\t\t\t\tvar rows=document.getElementById('fcwm-stu-modal-rows');\n\t\t\t\tvar box=modal.querySelector('.fcwm-stu-modal-box');\n\t\t\t\tvar c=d.class;\n\t\t\t\tif(c){\n\t\t\t\t\tvar isExam=(c.type==='exam');\n\t\t\t\t\tbox.className='fcwm-stu-modal-box'+(isExam?' exam':' class');\n\t\t\t\t\ticon.textContent=isExam?'\ud83d\udcdd':'\ud83d\udcda';\n\t\t\t\t\ttitle.textContent=isExam?'\u0e04\u0e38\u0e13\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e04\u0e32\u0e1a\u0e2a\u0e2d\u0e1a':'\u0e04\u0e38\u0e13\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e04\u0e32\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e19';\n\t\t\t\t\tsub.textContent=c.subject||'';\n\t\t\t\t\tvar html='';\n\t\t\t\t\tif(c.instructor) html+='<div class=\"r\"><span>\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c<\/span><b>'+esc(c.instructor)+'<\/b><\/div>';\n\t\t\t\t\tif(c.time)       html+='<div class=\"r\"><span>\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e04\u0e32\u0e1a<\/span><b>'+esc(c.time)+'<\/b><\/div>';\n\t\t\t\t\thtml+='<div class=\"r\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e34\u0e2a\u0e34\u0e15<\/span><b>'+esc(d.student_id||'')+(d.seat_no?' \u00b7 '+esc(d.seat_no):'')+'<\/b><\/div>';\n\t\t\t\t\tif(d.checked_in_at) html+='<div class=\"r\"><span>\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/span><b>'+esc(d.checked_in_at)+' \u0e19.<\/b><\/div>';\n\t\t\t\t\trows.innerHTML=html;\n\t\t\t\t} else {\n\t\t\t\t\tbox.className='fcwm-stu-modal-box ok';\n\t\t\t\t\ticon.textContent='\u2713';\n\t\t\t\t\ttitle.textContent='\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08';\n\t\t\t\t\tsub.textContent='';\n\t\t\t\t\tvar h2='<div class=\"r\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e34\u0e2a\u0e34\u0e15<\/span><b>'+esc(d.student_id||'')+(d.seat_no?' \u00b7 '+esc(d.seat_no):'')+'<\/b><\/div>';\n\t\t\t\t\tif(d.room_name) h2+='<div class=\"r\"><span>\u0e2b\u0e49\u0e2d\u0e07<\/span><b>'+esc(d.room_name)+'<\/b><\/div>';\n\t\t\t\t\tif(d.checked_in_at) h2+='<div class=\"r\"><span>\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/span><b>'+esc(d.checked_in_at)+' \u0e19.<\/b><\/div>';\n\t\t\t\t\trows.innerHTML=h2;\n\t\t\t\t}\n\t\t\t\tmodal.classList.add('show');\n\t\t\t\tvar n=10, cd=document.getElementById('fcwm-stu-modal-cd'); if(cd) cd.textContent=n;\n\t\t\t\tif(modalCd) clearInterval(modalCd); if(modalTo) clearTimeout(modalTo);\n\t\t\t\tmodalCd=setInterval(function(){ n--; if(cd) cd.textContent=(n>0?n:0); if(n<=0){clearInterval(modalCd);} },1000);\n\t\t\t\tmodalTo=setTimeout(closeModal,10000);\n\t\t\t}\n\t\t\tvar mx=document.getElementById('fcwm-stu-modal-x'); if(mx) mx.addEventListener('click',closeModal);\n\t\t\tif(modal) modal.addEventListener('click',function(e){ if(e.target===modal) closeModal(); });\n\n\t\t\t\/\/ v3.6.7 \u2014 Class picker (\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e32\u0e1a\u0e0b\u0e49\u0e2d\u0e19)\n\t\t\tvar picker=document.getElementById('fcwm-stu-picker'),\n\t\t\t    pickerList=document.getElementById('fcwm-stu-picker-list'),\n\t\t\t    pickerOk=document.getElementById('fcwm-stu-picker-ok'),\n\t\t\t    pickerCancel=document.getElementById('fcwm-stu-picker-cancel');\n\t\t\tfunction closePicker(){ if(picker) picker.classList.remove('show'); }\n\t\t\tfunction showClassPicker(cls){\n\t\t\t\tif(!picker||!pickerList) { doCheckin(null); return; }\n\t\t\t\tvar html='';\n\t\t\t\tfor(var i=0;i<cls.length;i++){\n\t\t\t\t\tvar c=cls[i], isExam=(c.type==='exam');\n\t\t\t\t\thtml+='<label class=\"fcwm-stu-pick'+(i===0?' sel':'')+'\">'+\n\t\t\t\t\t\t'<input type=\"radio\" name=\"fcwmpick\" value=\"'+c.id+'\"'+(i===0?' checked':'')+'>'+\n\t\t\t\t\t\t'<span class=\"fcwm-stu-pick-body\">'+\n\t\t\t\t\t\t  '<span class=\"fcwm-stu-pick-subj\">'+esc(c.subject)+(isExam?' <span class=\"fcwm-stu-pick-x\">'+'\u0e2a\u0e2d\u0e1a'+'<\/span>':'')+'<\/span>'+\n\t\t\t\t\t\t  '<span class=\"fcwm-stu-pick-meta\">'+(c.instructor?('\u0e2d.'+esc(c.instructor)+' \u00b7 '):'')+esc(c.time)+'<\/span>'+\n\t\t\t\t\t\t'<\/span><\/label>';\n\t\t\t\t}\n\t\t\t\tpickerList.innerHTML=html;\n\t\t\t\t\/\/ \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e17\u0e31\u0e49\u0e07\u0e43\u0e1a = \u0e40\u0e25\u0e37\u0e2d\u0e01 radio\n\t\t\t\tvar labels=pickerList.querySelectorAll('.fcwm-stu-pick');\n\t\t\t\tpickerList.addEventListener('change',function(){\n\t\t\t\t\tlabels.forEach(function(l){ l.classList.toggle('sel', l.querySelector('input').checked); });\n\t\t\t\t});\n\t\t\t\tpicker.classList.add('show');\n\t\t\t}\n\t\t\tif(pickerOk) pickerOk.addEventListener('click',function(){\n\t\t\t\tvar sel=pickerList.querySelector('input[name=\"fcwmpick\"]:checked');\n\t\t\t\tclosePicker(); doCheckin(sel?parseInt(sel.value,10):null);\n\t\t\t});\n\t\t\tif(pickerCancel) pickerCancel.addEventListener('click',function(){ closePicker(); setMsg('',''); });\n\t\t\tif(picker) picker.addEventListener('click',function(e){ if(e.target===picker) closePicker(); });\n\t\t\tif(logout) logout.addEventListener('click',function(){\n\t\t\t\tlogout.disabled=true;\n\t\t\t\tpost('checkout',{_fcwm_nonce:NONCE}).then(function(){ actB.style.display='none'; formB.style.display=''; if(input){input.value='';input.focus();} logout.disabled=false; setMsg('',''); }).catch(function(){ logout.disabled=false; });\n\t\t\t});\n\t\t\tvar tog=document.getElementById('fcwm-staff-toggle'), sf=document.getElementById('fcwm-staff-form');\n\t\t\tif(tog&&sf) tog.addEventListener('click',function(){\n\t\t\t\tvar open=sf.style.display!=='none'&&sf.style.display!=='';\n\t\t\t\tif(sf.style.display==='none'||sf.style.display===''){ \/* normalize *\/ }\n\t\t\t\tvar isHidden=(sf.style.display==='none');\n\t\t\t\tsf.style.display=isHidden?'flex':'none';\n\t\t\t\tvar c=tog.querySelector('.fcwm-staff-caret'); if(c) c.className='fcwm-staff-caret'+(isHidden?' open':'');\n\t\t\t\tif(isHidden){ var u=sf.querySelector('input[name=log]'); if(u) u.focus(); }\n\t\t\t});\n\t\t})();\n\t\t<\/script>\n\t\t                <\/div>\n            <\/div>\n            <style>\n            .fcwm-login-2col{display:flex;gap:26px;align-items:flex-start;justify-content:center;\n                flex-wrap:wrap;max-width:1000px;margin:0 auto}\n            .fcwm-login-col-left{flex:1 1 380px;max-width:460px;min-width:290px}\n            .fcwm-login-2col .fcwm-login-box{flex:0 1 430px;max-width:450px;min-width:300px}\n            @media(max-width:860px){\n                .fcwm-login-col-left{order:2;width:100%;max-width:450px}\n                .fcwm-login-2col .fcwm-login-box{order:1}\n            }\n            <\/style>\n            \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"fcwm-fullpage.php","meta":{"footnotes":""},"class_list":["post-641","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/pages\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":0,"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/pages\/641\/revisions"}],"wp:attachment":[{"href":"https:\/\/classroom.eng.chula.ac.th\/firstclass\/wp-json\/wp\/v2\/media?parent=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}