PageSourceSearch

https://pgslot77.art/enter-pgslot/

html pgslot77.art collected 2026-10-08 21:27:47 UTC 229,161 bytes, 4,597 lines download raw bytes

1    <!doctype html>
2    <html lang="th">
3
4    <head><meta charset="UTF-8">
4<script>if(navigator.userAgent.match(/MSIE|Internet Explorer/i)||navigator.userAgent.match(/Trident\/7\..*?rv:11/i)){var href=document.location.href;if(!href.match(/[?&]nowprocket/)){if(href.indexOf("?")==-1){if(href.indexOf("#")==-1){document.location.href=href+"?nowprocket=1"}else{document.location.href=href.replace("#","?nowprocket=1#")}}else{if(href.indexOf("#")==-1){document.location.href=href+"&nowprocket=1"}else{document.location.href=href.replace("#","&nowprocket=1#")}}}}</script>
4<script>class RocketLazyLoadScripts{constructor(){this.v="1.2.3",this.triggerEvents=["keydown","mousedown","mousemove","touchmove","touchstart","touchend","wheel"],this.userEventHandler=this._triggerListener.bind(this),this.touchStartHandler=this._onTouchStart.bind(this),this.touchMoveHandler=this._onTouchMove.bind(this),this.touchEndHandler=this._onTouchEnd.bind(this),this.clickHandler=this._onClick.bind(this),this.interceptedClicks=[],window.addEventListener("pageshow",t=>{this.persisted=t.persisted}),window.addEventListener("DOMContentLoaded",()=>{this._preconnect3rdParties()}),this.delayedScripts={normal:[],async:[],defer:[]},this.trash=[],this.allJQueries=[]}_addUserInteractionListener(t){if(document.hidden){t._triggerListener();return}this.triggerEvents.forEach(e=>window.addEventListener(e,t.userEventHandler,{passive:!0})),window.addEventListener("touchstart",t.touchStartHandler,{passive:!0}),window.addEventListener("mousedown",t.touchStartHandler),document.addEventListener("visibilitychange",t.userEventHandler)}_removeUserInteractionListener(){this.triggerEvents.forEach(t=>window.removeEventListener(t,this.userEventHandler,{passive:!0})),document.removeEventListener("visibilitychange",this.userEventHandler)}_onTouchStart(t){"HTML"!==t.target.tagName&&(window.addEventListener("touchend",this.touchEndHandler),window.addEventListener("mouseup",this.touchEndHandler),window.addEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.addEventListener("mousemove",this.touchMoveHandler),t.target.addEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"onclick","rocket-onclick"),this._pendingClickStarted())}_onTouchMove(t){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler),t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this._pendingClickFinished()}_onTouchEnd(t){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler)}_onClick(t){t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this.interceptedClicks.push(t),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),this._pendingClickFinished()}_replayClicks(){window.removeEventListener("touchstart",this.touchStartHandler,{passive:!0}),window.removeEventListener("mousedown",this.touchStartHandler),this.interceptedClicks.forEach(t=>{t.target.dispatchEvent(new MouseEvent("click",{view:t.view,bubbles:!0,cancelable:!0}))})}_waitForPendingClicks(){return new Promise(t=>{this._isClickPending?this._pendingClickFinished=t:t()})}_pendingClickStarted(){this._isClickPending=!0}_pendingClickFinished(){this._isClickPending=!1}_renameDOMAttribute(t,e,r){t.hasAttribute&&t.hasAttribute(e)&&(event.target.setAttribute(r,event.target.getAttribute(e)),event.target.removeAttribute(e))}_triggerListener(){this._removeUserInteractionListener(this),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",this._loadEverythingNow.bind(this)):this._loadEverythingNow()}_preconnect3rdParties(){let t=[];document.querySelectorAll("script[type=rocketlazyloadscript]").forEach(e=>{if(e.hasAttribute("src")){let r=new URL(e.src).origin;r!==location.origin&&t.push({src:r,crossOrigin:e.crossOrigin||"module"===e.getAttribute("data-rocket-type")})}}),t=[...new Map(t.map(t=>[JSON.stringify(t),t])).values()],this._batchInjectResourceHints(t,"preconnect")}
4async _loadEverythingNow(){this.lastBreath=Date.now(),this._delayEventListeners(this),this._delayJQueryReady(this),this._handleDocumentWrite(),this._registerAllDelayedScripts(),this._preloadAllScripts(),await this._loadScriptsFromList(this.delayedScripts.normal),await this._loadScriptsFromList(this.delayedScripts.defer),await this._loadScriptsFromList(this.delayedScripts.async);try{await this._triggerDOMContentLoaded(),await this._triggerWindowLoad()}catch(t){console.error(t)}window.dispatchEvent(new Event("rocket-allScriptsLoaded")),this._waitForPendingClicks().then(()=>{this._replayClicks()}),this._emptyTrash()}_registerAllDelayedScripts(){document.querySelectorAll("script[type=rocketlazyloadscript]").forEach(t=>{t.hasAttribute("data-rocket-src")?t.hasAttribute("async")&&!1!==t.async?this.delayedScripts.async.push(t):t.hasAttribute("defer")&&!1!==t.defer||"module"===t.getAttribute("data-rocket-type")?this.delayedScripts.defer.push(t):this.delayedScripts.normal.push(t):this.delayedScripts.normal.push(t)})}async _transformScript(t){return new Promise((await this._littleBreath(),navigator.userAgent.indexOf("Firefox/")>0||""===navigator.vendor)?e=>{let r=document.createElement("script");[...t.attributes].forEach(t=>{let e=t.nodeName;"type"!==e&&("data-rocket-type"===e&&(e="type"),"data-rocket-src"===e&&(e="src"),r.setAttribute(e,t.nodeValue))}),t.text&&(r.text=t.text),r.hasAttribute("src")?(r.addEventListener("load",e),r.addEventListener("error",e)):(r.text=t.text,e());try{t.parentNode.replaceChild(r,t)}catch(i){e()}}:async e=>{function r(){t.setAttribute("data-rocket-status","failed"),e()}try{let i=t.getAttribute("data-rocket-type"),n=t.getAttribute("data-rocket-src");t.text,i?(t.type=i,t.removeAttribute("data-rocket-type")):t.removeAttribute("type"),t.addEventListener("load",function r(){t.setAttribute("data-rocket-status","executed"),e()}),t.addEventListener("error",r),n?(t.removeAttribute("data-rocket-src"),t.src=n):t.src="data:text/javascript;base64,"+window.btoa(unescape(encodeURIComponent(t.text)))}catch(s){r()}})}async _loadScriptsFromList(t){let e=t.shift();return e&&e.isConnected?(await this._transformScript(e),this._loadScriptsFromList(t)):Promise.resolve()}_preloadAllScripts(){this._batchInjectResourceHints([...this.delayedScripts.normal,...this.delayedScripts.defer,...this.delayedScripts.async],"preload")}_batchInjectResourceHints(t,e){var r=document.createDocumentFragment();t.forEach(t=>{let i=t.getAttribute&&t.getAttribute("data-rocket-src")||t.src;if(i){let n=document.createElement("link");n.href=i,n.rel=e,"preconnect"!==e&&(n.as="script"),t.getAttribute&&"module"===t.getAttribute("data-rocket-type")&&(n.crossOrigin=!0),t.crossOrigin&&(n.crossOrigin=t.crossOrigin),t.integrity&&(n.integrity=t.integrity),r.appendChild(n),this.trash.push(n)}}),document.head.appendChild(r)}_delayEventListeners(t){let e={};function r(t,r){!function t(r){!e[r]&&(e[r]={originalFunctions:{add:r.addEventListener,remove:r.removeEventListener},eventsToRewrite:[]},r.addEventListener=function(){arguments[0]=i(arguments[0]),e[r].originalFunctions.add.apply(r,arguments)},r.removeEventListener=function(){arguments[0]=i(arguments[0]),e[r].originalFunctions.remove.apply(r,arguments)});function i(t){return e[r].eventsToRewrite.indexOf(t)>=0?"rocket-"+t:t}}(t),e[t].eventsToRewrite.push(r)}function i(t,e){let r=t[e];Object.defineProperty(t,e,{get:()=>r||function(){},set(i){t["rocket"+e]=r=i}})}r(document,"DOMContentLoaded"),r(window,"DOMContentLoaded"),r(window,"load"),r(window,"pageshow"),r(document,"readystatechange"),i(document,"onreadystatechange"),i(window,"onload"),i(window,"onpageshow")}_delayJQueryReady(t){let e;function r(r){if(r&&r.fn&&!t.allJQueries.includes(r)){r.fn.ready=r.fn.init.prototype.ready=function(e){return t.domReadyFired?e.bind(document)(r):document.addEventListener("rocket-DOMContentLoaded",()=>e.bind(document)(r)),r([])};let i=r.fn.on;r.fn.on=r.fn.init.prototype.on=function(){if(this[0]===window){function t(t){return t.split(" ").map(t=>"load"===t||0===t.indexOf("load.")?"rocket-jquery-load":t).join(" ")}"string"==typeof arguments[0]||arguments[0]instanceof String?arguments[0]=t(arguments[0]):"object"==typeof arguments[0]&&Object.keys(arguments[0]).forEac
4h(e=>{let r=arguments[0][e];delete arguments[0][e],arguments[0][t(e)]=r})}return i.apply(this,arguments),this},t.allJQueries.push(r)}e=r}r(window.jQuery),Object.defineProperty(window,"jQuery",{get:()=>e,set(t){r(t)}})}async _triggerDOMContentLoaded(){this.domReadyFired=!0,await this._littleBreath(),document.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),window.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),document.dispatchEvent(new Event("rocket-readystatechange")),await this._littleBreath(),document.rocketonreadystatechange&&document.rocketonreadystatechange()}async _triggerWindowLoad(){await this._littleBreath(),window.dispatchEvent(new Event("rocket-load")),await this._littleBreath(),window.rocketonload&&window.rocketonload(),await this._littleBreath(),this.allJQueries.forEach(t=>t(window).trigger("rocket-jquery-load")),await this._littleBreath();let t=new Event("rocket-pageshow");t.persisted=this.persisted,window.dispatchEvent(t),await this._littleBreath(),window.rocketonpageshow&&window.rocketonpageshow({persisted:this.persisted})}_handleDocumentWrite(){let t=new Map;document.write=document.writeln=function(e){let r=document.currentScript;r||console.error("WPRocket unable to document.write this: "+e);let i=document.createRange(),n=r.parentElement,s=t.get(r);void 0===s&&(s=r.nextSibling,t.set(r,s));let a=document.createDocumentFragment();i.setStart(a,0),a.appendChild(i.createContextualFragment(e)),n.insertBefore(a,s)}}async _littleBreath(){Date.now()-this.lastBreath>45&&(await this._requestAnimFrame(),this.lastBreath=Date.now())}async _requestAnimFrame(){return document.hidden?new Promise(t=>setTimeout(t)):new Promise(t=>requestAnimationFrame(t))}_emptyTrash(){this.trash.forEach(t=>t.remove())}static run(){let t=new RocketLazyLoadScripts;t._addUserInteractionListener(t)}}RocketLazyLoadScripts.run();</script>
4
5        
6        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
7		<meta name="google-site-verification" content="eSj6mpCAKpBm4fIzx4jbpXm6KtDJxGOjcJC--gvQ8mg" />
8        <link rel="profile" href="https://gmpg.org/xfn/11">
9
10        <!-- Google Tag Manager -->
11        
11<script type="rocketlazyloadscript">
vendor: 611 bytes, lines 11-25
11
12            (function (w, d, s, l, i) {
13                w[l] = w[l] || [];
14                w[l].push({
15                    'gtm.start': new Date().getTime(),
16                    event: 'gtm.js'
17                });
18                var f = d.getElementsByTagName(s)[0],
19                    j = d.createElement(s),
20                    dl = l != 'dataLayer' ? '&l=' + l : '';
21                j.async = true;
22                j.src =
23                    'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
24                f.parentNode.insertBefore(j, f);
25            })(window, document, 'script', 'dataLayer', '
25GTM-PBGKBBXT
vendor: 12 bytes, lines 25-26
25');
26        
26</script>
26
27        <!-- End Google Tag Manager -->
28
29
30        <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
31
32	<!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ -->
33	<title>ทางเข้า pgslot - pgslot77.art</title><link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto%20Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic&#038;display=swap" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto%20Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic&#038;display=swap" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto%20Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic&#038;display=swap" /></noscript>
34	<link rel="canonical" href="https://pgslot77.art/enter-pgslot/" />
35	<meta property="og:locale" content="th_TH" />
36	<meta property="og:type" content="article" />
37	<meta property="og:title" content="ทางเข้า pgslot - pgslot77.art" />
38	<meta property="og:url" content="https://pgslot77.art/enter-pgslot/" />
39	<meta property="og:site_name" content="pgslot77.art" />
40	<meta property="article:modified_time" content="2026-09-07T03:04:28+00:00" />
41	<meta name="twitter:card" content="summary_large_image" />
42	
42<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/pgslot77.art\/enter-pgslot\/","url":"https:\/\/pgslot77.art\/enter-pgslot\/","name":"ทางเข้า pgslot - pgslot77.art","isPartOf":{"@id":"https:\/\/pgslot77.art\/#website"},"datePublished":"2021-05-27T06:52:15+00:00","dateModified":"2026-09-07T03:04:28+00:00","breadcrumb":{"@id":"https:\/\/pgslot77.art\/enter-pgslot\/#breadcrumb"},"inLanguage":"th","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pgslot77.art\/enter-pgslot\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/pgslot77.art\/enter-pgslot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pgslot77.art\/"},{"@type":"ListItem","position":2,"name":"ทางเข้า pgslot"}]},{"@type":"WebSite","@id":"https:\/\/pgslot77.art\/#website","url":"https:\/\/pgslot77.art\/","name":"pgslot77.art","description":"สล็อตออนไลน์ Pgslot","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pgslot77.art\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"th"}]}</script>
42
43	<!-- / Yoast SEO plugin. -->
44
45
46<link rel='dns-prefetch' href='//ajax.googleapis.com' />
47<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
48<link rel='dns-prefetch' href='//cdn.jsdelivr.net' />
49<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' />
50<link rel="alternate" type="application/rss+xml" title="pgslot77.art &raquo; ฟีด" href="https://pgslot77.art/feed/" />
51<link rel="alternate" type="application/rss+xml" title="pgslot77.art &raquo; ฟีดความเห็น" href="https://pgslot77.art/comments/feed/" />
52<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://pgslot77.art/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fpgslot77.art%2Fenter-pgslot%2F" />
53<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://pgslot77.art/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fpgslot77.art%2Fenter-pgslot%2F&#038;format=xml" />
54<style id="wp-img-auto-sizes-contain-inline-css">
55img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
56/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
57</style>
58<link rel='stylesheet' id='formidable-css' href='https://pgslot77.art/wp-content/plugins/formidable/css/formidableforms.css?ver=910551' media='all' />
59<style id="wp-emoji-styles-inline-css">
60
61	img.wp-smiley, img.emoji {
62		display: inline !important;
63		border: none !important;
64		box-shadow: none !important;
65		height: 1em !important;
66		width: 1em !important;
67		margin: 0 0.07em !important;
68		vertical-align: -0.1em !important;
69		background: none !important;
70		padding: 0 !important;
71	}
72/*# sourceURL=wp-emoji-styles-inline-css */
73</style>
74<style id="classic-theme-styles-inline-css">
75/*! This file is auto-generated */
76.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
77/*# sourceURL=/wp-includes/css/classic-themes.min.css */
78</style>
79
80<style id="global-styles-inline-css">
81:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
81--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
81.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
82/*# sourceURL=global-styles-inline-css */
83</style>
84
85<link rel='stylesheet' id='seed-social-css' href='https://pgslot77.art/wp-content/plugins/seed-social/style.css?ver=2021.02' media='all' />
86<link rel='stylesheet' id='gds-style-css' href='https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/style.css?ver=7.1.3' media='all' />
87<link rel='stylesheet' id='main-style-css' href='https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/css/style.min.css?ver=7.1.3' media='all' />
88<link rel='stylesheet' id='wow-style-css' href='https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/css/animate.css?ver=7.1.3' media='all' />
89<link rel='stylesheet' id='lightslider-style-css' href='https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/vendor/light-slider/css/lightslider.min.css?ver=7.1.3' media='all' />
90<link rel='stylesheet' id='swiper-style-css' href='https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.css?ver=7.1.3' media='all' />
91<link rel='stylesheet' id='elementor-frontend-css' href='https://pgslot77.art/wp-content/plugins/elementor/assets/css/frontend-lite.min.css?ver=3.21.8' media='all' />
92<style id="elementor-frontend-inline-css">
93@-webkit-keyframes ha_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes ha_fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes ha_zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes ha_zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@-webkit-keyframes ha_rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1}}@keyframes ha_rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1}}@-webkit-keyframes ha_bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}40%,43%{-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1);-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05);-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0) scaleY(.95);transform:translate3d(0,0,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes ha_bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}40%,43%{-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1);-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05);-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);
93-webkit-transform:translate3d(0,0,0) scaleY(.95);transform:translate3d(0,0,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@-webkit-keyframes ha_bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1}}@keyframes ha_bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1}}@-webkit-keyframes ha_flipInX{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}}@keyframes ha_flipInX{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}}@-webkit-keyframes ha_flipInY{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}}@keyframes ha_flipInY{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}}@-webkit-keyframes ha_swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);
93transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}}@keyframes ha_swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}}@-webkit-keyframes ha_slideInDown{0%{visibility:visible;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes ha_slideInDown{0%{visibility:visible;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-webkit-keyframes ha_slideInUp{0%{visibility:visible;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes ha_slideInUp{0%{visibility:visible;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes ha_slideInLeft{0%{visibility:visible;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes ha_slideInLeft{0%{visibility:visible;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@-webkit-keyframes ha_slideInRight{0%{visibility:visible;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes ha_slideInRight{0%{visibility:visible;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.ha_fadeIn{-webkit-animation-name:ha_fadeIn;animation-name:ha_fadeIn}.ha_zoomIn{-webkit-animation-name:ha_zoomIn;animation-name:ha_zoomIn}.ha_rollIn{-webkit-animation-name:ha_rollIn;animation-name:ha_rollIn}.ha_bounce{-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-name:ha_bounce;animation-name:ha_bounce}.ha_bounceIn{-webkit-animation-name:ha_bounceIn;animation-name:ha_bounceIn;-webkit-animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:.75s;animation-duration:calc(var(--animate-duration)*.75)}.ha_flipInX,.ha_flipInY{-webkit-animation-name:ha_flipInX;animation-name:ha_flipInX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ha_flipInY{-webkit-animation-name:ha_flipInY;animation-name:ha_flipInY}.ha_swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:ha_swing;animation-name:ha_swing}.ha_slideInDown{-webkit-animation-name:ha_slideInDown;animation-name:ha_slideInDown}.ha_slideInUp{-webkit-animation-name:ha_slideInUp;animation-name:ha_slideInUp}.ha_slideInLeft{-webkit-animation-name:ha_slideInLeft;animation-name:ha_slideInLeft}.ha_slideInRight{-webkit-animation-name:ha_slideInRight;animation-name:ha_slideInRight}.ha-css-transform-yes{-webkit-transition-duration:var(--ha-tfx-transition-duration, .2s);transition-duration:var(--ha-tfx-transition-duration, .2s);-webkit-transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transform:translate(var(--ha-tfx-translate-x, 0),var(--ha-tfx-translate-y, 0)) scale(var(--ha-tfx-scale-x, 1),var(--ha-tfx-scale-y, 1)) skew(var(--ha-tfx-skew-x, 0),var(--ha-tfx-skew-y, 0)) rotateX(var(--ha-tfx-rotate-x, 0)) rotateY(var(--ha-tfx-rotate-y, 0)) rotateZ(var(--ha-tfx-rotate-z, 0));transform:translate(var(--ha-tfx-translate-x, 0),var(--ha-tfx-translate-y, 0)) scale(var(--ha-tfx-scale-x, 1),var(--ha-tfx-scale-y, 1)) skew(var(--ha-tfx-skew-x, 0),var(--ha-tfx-skew-y, 0)) rotateX(var(--ha-tfx-rotate-x, 0)) rotateY(var(--ha-tfx-rotate-y, 0)) rotateZ(var(--ha-tfx-rotate-z, 0))}.ha-css-transform-yes:hover{-webkit-transform:translate(var(--ha-tfx-translate-x-hover, var(--ha-tfx-translate-x, 0)),var(--ha-tfx-translate-y-hover, var(--ha-tfx-translate-y, 0))) scale(var(--ha-tfx-scale-x-hover, var(--ha-tfx-scale-x, 1)),var(--ha-tfx-scale-y-hover, var(--ha-tfx-scale-y, 1))) skew(var(--ha-tfx-skew-x-hover, var(--ha-tfx-skew-x, 0)),var(--ha-tfx-skew-y-hover, var(--ha-tfx-skew-y, 0))) rotateX(var(--ha-tfx-rotate-x-hover, var(--ha-tfx-rotate-x, 0))) rotateY(var(--ha-tfx-rotate-y-hover, var(--ha-tfx-rotate-y, 0))) rotateZ(var(--ha-tfx-rotate-z-hover, var(--ha-tfx-rotate-z, 0)));transform:translate(var(--ha-tfx-translate-x-hover, var(--ha-tfx-translate-x, 0)),var(--ha-tfx-translate-y-hover, var(--ha-tfx-translate-y, 0))) scale(var(--ha-tfx-scale-x-hover, var(--ha-tfx-scale-x, 1)),var(--ha-tfx-scale-y-hover, var(--ha-tfx-scale-y, 1))) skew(var(--ha-tfx-skew-x-hover, var(--ha-tfx-skew-x, 0)),var(--ha-tfx-skew-y-hover, var(--ha-tfx-skew-y, 0))) rotateX(var(--ha-tfx-rotate-x-hover, var(--ha-tfx-rotate-x, 0))) rotateY(var(--ha-tfx-rotate-y-hover, var(--ha-tfx-rotate-y, 0))) rotateZ(var(--ha-tfx-rotate-z-hover, var(--ha-tfx-rotate-z, 0)))}.happy-addon>.elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word}.happy-addon>.elementor-widget-container,.happy-addon>.elementor-widget-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.happy-addon p:empty{display:none}.happy-addon .elementor-inline-editing{min-height:auto!important}.happy-addon-pro img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-bg-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-bg-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-advanced-tooltip-enable{position:relative;cursor:pointer;--ha-tooltip-arrow-color:black;--ha-tooltip-arrow-distance:0}.ha-advanced-tooltip-enable .ha-advanced-tooltip-content{position:absolute;z-index:999;display:none;padding:5px 0;width:120px;height:auto;border-radius:6px;background-color:#000;color:#fff;text-align:center;opacity:0}
93.ha-advanced-tooltip-enable .ha-advanced-tooltip-content::after{position:absolute;border-width:5px;border-style:solid;content:""}.ha-advanced-tooltip-enable .ha-advanced-tooltip-content.no-arrow::after{visibility:hidden}.ha-advanced-tooltip-enable .ha-advanced-tooltip-content.show{display:inline-block;opacity:1}.ha-advanced-tooltip-enable.ha-advanced-tooltip-top .ha-advanced-tooltip-content,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-top .ha-advanced-tooltip-content{top:unset;right:0;bottom:calc(101% + var(--ha-tooltip-arrow-distance));left:0;margin:0 auto}.ha-advanced-tooltip-enable.ha-advanced-tooltip-top .ha-advanced-tooltip-content::after,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-top .ha-advanced-tooltip-content::after{top:100%;right:unset;bottom:unset;left:50%;border-color:var(--ha-tooltip-arrow-color) transparent transparent transparent;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-advanced-tooltip-enable.ha-advanced-tooltip-bottom .ha-advanced-tooltip-content,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-bottom .ha-advanced-tooltip-content{top:calc(101% + var(--ha-tooltip-arrow-distance));right:0;bottom:unset;left:0;margin:0 auto}.ha-advanced-tooltip-enable.ha-advanced-tooltip-bottom .ha-advanced-tooltip-content::after,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-bottom .ha-advanced-tooltip-content::after{top:unset;right:unset;bottom:100%;left:50%;border-color:transparent transparent var(--ha-tooltip-arrow-color) transparent;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-advanced-tooltip-enable.ha-advanced-tooltip-left .ha-advanced-tooltip-content,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-left .ha-advanced-tooltip-content{top:50%;right:calc(101% + var(--ha-tooltip-arrow-distance));bottom:unset;left:unset;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-advanced-tooltip-enable.ha-advanced-tooltip-left .ha-advanced-tooltip-content::after,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-left .ha-advanced-tooltip-content::after{top:50%;right:unset;bottom:unset;left:100%;border-color:transparent transparent transparent var(--ha-tooltip-arrow-color);-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-advanced-tooltip-enable.ha-advanced-tooltip-right .ha-advanced-tooltip-content,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-right .ha-advanced-tooltip-content{top:50%;right:unset;bottom:unset;left:calc(101% + var(--ha-tooltip-arrow-distance));-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-advanced-tooltip-enable.ha-advanced-tooltip-right .ha-advanced-tooltip-content::after,body[data-elementor-device-mode=tablet] .ha-advanced-tooltip-enable.ha-advanced-tooltip-tablet-right .ha-advanced-tooltip-content::after{top:50%;right:100%;bottom:unset;left:unset;border-color:transparent var(--ha-tooltip-arrow-color) transparent transparent;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-top .ha-advanced-tooltip-content{top:unset;right:0;bottom:calc(101% + var(--ha-tooltip-arrow-distance));left:0;margin:0 auto}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-top .ha-advanced-tooltip-content::after{top:100%;right:unset;bottom:unset;left:50%;border-color:var(--ha-tooltip-arrow-color) transparent transparent transparent;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-bottom .ha-advanced-tooltip-content{top:calc(101% + var(--ha-tooltip-arrow-distance));right:0;bottom:unset;left:0;margin:0 auto}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-bottom .ha-advanced-tooltip-content::after{top:unset;right:unset;bottom:100%;left:50%;border-color:transparent transparent var(--ha-tooltip-arrow-color) transparent;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-left .ha-advanced-tooltip-content{top:50%;right:calc(101% + var(--ha-tooltip-arrow-distance));bottom:unset;left:unset;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-left .ha-advanced-tooltip-content::after{top:50%;right:unset;bottom:unset;left:100%;border-color:transparent transparent transparent var(--ha-tooltip-arrow-color);-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-right .ha-advanced-tooltip-content{top:50%;right:unset;bottom:unset;left:calc(101% + var(--ha-tooltip-arrow-distance));-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body[data-elementor-device-mode=mobile] .ha-advanced-tooltip-enable.ha-advanced-tooltip-mobile-right .ha-advanced-tooltip-content::after{top:50%;right:100%;bottom:unset;left:unset;border-color:transparent var(--ha-tooltip-arrow-color) transparent transparent;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}body.elementor-editor-active .happy-addon.ha-gravityforms .gform_wrapper{display:block!important}.ha-scroll-to-top-wrap.ha-scroll-to-top-hide{display:none}.ha-scroll-to-top-wrap.edit-mode,.ha-scroll-to-top-wrap.single-page-off{display:none!important}.ha-scroll-to-top-button{position:fixed;right:15px;bottom:15px;z-index:9999;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;
93-webkit-justify-content:center;justify-content:center;width:50px;height:50px;border-radius:50px;background-color:#5636d1;color:#fff;text-align:center;opacity:1;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-scroll-to-top-button i{color:#fff;font-size:16px}.ha-scroll-to-top-button:hover{background-color:#e2498a}
94/*# sourceURL=elementor-frontend-inline-css */
95</style>
96<link rel='stylesheet' id='swiper-css' href='https://pgslot77.art/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=8.4.5' media='all' />
97<link rel='stylesheet' id='elementor-post-4626-css' href='https://pgslot77.art/wp-content/uploads/elementor/css/post-4626.css?ver=1778328334' media='all' />
98<link rel='stylesheet' id='font-awesome-css' href='https://pgslot77.art/wp-content/plugins/elementor/assets/lib/font-awesome/css/font-awesome.min.css?ver=4.7.0' media='all' />
99<link rel='stylesheet' id='elementor-global-css' href='https://pgslot77.art/wp-content/uploads/elementor/css/global.css?ver=1778328337' media='all' />
100<link rel='stylesheet' id='happy-icons-css' href='https://pgslot77.art/wp-content/plugins/happy-elementor-addons/assets/fonts/style.min.css?ver=3.11.0' media='all' />
101
102<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
102<script type="rocketlazyloadscript" id=" jquery-js" data-rocket-src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 102
102
103<script type="rocketlazyloadscript" id=" formload-js" data-rocket-src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 103
103
104<script type="rocketlazyloadscript" id="bootstrap-js" data-rocket-src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/js/bootstrap.bundle.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 104
104
105<script type="rocketlazyloadscript" id="lightslider-JS-js" data-rocket-src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/vendor/light-slider/js/lightslider.js?ver=7.1.3"></script>
vendor: 1 bytes, line 105
105
106<script type="rocketlazyloadscript" id="main-script-js" data-rocket-src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/js/script.js?ver=7.1.3"></script>
vendor: 1 bytes, line 106
106
107<script type="rocketlazyloadscript" id="swiper-js-js" data-rocket-src="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 107
107
108<script type="rocketlazyloadscript" id="wow-js-js" data-rocket-src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/js/wow.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 108
108
109<script type="rocketlazyloadscript" id="sweetalert2-js" data-rocket-src="https://cdn.jsdelivr.net/npm/sweetalert2@11?ver=7.1.3"></script>
vendor: 1 bytes, line 109
109
110<script type="rocketlazyloadscript" id="spark-md5-js" data-rocket-src="https://cdn.jsdelivr.net/npm/[email protected]/spark-md5.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 110
110
111<script type="rocketlazyloadscript" id="jquery-core-js" data-rocket-src="https://pgslot77.art/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 111
111
112<script type="rocketlazyloadscript" id="jquery-migrate-js" data-rocket-src="https://pgslot77.art/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
112
113<link rel="https://api.w.org/" href="https://pgslot77.art/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://pgslot77.art/wp-json/wp/v2/pages/69" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://pgslot77.art/xmlrpc.php?rsd" />
114<meta name="generator" content="WordPress 7.1.3" />
115<link rel='shortlink' href='https://pgslot77.art/?p=69' />
116<meta property="og:url" content="https://pgslot77.art/enter-pgslot" />
117		<meta property="og:type" content="article" />
118		<meta property="og:title" content="ทางเข้า pgslot" />
119		<meta property="og:description" content="" />
120		<meta property="og:image" content="" />
120<script type="rocketlazyloadscript">document.documentElement.className += " js";</script>
120
121<meta name="generator" content="Elementor 3.21.8; features: e_optimized_assets_loading, e_optimized_css_loading, e_font_icon_svg, additional_custom_breakpoints, e_lazyload; settings: css_print_method-external, google_font-enabled, font_display-swap">
122			<style>
123				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
124				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
125					background-image: none !important;
126				}
127				@media screen and (max-height: 1024px) {
128					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
129					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
130						background-image: none !important;
131					}
132				}
133				@media screen and (max-height: 640px) {
134					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
135					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
136						background-image: none !important;
137					}
138				}
139			</style>
140			<link rel="icon" href="https://pgslot77.art/wp-content/uploads/2021/05/favicon-pgslot77.png" sizes="32x32" />
141<link rel="icon" href="https://pgslot77.art/wp-content/uploads/2021/05/favicon-pgslot77.png" sizes="192x192" />
142<link rel="apple-touch-icon" href="https://pgslot77.art/wp-content/uploads/2021/05/favicon-pgslot77.png" />
143<meta name="msapplication-TileImage" content="https://pgslot77.art/wp-content/uploads/2021/05/favicon-pgslot77.png" />
144    </head>
145
146
147    
147<script type="rocketlazyloadscript" data-rocket-type="text/javascript" data-rocket-src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js?ver=5.4.4">
148</script>
vendor: 1 bytes, line 148
148
149<script type="rocketlazyloadscript" data-rocket-type="text/javascript"
150    data-rocket-src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js?ver=5.4.4"></script>
150 
151
152	
152<script type="rocketlazyloadscript">
153jQuery(document).ready(function($) {
154	
155	    $("#game1-wrap-login").click(function (e) {
156            e.stopPropagation();
157            $('.form-login-cat-wrap').removeClass('show-form-login-wrap');
158    $('.form-login-cat-wrap').addClass('show-form-login-wrap');
159    $('.text-head-logo-popp').addClass('hide-logo-wrap');
160    $('#game2-wrap-login').addClass('hide-logo-wrap');
161    $('.back-select-logo-wrap').addClass('show-logo-back');
162    $('#formapi-login').attr('action', 'https://pgslot77.slot-auto.com/?phone_number=phone_number&password=password');
163        });
164        $("#game2-wrap-login").click(function (e) {
165            e.stopPropagation();
166            $('.form-login-cat-wrap').removeClass('show-form-login-wrap');
167    $('.form-login-cat-wrap').addClass('show-form-login-wrap');
168    $('.text-head-logo-popp').addClass('hide-logo-wrap');
169    $('#game1-wrap-login').addClass('hide-logo-wrap');
170    $('.back-select-logo-wrap').addClass('show-logo-back');
171    $('#formapi-login').attr('action', 'https://game.pg77slot.com/?phone_number=phone_number&password=password');
172        });
173
174
175        $(".back-select-logo-wrap").click(function (e) {
176            e.stopPropagation();
177    $('.form-login-cat-wrap').removeClass('show-form-login-wrap');
178    $('#game1-wrap-login').removeClass('hide-logo-wrap');
179    $('#game2-wrap-login').removeClass('hide-logo-wrap');
180    $('.text-head-logo-popp').removeClass('hide-logo-wrap');
181    $('.back-select-logo-wrap').removeClass('show-logo-back');
182    $('#formapi-login').attr('action', 'https://pgslot77.slot-auto.com/?phone_number=phone_number&password=password');
183        });
184	
185	
186	
187	  $('#lightSlider').lightSlider({
188        item: 4,
189        loop: true,
190        auto: true,
191        easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
192        speed: 2000,
193        responsive: [{
194                breakpoint: 800,
195                settings: {
196                    item: 5,
197                    slideMove: 1,
198                    slideMargin: 6,
199                    loop: true                    
200                }
201            },
202            {
203                breakpoint: 480,
204                settings: {
205                    item: 4,
206                    slideMove: 1,
207                    loop: true
208                }
209            }
210        ]
211    });
212
213
214    var item_img_load
215        var i_img_load
216        var img_arr
217        var arr_img_load = $(".monitor-page-sp .list-upload-wrap")
218        var arr_count = 0
219        for (arr_count; arr_count < arr_img_load.length; arr_count++) {
220            img_arr = arr_img_load[arr_count].getElementsByTagName("input")[0].value.split(",")
221            i_img_load = 0
222            for (i_img_load; i_img_load < img_arr.length; i_img_load++) {
223                item_img_load = '<div class="item"><figure class="frame">' +
224                    '<a href="' + img_arr[i_img_load] + '" target="_blank"><img src="' + img_arr[i_img_load] +
225                    '"></a></figure></div>';
226                $(".monitor-page-sp .list-upload-wrap .frm_file_container")[arr_count].insertAdjacentHTML(
227                    'beforeend', item_img_load);
228            }
229        }
230        var term = 'แอดเครดิตเรียบร้อยแล้ว';
231        $('.list-upload-wrap .status-ckeck').html(function () {
232            return $(this).html().replace(new RegExp(term + "(?=[^>]*<)", "ig"),
233                "<span class='green-txt-wrap'>$&</span>");
234        });
235        var term2 = 'ลูกค้าทำครบตามเงื่อนไข';
236        $('.list-upload-wrap .status-ckeck').html(function () {
237            return $(this).html().replace(new RegExp(term2 + "(?=[^>]*<)", "ig"),
238                "<span class='green-txt-wrap'>$&</span>");
239        });
240        var term3 = 'ลูกค้าทำไม่ครบตามเงื่อนไข';
241        $('.list-upload-wrap .status-ckeck').html(function () {
242            return $(this).html().replace(new RegExp(term3 + "(?=[^>]*<)", "ig"),
243                "<span class='red-txt-wrap'>$&</span>");
244        });
245        $('#upload_file').ajaxForm(function (data) {
246            if (data) {
247                $('#field_aecui').val(data);
248            } else {
249                alert('กรุณาอัพโหลดรูปภาพให้ถูกต้อง');
250            }
251        });
252        $(".bttn-click-wrap").click(function () {
253            $('#random-cre').click();
254        });
255	
256	
257	
258	    
259
260
261
262});
263</script>
263
264				<style>
265					.button-fixed-r{
266						z-index:999;
267					}
268		.seo-section .seo-section-item .box-seo-1 {
269     width: 100%; 
270}
271			.seo-section .seo-section-item .box-seo-2 {
272    width: 100%; 
273    padding: 1rem;
274}
275			    #show-wrap-login{
276        display:none;
277    }
278    .show-form-login-wrap{
279        display:block !important;
280    }
281    .logo-popup{
282        cursor: pointer;
283    }
284    .logo-popup img{
285        filter: drop-shadow(0px 10px 5px rgba(0, 0, 0, 0.25));
286    }
287    .logo-popup-sec{
288        cursor: pointer;
289    }
290    .logo-popup-sec img{
291        filter: drop-shadow(0px 10px 5px rgba(0, 0, 0, 0.25));
292    }
293   
294    .hide-logo-wrap{
295        display:none;
296    }
297    .back-select-logo-wrap{
298        color:#fff;
299        text-align:right;
300        display:none;
301        cursor: pointer;
302		font-size:1.4rem;
303    }
304    .show-logo-back{
305        display:block !important;
306    }
307    .back-select-logo-wrap i{
308        margin-right:10px;
309    }
310			.text-head-logo-popp{
311    font-size:1.8rem;
312    text-shadow: 2px 2px 4px #000000;
313}
314.text-head-logo-poppsec{
315    font-size:1.8rem;
316    text-shadow: 2px 2px 4px #000000;
317}
318.logo-popup {
319	padding:30px 15px;
320    position:relative;
321    z-index: 1;
322}
323.logo-popup.-opa:before {
324    position: absolute;
325    top: 15px;
326    right: 5px;
327    width: auto;
328    height: auto;
329    display: block;
330    content: 'HOT';
331    background: red;
332    color: #fff;
333    font-size: 1.2rem;
334    display: inline-block;
335    z-index: -1;
336    padding: 1px 8px;
337    border-radius: 3px;
338    animation: opaaaa .3s infinite;
339}
340.logo-popup.-opa img{
341    animation: rotatingimg .3s infinite;
342}
343@keyframes rotatingimg {
344    0% {
345        transform: translate(0%, 0%) rotate(0deg);
346    }
347    50% {
348        transform: translate(0%, -2%) rotate(5deg);
349    }
350    75% {
351        transform: translate(0%, -2%) rotate(-5deg);
352    }
353    100% {
354        transform: translate(0%, 0%) rotate(0deg);
355    }
356}
357.logo-popup-sec.-opa img{
358    animation: rotatingimg .3s infinite;
359}
360.logo-popup-sec.-opa:before {
361    position: absolute;
362    top: 20px;
363    right: 5px;
364    width: auto;
365    height: auto;
366    display: block;
367    content: 'HOT';
368    background: red;
369    color: #fff;
370    font-size: 1.3rem;
371    display: inline-block;
372    z-index: -1;
373    padding: 1px 8px;
374    border-radius: 3px;
375    animation: opaaaa .3s infinite;
376}
377@keyframes opaaaa {
378  0%    { opacity: 0; }
379  100%  { opacity: 1; }
380}
381
382.logo-popup-sec {
383    margin: 0 20px;
384    position:relative;
385    z-index: 1;
386}
387
388
389    .modal-body.-login {
390        padding: 2rem;
391    }
392
393			  .modal-body.-login .logo-popup {
394        width: 50%;
395    }
396    .modal-body.-login .logo-popup img {
397        width: 100%;
398        height: auto;
399        display: block;
400        margin: 0 auto;
401    }
402    .modal-body.-login .logo-popup-sec img {
403        width: 100%;
404        height: auto;
405        display: block;
406        margin: 0 auto;
407    }
408
409    .modal-body.-login label {
410        color: #fff;
411		font-size:1.5rem;
412    }
413
414    .modal-body.-login input {
415      font-weight: 500;
416    font-size: 1.5rem;
417    }
418
419    .modal-body.-login .btn-primary {
420        margin: 30px auto;
421    padding: 3px 60px;
422    display: block;
423    font-size: 1.6rem;
424    border-radius: 30px;
425    background: linear-gradient(180deg, #ac0000 0%, #f47200 100%);
426    border: 5px solid #ffe2ae;
427    }
428			.modal-content.-login{
429    background: #910000;
430				border:4px solid #ffdc7a;
431				border-radius:20px;
432}
433			@media only screen and (max-width: 600px) {
434				.bg-mobile{
435					display:block !important;
436					position:fixed;
437					top: 0;
438				}
439				.bg-mobile img{
440					width:100%;
441					height:100vh;
442				}
443				.modal-body.-login {
444    padding: 1rem;
445}
446				.logo-popup {
447    padding: 30px 10px;
448				}
449				.text-head-logo-popp {
450    font-size: 1.6rem;
451}
452				.modal-body.-login label {
453    font-size: 1.4rem;
454}
455				.modal-body.-login .btn-primary {
456    font-size: 1.4rem;
457    border: 3px solid #ffe2ae;
458}
459				.modal-body.-login input {
460    font-size: 1.4rem;
461}
462				
463			}
464		</style>
465		
466		 <body class="wp-singular page-template page-template-page-templates page-template-enter-pgslot page-template-page-templatesenter-pgslot-php page page-id-69 wp-theme-Theme-re-pgslot77 elementor-default elementor-kit-4626 elementor-page elementor-page-69" >
467
468<!--     <body class="wp-singular page-template page-template-page-templates page-template-enter-pgslot page-template-page-templatesenter-pgslot-php page page-id-69 wp-theme-Theme-re-pgslot77 elementor-default elementor-kit-4626 elementor-page elementor-page-69" style="background-image: url(https://pgslot77.art/wp-content/uploads/2023/10/PGSLOT77-ตรีมฮัลโลวีน.jpg);
469    background-size: 100% 100%;
470    background-attachment: fixed;"> -->
471
472
473    <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 473-474
473
474    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
474GTM-PBGKBBXT
vendor: 99 bytes, lines 474-476
474" height="0" width="0"
475            style="display:none;visibility:hidden"></iframe></noscript>
476    
476<!-- End Google Tag Manager (noscript) -->
477
478    
479    
480
481
482
483    		
484<!-- 		<div class="bg-mobile d-none">
485			<img src="https://pgslot77.art/wp-content/uploads/2023/10/PGSLOT77-ตรีมฮัลโลวีน-bg.jpg" >
486		</div> -->
487			 
488<!-- 			 <div class="nav-aba-wrap bg-black">
489	<div class="item-pc">
490            <div class="game-aba-item w-100 d-flex flex-wrap align-items-center justify-content-around">     		
491				              </div>
492		</div>
493
494        <div class="item-mobile">
495            <div class="container">
496                <div class="head-brand-flex w-100 d-flex align-items-center">
497                    <div id="responsive-brand" class="brand-mobile" style="padding-left:15px;"> 					
498						    			
499                    </div>
500                </div>
501            </div>
502        </div>
503    </div> -->
504
505		<div class="modal fade" id="exampleModal2222" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
506        aria-hidden="true">
507        <div class="modal-dialog modal-dialog-centered" role="document">
508            <div class="modal-content -login">
509                <div class="modal-body -login">
510                <div class="back-select-logo-wrap">
511                <i class="fas fa-long-arrow-left"></i>ย้อนกลับ
512                </div>
513                <div class="wrap-flex-logo-pop w-100 d-flex flex-wrap align-items-center justify-content-center">
514                    <p class="text-head-logo-popp w-100 text-center" style="color:#fff;">กรุณาเลือกเว็บที่ต้องการเข้าสู่ระบบ</p>
515                <div class="logo-popup" href="https://pgslot77.slot-auto.com/login">
516                        <img src="https://pgslot77.art/wp-content/uploads/2022/11/pg771.png"
517                            alt="">
518                    </div>
519<!--                     <div class="logo-popup -opa" id="game2-wrap-login">
520                        <img src="https://pgslot77.com/wp-content/uploads/2022/11/pg772.png"
521                            alt="">
522                    </div> -->
523                </div>
524                  <div class="form-login-cat-wrap" id="show-wrap-login">
525                    <form action="https://pgslot77.slot-auto.com/?phone_number=phone_number&password=password"
526                        method="get" id="formapi-login">
527                        <div class="form-group">
528                            <label for="phonenumber">กรอกเบอร์โทรศัพท์</label>
529                            <input type="tel" class="form-control" name="phone_number" placeholder="กรอกเบอร์โทรศัพท์"
530                                id="phonelogin">
531                        </div>
532                        <div class="form-group">
533                            <label for="password">กรอกรหัสผ่าน</label>
534                            <input type="password" class="form-control" name="password" placeholder="กรอกรหัสผ่าน"
535                                id="passlogin">
536                        </div>
537                        <button type="submit" class="btn btn-primary button-login"
538                            id="loginbtnmain">เข้าสู่ระบบ</button>
539                    </form>
540                    </div>                    
541                </div>
542            </div>
543        </div>
544    </div>
545		
546		
547			<div class="modal fade" id="exampleModal3333" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
548        aria-hidden="true">
549        <div class="modal-dialog modal-dialog-centered" role="document">
550            <div class="modal-content -login">
551                <div class="modal-body -login">
552                
553                <div class="wrap-flex-logo-pop w-100 d-flex flex-wrap align-items-center justify-content-center">
554                    <p class="text-head-logo-popp w-100 text-center" style="color:#fff;">กรุณาเลือกเว็บที่ต้องการสมัครสมาชิก</p>
555                <div class="logo-popup">
556					<a href="https://pgslot77.slot-auto.com/register" target="_blank">
557                        <img src="https://pgslot77.art/wp-content/uploads/2022/11/pg771.png"
558                            alt="">
559						</a>
560                    </div>
561<!--                     <div class="logo-popup -opa">
562						<a href="https://game.pg77slot.com/register" target="_blank">
563                        <img src="https://pgslot77.com/wp-content/uploads/2022/11/pg772.png"
564                            alt="">
565						</a>
566                    </div> -->
567                </div>
568                </div>
569            </div>
570        </div>
571    </div>
572	    
573<!--     <div class="bg-head" style="background-image:none;"> -->
574		<div class="bg-head">
575
576        <nav class="main-nav">
577            <div class="container">
578                <div class="nav-item d-flex justify-content-center align-items-center">
579                    <ul class="main-menu">
580                        <li><a href="https://pgslot77.art"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/index-menu.png" alt=""></a></li>
581                        <li><a href="#" onclick="ModalRegister.open(); return false;"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/register-menu.png" alt=""></a></li>
582                        <li><a href="#" onclick="ModalLogin.open(); return false;"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/login-menu.png" alt=""></a></li>
583                        <li><a href="https://pgslot77.art/promotion/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/promotion-menu.png" alt=""></a></li>
584                        <li><a href="https://pgslot77.art/roadmap/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/roadmap-menu.png" alt=""></a></li>
585                    </ul>
586                    <figure class="main-logo">
587                        <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/logo-pgslot77-main.png">
588                    </figure>
589                    <ul class="main-menu-1">
590                        <li><a href="https://pgslot77.art/guide/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/guide-menu.png" alt=""></a></li>
591                        <li><a href="https://pgslot77.art/enter-pgslot/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/enter-menu.png" alt="ทางเข้า pg slot"></a></li>
592                        <li><a href="https://cutt.ly/wcpg77"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/contact-menu.png" alt=""></a></li>
593                        <li><a href="https://pgslot77.art/category/slot/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/article-menu.png" alt="pg สล็อต"></a></li>
594<!--                         <li><a href="https://www.movie87hd.com/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/movie-menu.png" alt=""></a></li> -->
595						<li><a href="https://pgslot77.art/activity/"><img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/menu/activity-menu.png" alt="กิจกรรม"></a></li>
596                    </ul>
597                </div>
598                <div class="interract-button">
599                    <div class="interract-button-item d-flex align-items-center justify-content-center">
600                        <div class="box-interract-button">
601                            <a data-toggle="modal" data-target="#RoadmapModal">
602                                <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/gold-head.png">
603                            </a>
604                        </div>
605                        <div class="box-interract-button">
606                            <a href="https://cutt.ly/frp77" target="_blank">
607                                <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/creditfree-head.png">
608                            </a>
609                        </div>
610                    </div>
611                </div>
612            </div>
613        </nav>
614
615        
616         
617
618        <nav class="main-nav-mobile">
619            <div class="container">
620                <div class="nav-item-mobile d-flex align-items-center justify-content-between">
621                    <figure class="ham">
622                        <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Ham.png">
623                    </figure>
624                    <figure class="main-logo-mobile">
625                        <a href="https://pgslot77.art">
626                            <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/logo-pgslot77-main.png">
627                        </a>
628                    </figure>
629                    <figure class="main-line">
630                        <a href="https://cutt.ly/wcpg77">
631                            <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Line-1.png">
632                        </a>
633                    </figure>
634                </div>
635            </div>
636            <div class="interract-button-mobile">
637                <div class="interract-button-item-mobile d-flex align-items-center justify-content-center">
638                    <div class="box-interract-button-mobile">
639                        <a data-toggle="modal" data-target="#RoadmapModal">
640                            <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/gold-head.png">
641                        </a>
642                    </div>
643                    <div class="box-interract-button-mobile">
644                        <a href="https://cutt.ly/frp77">
645                            <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/creditfree-head.png">
646                        </a>
647                    </div>
648                </div>
649            </div>
650        </nav>
651
652        
653                
654
655        <!-- Nav-Mobile -->
656        <div class="nav-mobile-box">
657            <div class="mobile-wrap-menu">
658                <ul class="menu-mobile">
659                    <li><a href="https://pgslot77.art">หน้าแรก</a></li>
660<!--                     <li><a data-toggle="modal" data-target="#exampleModal3333" style="cursor:pointer;">สมัครสมาชิก</a></li> -->
661<!--                     <li><a data-toggle="modal" data-target="#exampleModal2222" style="cursor:pointer;">เข้าสู่ระบบ</a></li> -->
662					 <li><a href="#" onclick="ModalRegister.open(); return false;">สมัครสมาชิก</a></li>
663					  <li><a href="#" onclick="ModalLogin.open(); return false;">เข้าสู่ระบบ</a></li>
664                    <li><a href="https://pgslot77.art/promotion/">โปรโมชั่นและกิจกรรม</a></li>
665                    <li><a href="https://pgslot77.art/download/">ดาวน์โหลด</a></li>
666                    <li><a href="https://pgslot77.art/guide/">คู่มือการใช้งาน</a></li>
667                    <li><a href="https://pgslot77.art/enter-pgslot/">ทางเข้า PGSLOT</a></li>
668                    <li><a href="https://pgslot77.art/category/slot/">Slot</a></li>
669                    <li><a href="https://cutt.ly/wcpg77">ติดต่อเรา</a></li>					
670					<li><a href="https://pgslot77.art/activity/">กิจกรรม</a></li>
671                    <li><a href="https://www.movie87hd.com/">ดูหนังออนไลน์</a></li>
672                </ul>
673            </div>
674        </div>
675        <!-- End Nav-Mobile -->
676
677    </div>
678               
679
680            <!-- Modal Roadmap -->
681    <div class="modal fade" id="RoadmapModal" tabindex="-1" role="dialog" aria-labelledby="RoadmapModalLabel"
682        aria-hidden="true">
683        <div class="modal-dialog modal-dialog-centered" role="document">
684            <div class="modal-content">
685                <div class="modal-body">
686                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
687                        <span aria-hidden="true">X</span>
688                    </button>
689                    <div class="box-code-free">
690                        <figure class="thumb">
691                            <img src="https://pgslot77.art/wp-content/uploads/2026/04/Dream-PGslot77-Roadmap-17-4-69.jpg" alt="">
692                        </figure> 
693                        <div class="box-desc-code-free">
694                            <p class="p2"><b>ROAD MAP พาตะลุยสะสมทอง </b>🪙<b><br />
695แจก 8 ด่าน ด่านละ 7 ทอง<br />
696สะสมไว้หมุนกงล้อลุ้นรับเงินสดและทองคำฟรี!</b><b></b></p>
697<p class="p2">🕹ด่านที่ 1 Add line หลัก (ต้อนรับ)<br />
698<a href="https://cutt.ly/wcpg77">https://cutt.ly/wcpg77</a></p>
699<p class="p2">🕹ด่านที่ 2 Add line สำรอง<br />
700<a href="https://cutt.ly/frp77">https://cutt.ly/frp77</a></p>
701<p class="p2">ด่านที่3 กดติดตาม Threads<br />
702<a href="https://cutt.ly/threadspg77">https://cutt.ly/threadspg77</a></p>
703<p class="p2">🕹ด่านที่ 4 กดไลก์ กดติดตาม ทัก Inbox เพจ<br />
704<a href="https://cutt.ly/facebookpg77">https://cutt.ly/facebookpg77</a></p>
705<p class="p2">🕹ด่านที่ 5 เข้ากลุ่มลับ Telegram<br />
706<a href="https://cutt.ly/telepg77">https://cutt.ly/telepg77</a></p>
707<p class="p2">🕹ด่านที่ 6 ติดตาม TIKTOK ดูคลิปรับโค้ด</p>
708<p><a href="https://cutt.ly/tiktokpg77">https://cutt.ly/tiktokpg77</a></p>
709<p class="p2"><span class="s2">🕹</span><span class="s3">ด่านที่</span> 7 <span class="s3">กดติดตาม</span> X<br />
710<a href="https://cutt.ly/Xxpgx77">https://cutt.ly/Xxpgx77</a></p>
711<p><span class="s2">🕹</span><span class="s3">ด่านที่</span> 8 <span class="s3">กดติดตาม</span> instagram<br />
712<a href="https://cutt.ly/igps77">https://cutt.ly/igps77</a></p>
713                        </div>
714                    </div>
715                </div>
716            </div>
717        </div>
718    </div>
719
720
721
722
723    
724      
725
726
727    <div class="menu-bottom">
728        <div class="menu-bottom-item d-flex justify-content-center align-items-center">
729            <div class="box-menu-bottom">
730                <a href="#" onclick="ModalLogin.open(); return false;">
731                    <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Button 2-3.png">
732                </a>
733            </div>
734            <div class="box-menu-bottom">
735                <a href="https://pgslot77.art/promotion/">
736                    <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Button 2-4.png">
737                </a>
738            </div>
739            <div class="box-menu-bottom">
740                <a href="#" onclick="ModalRegister.open(); return false;">
741                    <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Button 2-1.gif">
742                </a>
743            </div>
744            <div class="box-menu-bottom">
745                <a href="https://pgslot77.art/download/">
746                    <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Button 2-5.png">
747                </a>
748            </div>
749            <div class="box-menu-bottom">
750                <a href="https://cutt.ly/wcpg77">
751                    <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/Button 2-6.png">
752                </a>
753            </div>
754        </div>
755    </div>
756
757    			 
758	 
759<!-- ============================================================
760     MODAL REGISTER — CSS (Scoped · ไม่ทับ CSS ของ project ปลายทาง)
761     ทุก rule ถูก scope ด้วย #modal-register
762     ============================================================ -->
763<style>
764  /* ===== RESET & BOX MODEL ===== */
765  #modal-register *,
766  #modal-register *::before,
767  #modal-register *::after {
768    box-sizing: border-box;
769  }
770
771  /* ===== THEME — แก้สีปุ่ม/ตัวหนังสือ modal ที่นี่ที่เดียว ===== */
772  #modal-register,
773  #mr-modal-rules,
774  #mr-modal-success {
775    --mr-primary: #ff5600;
776    /* สีพื้นหลังปุ่มหลัก */
777    --mr-btn-text: #ffffff;
778    /* สีตัวหนังสือปุ่ม */
779    --mr-btn-back: #c20000;
780    /* สีพื้นหลังปุ่มย้อนกลับ */
781    --mr-btn-back-text: #ffffff;
782    /* สีตัวหนังสือปุ่มย้อนกลับ */
783    --mr-text-main: #ffffff;
784    /* ตัวหนังสือทั่วไปใน modal */
785    --mr-text-accent: #ff5600;
786    /* ลิงก์ / ข้อความเน้น */
787    --mr-step-icon: #ffffff;
788    /* สี icon step progress (วงกลมด้านบน) */
789    --mr-modal-bg: #000000b8;
790    /* พื้นหลัง modal */
791    --mr-modal-border: #ff5600;
792    /* ขอบ modal */
793    --mr-close: #e50b00;
794    /* ปุ่มปิด (X) */
795    --mr-error: #ef4444;
796    /* ข้อความ error */
797    --mr-input-text: #ffffff;
798    /* ตัวหนังสือใน input */
799    --mr-input-placeholder: #ffffff;
800    /* placeholder */
801    --mr-input-border: #a5a5a58c;
802    /* ขอบ input */
803    --mr-font: "Prompt", sans-serif;
804    --mr-bg-input: rgba(0, 0, 0, .56);
805    --mr-bg-dark: rgb(0, 0, 0);
806  }
807
808  /* ===== FONT ===== */
809  #modal-register {
810    font-family: var(--mr-font);
811    font-size: 16px;
812  }
813
814  /* ===== BASE ELEMENTS ===== */
815  #modal-register p {
816    margin: 0;
817    font-size: 16px;
818  }
819
820  #modal-register h1 {
821    font-size: 32px;
822    font-weight: 600;
823    margin-bottom: 1rem;
824  }
825
826  #modal-register h5,
827  #modal-register h6 {
828    font-weight: 600;
829  }
830
831  #modal-register figure {
832    margin: 0;
833  }
834
835  #modal-register a {
836    text-decoration: none !important;
837    font-size: 16px;
838    font-weight: 400;
839    color: var(--mr-text-accent);
840  }
841
842  #modal-register :where(p, a, span, h1, h2, h3, h4, h5, h6) {
843    font-weight: 500;
844  }
845
846  /* ===== CLOSE BUTTON ===== */
847  #modal-register .modal-header .close span,
848  #modal-register .modal-header .close i {
849    color: var(--mr-close) !important;
850  }
851
852  /* ===== BOOTSTRAP MODAL CONTENT DARK THEME ===== */
853  #modal-register .modal-content,
854  #mr-modal-rules .modal-content,
855  #mr-modal-success .modal-content {
856    background: var(--mr-modal-bg);
857    border: 2px solid var(--mr-modal-border);
858    border-radius: 16px;
859    color: var(--mr-text-main);
860    font-family: var(--mr-font);
861  }
862
863  #modal-register .modal-body {
864    padding: 1rem 1.5rem 2rem;
865    overflow-y: auto;
866    -webkit-overflow-scrolling: touch;
867  }
868
869  /* ===== LAYOUT ===== */
870  #modal-register .form-layout {
871    display: flex;
872    justify-content: center;
873  }
874
875  #modal-register .from-register {
876    width: 100%;
877    margin: auto;
878  }
879
880  #modal-register .logo {
881    width: clamp(200px, 40vw, 400px);
882    margin: 0 auto;
883  }
884
885  #modal-register .logo img {
886    width: 100%;
887    height: auto;
888  }
889
890  #modal-register .form {
891    margin: 0 auto;
892    color: var(--mr-text-main);
893  }
894
895  /* ===== INPUTS ===== */
896  #modal-register input {
897    width: 100%;
898    padding: 10px;
899    border-radius: 100px;
900    border: 1px solid var(--mr-input-border);
901    background-color: var(--mr-bg-input);
902    color: var(--mr-input-text);
903    font-family: var(--mr-font);
904    font-size: 16px;
905  }
906
907  #modal-register input:focus-visible {
908    outline: none;
909  }
910
911  #modal-register input:focus {
912    outline: none;
913  }
914
915  #modal-register ::placeholder {
916    color: var(--mr-input-placeholder);
917    opacity: 1;
918  }
919
920  /* ===== BUTTONS ===== */
921  #modal-register .btn-text-one,
922  #mr-modal-success .btn-text-one {
923    color: var(--mr-btn-text);
924  }
925
926  #modal-register .btn-next,
927  #modal-register .btn-forget {
928    width: 100%;
929    padding: 10px;
930    border-radius: 100px;
931    border: 1px solid rgba(0, 0, 0, .56);
932    background: var(--mr-primary);
933    color: var(--mr-btn-text);
934    margin-bottom: 10px;
935    cursor: pointer;
936    font-family: var(--mr-font);
937    font-size: 16px;
938  }
939
940  #modal-register .btn-next {
941    margin: 1rem 0;
942  }
943
944  #modal-register .btn-primary {
945    background: var(--mr-primary);
946    color: var(--mr-btn-text);
947    border: none;
948    border-radius: 100px;
949    width: 50%;
950    padding: 10px;
951    font-weight: 600;
952    cursor: pointer;
953    font-family: var(--mr-font);
954    font-size: 16px;
955    position: relative;
956  }
957
958  #modal-register .btn-primary:hover,
959  #modal-register .btn-primary:focus {
960    background: var(--mr-primary) !important;
961    color: var(--mr-btn-text);
962  }
963
964  #modal-register .btn-primary.disabled,
965  #modal-register .btn-primary:disabled {
966    background: var(--mr-primary) !important;
967    color: var(--mr-btn-text);
968    cursor: not-allowed;
969  }
970
971  #modal-register .btn-primary.disabled::after,
972  #modal-register .btn-primary:disabled::after {
973    content: "";
974    position: absolute;
975    inset: 0;
976    background-color: var(--mr-bg-dark);
977    opacity: 0.3;
978    border-radius: 100px;
979  }
980
981  #modal-register button[disabled] {
982    background-color: var(--mr-primary) !important;
983    cursor: not-allowed;
984    border: none;
985    color: var(--mr-btn-text);
986    position: relative;
987  }
988
989  #modal-register button[disabled]::after {
990    content: "";
991    position: absolute;
992    inset: 0;
993    background-color: var(--mr-bg-dark);
994    opacity: 0.5;
995    z-index: 1;
996    border-radius: 100px;
997  }
998
999  #modal-register .btn-back {
1000    background: var(--mr-btn-back);
1001    color: var(--mr-btn-back-text);
1002    border: none;
1003    border-radius: 100px;
1004    width: 50%;
1005    padding: 10px;
1006    font-weight: 600;
1007    cursor: pointer;
1008    font-family: var(--mr-font);
1009    font-size: 16px;
1010  }
1011
1012  #modal-register .btn-login {
1013    width: 100%;
1014    padding: 10px;
1015    border-radius: 100px;
1016    border: 1px solid rgba(0, 0, 0, .56);
1017    background: var(--mr-primary);
1018    color: var(--mr-btn-text);
1019    margin-bottom: 10px;
1020    cursor: pointer;
1021    font-family: var(--mr-font);
1022    font-size: 16px;
1023  }
1024
1025  /* ===== STEPS / PROGRESS ===== */
1026  #modal-register .progress-container {
1027    position: relative;
1028    display: flex;
1029    justify-content: space-between;
1030    align-items: center;
1031    max-width: 600px;
1032    margin: 40px auto;
1033  }
1034
1035  #modal-register .progress-line {
1036    position: absolute;
1037    top: 16px;
1038    left: 15%;
1039    width: 70%;
1040    height: 7px;
1041    background: rgba(255, 255, 255, .3);
1042    z-index: 0;
1043  }
1044
1045  #modal-register .progress-bar {
1046    height: 100%;
1047    width: 0%;
1048    background: var(--mr-primary);
1049    transition: width 0.3s ease;
1050  }
1051
1052  #modal-register .step-item {
1053    display: flex;
1054    flex-direction: column;
1055    align-items: center;
1056    flex: 1;
1057    z-index: 1;
1058  }
1059
1060  #modal-register .circle {
1061    width: 40px;
1062    height: 40px;
1063    border-radius: 50%;
1064    background: var(--mr-primary);
1065    color: var(--mr-step-icon);
1066    display: flex;
1067    align-items: center;
1068    justify-content: center;
1069    font-weight: bold;
1070    margin-bottom: 8px;
1071  }
1072
1073  #modal-register .circle .icon {
1074    display: flex;
1075    align-items: center;
1076    justify-content: center;
1077    line-height: 1;
1078    color: var(--mr-step-icon);
1079  }
1080
1081  #modal-register .circle .icon svg,
1082  #modal-register .circle .icon img {
1083    display: block;
1084  }
1085
1086  /* #modal-register .circle .icon svg path,
1087  #modal-register .circle .icon svg g path {
1088    fill: currentColor;
1089  } */
1090
1091  #modal-register .circle .icon svg path[stroke] {
1092    stroke: currentColor;
1093  }
1094
1095  #modal-register .step-item.active-progress .circle,
1096  #modal-register .step-item.done .circle {
1097    background: var(--mr-primary);
1098    color: var(--mr-step-icon);
1099  }
1100
1101  #modal-register .step-item.active-progress .circle .icon,
1102  #modal-register .step-item.done .circle .icon {
1103    color: var(--mr-step-icon);
1104  }
1105
1106  #modal-register .step-item p {
1107    font-size: 16px;
1108    margin: 0;
1109    color: var(--mr-text-accent);
1110  }
1111
1112  #modal-register .step {
1113    display: none;
1114  }
1115
1116  #modal-register .step.active {
1117    display: block;
1118  }
1119
1120  /* ===== FORM FIELDS ===== */
1121  #modal-register .error {
1122    color: var(--mr-error);
1123    font-size: 14px;
1124    margin-top: 4px;
1125  }
1126
1127  #modal-register .phone-number,
1128  #modal-register .password {
1129    margin-top: 1rem;
1130  }
1131
1132  #modal-register .password-container {
1133    margin-top: 1rem;
1134  }
1135
1136  #modal-register .password-wrapper {
1137    position: relative;
1138  }
1139
1140  #modal-register .toggle-button {
1141    position: absolute;
1142    top: 50%;
1143    right: 10px;
1144    transform: translateY(-50%);
1145    cursor: pointer;
1146    color: #666;
1147  }
1148
1149  #modal-register .eye-icon {
1150    width: 20px;
1151    height: 20px;
1152    color: var(--mr-text-main);
1153  }
1154
1155  /* ===== CHECKBOX ===== */
1156  #modal-register .mr-terms-row {
1157    display: flex;
1158    align-items: center;
1159    justify-content: center;
1160    gap: 10px;
1161    width: 100%;
1162    background: none;
1163    border: none;
1164    margin: 1rem 0;
1165  }
1166
1167  #modal-register .mr-terms-row p,
1168  #modal-register .mr-terms-row a {
1169    font-size: clamp(13px, 1.5vw, 16px);
1170    font-weight: 400;
1171  }
1172
1173  #modal-register .mr-terms-row a {
1174    color: var(--mr-text-accent);
1175    text-decoration: underline !important;
1176  }
1177
1178  #modal-register .checkbox-container {
1179    display: inline-block;
1180    position: relative;
1181    padding-left: 25px;
1182    margin-bottom: 20px;
1183    cursor: pointer;
1184    font-size: 16px;
1185    user-select: none;
1186  }
1187
1188  #modal-register .custom-checkbox {
1189    position: absolute;
1190    opacity: 0;
1191    cursor: pointer;
1192    height: 0;
1193    width: 0;
1194  }
1195
1196  #modal-register .checkmark {
1197    position: absolute;
1198    top: 0;
1199    left: 0;
1200    height: 23px;
1201    width: 23px;
1202    border-radius: 4px;
1203    transition: background-color 0.3s;
1204    border: 1px solid var(--mr-text-main);
1205  }
1206
1207  #modal-register .checkmark::after {
1208    content: "";
1209    position: absolute;
1210    display: none;
1211    left: 7px;
1212    top: 1px;
1213    width: 8px;
1214    height: 15px !important;
1215    border: solid white;
1216    border-width: 0 3px 3px 0;
1217    transform: rotate(45deg);
1218  }
1219
1220  #modal-register .custom-checkbox:checked~.checkmark {
1221    background-color: var(--mr-primary);
1222    box-shadow: 0 3px 7px rgba(33, 150, 243, .3);
1223  }
1224
1225  #modal-register .custom-checkbox:checked~.checkmark::after {
1226    display: block;
1227  }
1228
1229  /* ===== LOGIN LINK ===== */
1230  #modal-register .login-link {
1231    display: flex;
1232    align-items: center;
1233    justify-content: center;
1234    gap: 10px;
1235    width: 100%;
1236    margin: 1rem 0;
1237  }
1238
1239  #modal-register .login-link p,
1240  #modal-register .login-link a {
1241    font-size: clamp(13px, 1.5vw, 16px);
1242    font-weight: 400;
1243  }
1244
1245  #modal-register .login-link a {
1246    color: var(--mr-text-accent);
1247  }
1248
1249  #modal-register .rule-register {
1250    color: var(--mr-text-accent);
1251    cursor: pointer;
1252    font-size: clamp(13px, 1.5vw, 16px);
1253    font-weight: 400;
1254    text-decoration: underline;
1255  }
1256
1257  /* ===== BANK ===== */
1258  #modal-register .bank-input {
1259    margin-top: 1rem;
1260  }
1261
1262  #modal-register .mr-bank-label {
1263    display: block;
1264    margin-bottom: 0.25rem;
1265    color: var(--mr-text-main);
1266    font-size: 14px;
1267  }
1268
1269  #modal-register .is-bank-account {
1270    display: block;
1271  }
1272
1273  #modal-register #mr-bank-dropdown {
1274    z-index: 101;
1275  }
1276
1277  #modal-register .mr-bank-option,
1278  #modal-register .mr-aff-option {
1279    display: flex;
1280    align-items: center;
1281    gap: 10px;
1282  }
1283
1284  #modal-register .mr-aff-option-icon {
1285    width: 24px;
1286    height: 24px;
1287    border-radius: 50%;
1288    object-fit: contain;
1289    flex-shrink: 0;
1290  }
1291
1292  #modal-register #mr-dropdown-selected {
1293    display: flex;
1294    align-items: center;
1295    gap: 8px;
1296    min-height: 42px;
1297  }
1298
1299  #modal-register #mr-dropdown-selected.is-placeholder {
1300    color: var(--mr-input-placeholder);
1301  }
1302
1303  #modal-register .mr-bank-option-icon {
1304    width: 28px;
1305    height: 28px;
1306    border-radius: 50%;
1307    object-fit: contain;
1308    flex-shrink: 0;
1309  }
1310
1311  #modal-register #mr-bank-dropdown-selected {
1312    display: flex;
1313    align-items: center;
1314    gap: 8px;
1315    min-height: 42px;
1316  }
1317
1318  #modal-register #mr-bank-dropdown-selected.is-placeholder {
1319    color: var(--mr-input-placeholder);
1320  }
1321
1322  #modal-register .show {
1323    display: block !important;
1324  }
1325
1326  #modal-register .hidden {
1327    display: none;
1328  }
1329
1330  /* ===== DROPDOWN ===== */
1331  #modal-register .dropdown {
1332    width: 100%;
1333    position: relative;
1334    font-size: 16px;
1335    z-index: 99;
1336    margin-top: 1rem;
1337  }
1338
1339  #modal-register .dropdown-selected {
1340    width: 100%;
1341    padding: 10px;
1342    border-radius: 100px;
1343    border: 1px solid rgb(154 154 154 / 56%);
1344    background-color: var(--mr-bg-input);
1345    color: var(--mr-input-text);
1346    cursor: pointer;
1347    position: relative;
1348  }
1349
1350  #modal-register .dropdown-selected::after {
1351    content: "▾";
1352    position: absolute;
1353    right: 20px;
1354    top: 50%;
1355    transform: translateY(-50%);
1356    font-size: 18px;
1357  }
1358
1359  #modal-register .dropdown-options {
1360    display: none;
1361    position: absolute;
1362    width: 100%;
1363    padding: 10px;
1364    border-radius: 8px;
1365    border: 1px solid rgba(0, 0, 0, .56);
1366    background-color: rgba(0, 0, 0, .85);
1367    color: var(--mr-text-main);
1368    margin-top: 5px;
1369    z-index: 1000;
1370    max-height: 200px;
1371    overflow: scroll;
1372  }
1373
1374  #modal-register .dropdown-options div {
1375    padding: 10px;
1376    cursor: pointer;
1377  }
1378
1379  #modal-register .dropdown-options div:hover {
1380    background-color: rgba(255, 255, 255, .1);
1381    border-radius: 8px;
1382  }
1383
1384  #modal-register .dropdown.open .dropdown-options {
1385    display: block;
1386  }
1387
1388  /* ===== BONUS / RADIO ===== */
1389  #modal-register .bonus-container {
1390    display: flex;
1391    align-items: center;
1392    justify-content: center;
1393    gap: 50px;
1394    margin: 1rem 0;
1395  }
1396
1397  #modal-register .radio-buttons {
1398    display: flex;
1399    color: white;
1400    gap: 50px;
1401  }
1402
1403  #modal-register .radio-button {
1404    display: flex;
1405    align-items: center;
1406    cursor: pointer;
1407  }
1408
1409  #modal-register .radio-button input[type="radio"] {
1410    display: none;
1411  }
1412
1413  #modal-register .radio-circle {
1414    width: 20px;
1415    height: 20px;
1416    border-radius: 50%;
1417    border: 2px solid var(--mr-primary);
1418    position: relative;
1419    margin-right: 10px;
1420  }
1421
1422  #modal-register .radio-circle::before {
1423    content: "";
1424    display: block;
1425    width: 12px;
1426    height: 12px;
1427    border-radius: 50%;
1428    background-color: #ddd;
1429    position: absolute;
1430    top: 50%;
1431    left: 50%;
1432    transform: translate(-50%, -50%) scale(0);
1433    transition: all 0.2s ease-in-out;
1434  }
1435
1436  #modal-register .radio-button input[type="radio"]:checked+.radio-circle::before {
1437    transform: translate(-50%, -50%) scale(1);
1438    background-color: var(--mr-primary);
1439  }
1440
1441  #modal-register .radio-button:hover .radio-circle {
1442    border-color: var(--mr-primary);
1443  }
1444
1445  #modal-register .radio-label {
1446    font-size: 16px;
1447    font-weight: bold;
1448  }
1449
1450  /* ===== PROBLEM LINK ===== */
1451  #modal-register .problem-link {
1452    display: flex;
1453    align-items: center;
1454    justify-content: center;
1455    gap: 10px;
1456    width: 100%;
1457    margin: 1rem 0;
1458  }
1459
1460  #modal-register .problem-link span {
1461    color: var(--mr-text-accent);
1462    text-decoration: underline;
1463    cursor: pointer;
1464  }
1465
1466  /* ===== OTP ===== */
1467  #modal-register .otp-input {
1468    width: 42px !important;
1469    height: 42px;
1470    text-align: center;
1471    border-radius: 8px !important;
1472    background-color: rgba(255, 255, 255, .15) !important;
1473    border: 1px solid rgba(255, 255, 255, .4) !important;
1474    color: var(--mr-input-text);
1475    font-size: 18px;
1476    padding: 0 !important;
1477  }
1478
1479  #modal-register #mr-countdown-text {
1480    color: var(--mr-error);
1481    font-weight: bold;
1482    margin-top: 0.75rem;
1483  }
1484
1485  /* ===== MODAL CONTENT (rules / success) ===== */
1486  #mr-modal-rules .modal-content,
1487  #mr-modal-success .modal-content {
1488    position: relative;
1489    display: flex;
1490    flex-direction: column;
1491    width: 100%;
1492    pointer-events: auto;
1493    background-color: rgb(0, 0, 0);
1494    border: 2px solid var(--mr-modal-border);
1495    border-radius: 16px;
1496    outline: 0;
1497    color: var(--mr-text-main);
1498    font-family: var(--mr-font);
1499  }
1500
1501  #mr-modal-rules .modal-header,
1502  #mr-modal-success .modal-header {
1503    border: none;
1504    padding: 1rem 1rem 0.5rem;
1505    display: flex;
1506    align-items: center;
1507    justify-content: space-between;
1508  }
1509
1510  #mr-modal-rules .modal-title,
1511  #mr-modal-success .modal-title {
1512    font-size: 18px;
1513    font-weight: 600;
1514    margin: 0;
1515  }
1516
1517  #mr-modal-rules .modal-body,
1518  #mr-modal-success .modal-body {
1519    padding: 1rem;
1520    font-size: 16px;
1521  }
1522
1523  #mr-modal-rules .modal-footer,
1524  #mr-modal-success .modal-footer {
1525    border: none;
1526    padding: 0.5rem 1rem 1rem;
1527  }
1528
1529  #mr-modal-rules .modal-dialog,
1530  #mr-modal-success .modal-dialog {
1531    width: calc(100% - 2rem);
1532    max-width: 480px;
1533    margin: 1rem auto;
1534  }
1535
1536  #modal-register .modal-dialog.modal-dialog-scrollable .modal-content {
1537    max-height: calc(100dvh - 2rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
1538  }
1539
1540  #modal-register .modal-header {
1541    position: relative;
1542    display: flex;
1543    align-items: center;
1544    justify-content: center;
1545    border: none;
1546    padding: 1rem 3rem 0.5rem 1rem;
1547    flex-shrink: 0;
1548  }
1549
1550  #modal-register .modal-header .close {
1551    position: absolute;
1552    right: 0.75rem;
1553    top: 50%;
1554    transform: translateY(-50%);
1555    margin: 0;
1556    padding: 0.25rem;
1557    z-index: 2;
1558    opacity: 1;
1559  }
1560
1561  #mr-modal-rules .modal-dialog .modal-content,
1562  #mr-modal-success .modal-dialog .modal-content {
1563    max-height: calc(100dvh - 2rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
1564  }
1565
1566  #mr-modal-rules .modal-body,
1567  #mr-modal-rules #mr-rule-body {
1568    max-height: min(60vh, 480px);
1569    overflow-y: auto;
1570    -webkit-overflow-scrolling: touch;
1571  }
1572
1573  #modal-register #mr-otp-inputs {
1574    flex-wrap: nowrap;
1575    gap: 0.35rem;
1576    max-width: 100%;
1577    margin-left: auto;
1578    margin-right: auto;
1579  }
1580
1581  #modal-register #mr-otp-inputs .otp-input {
1582    margin: 0 !important;
1583    flex: 0 1 auto;
1584  }
1585
1586  #mr-modal-rules .modal-header i,
1587  #mr-modal-success .modal-header i {
1588    color: var(--mr-close);
1589    font-size: 1.5rem;
1590    cursor: pointer;
1591  }
1592
1593  #mr-modal-success .text-register-success {
1594    font-size: 24px;
1595    font-weight: 600;
1596    margin: 1rem 0;
1597  }
1598
1599  #mr-modal-success .btn-login {
1600    display: inline-block;
1601    padding: 10px;
1602    border-radius: 100px;
1603    border: none;
1604    background: var(--mr-primary);
1605    color: var(--mr-btn-text);
1606    cursor: pointer;
1607    font-family: var(--mr-font);
1608    font-size: 16px;
1609  }
1610
1611  /* ===== FLEX UTILITIES (ภายใน modal เท่านั้น) ===== */
1612  #modal-register .d-flex {
1613    display: flex !important;
1614  }
1615
1616  #modal-register .flex-row {
1617    flex-direction: row !important;
1618  }
1619
1620  #modal-register .justify-content-center {
1621    justify-content: center !important;
1622  }
1623
1624  #modal-register .align-items-center {
1625    align-items: center !important;
1626  }
1627
1628  #modal-register .text-center {
1629    text-align: center !important;
1630  }
1631
1632  #modal-register .text-white {
1633    color: var(--mr-text-main) !important;
1634  }
1635
1636  #modal-register .mt-2 {
1637    margin-top: 0.5rem !important;
1638  }
1639
1640  #modal-register .mt-3 {
1641    margin-top: 0.75rem !important;
1642  }
1643
1644  #modal-register .mt-4 {
1645    margin-top: 1rem !important;
1646  }
1647
1648  #modal-register .me-2 {
1649    margin-right: 0.5rem !important;
1650  }
1651
1652  #modal-register .p-2 {
1653    padding: 0.5rem !important;
1654  }
1655
1656  #modal-register .px-4 {
1657    padding-left: 1.5rem !important;
1658    padding-right: 1.5rem !important;
1659  }
1660
1661  #modal-register .gap-2 {
1662    gap: 0.5rem !important;
1663  }
1664
1665  #modal-register .position-relative {
1666    position: relative !important;
1667  }
1668
1669  #modal-register .height-100 {
1670    height: 100% !important;
1671  }
1672
1673  #modal-register .fw-bold {
1674    font-weight: bold !important;
1675  }
1676
1677  #modal-register .cursor-pointer {
1678    cursor: pointer !important;
1679  }
1680
1681  /* ===== SWEETALERT2 OVERRIDES (global — ใช้ร่วมกับ login ได้) ===== */
1682  .swal2-toast {
1683    color: #fff !important;
1684  }
1685
1686  .swal2-icon-success {
1687    background: rgb(1, 164, 4) !important;
1688  }
1689
1690  .swal2-icon-error {
1691    background: red !important;
1692  }
1693
1694  div:where(.swal2-icon).swal2-error {
1695    border-color: #fff !important;
1696    color: #fff !important;
1697  }
1698
1699  div:where(.swal2-icon).swal2-error [class^="swal2-x-mark-line"] {
1700    background-color: #fff !important;
1701  }
1702
1703  /* ===== RESPONSIVE ===== */
1704  @media screen and (max-width: 768px) {
1705
1706    #modal-register .modal-dialog,
1707    #mr-modal-rules .modal-dialog,
1708    #mr-modal-success .modal-dialog {
1709      width: calc(100% - 1.5rem);
1710      margin: 0.75rem auto;
1711    }
1712
1713    #modal-register h1 {
1714      font-size: clamp(1.375rem, 5vw, 2rem);
1715    }
1716
1717    #modal-register .logo {
1718      width: clamp(140px, 50vw, 280px);
1719    }
1720
1721    #modal-register .modal-body {
1722      padding: 0.75rem 1rem 1.5rem;
1723    }
1724
1725    #modal-register .progress-container {
1726      margin: 1.5rem auto;
1727    }
1728
1729    #modal-register .step-item p {
1730      font-size: 12px;
1731    }
1732
1733    #modal-register .circle {
1734      width: 34px;
1735      height: 34px;
1736    }
1737
1738    #modal-register .progress-line {
1739      top: 14px;
1740      height: 6px;
1741    }
1742
1743    #modal-register .bank-select {
1744      padding: 1rem;
1745    }
1746
1747    #modal-register .bank-options {
1748      gap: 10px;
1749      grid-template-columns: repeat(auto-fit, minmax(36px, 1fr));
1750    }
1751
1752    #mr-modal-rules .modal-body,
1753    #mr-modal-success .modal-body {
1754      padding: 0.75rem 1rem;
1755    }
1756
1757    #mr-modal-success .text-register-success {
1758      font-size: 20px;
1759    }
1760  }
1761
1762  @media screen and (max-width: 600px) {
1763    #modal-register .from-register {
1764      padding: 0 0.25rem;
1765    }
1766
1767    #modal-register .container {
1768      max-width: 100%;
1769      padding: 0;
1770    }
1771
1772    #modal-register .modal-header {
1773      padding: 0.75rem 2.75rem 0.5rem 0.75rem;
1774    }
1775
1776    #modal-register .mr-terms-row {
1777      flex-wrap: wrap;
1778      gap: 8px;
1779    }
1780
1781    #modal-register .mr-terms-row .d-flex {
1782      flex-wrap: wrap;
1783      justify-content: center;
1784      text-align: center;
1785    }
1786
1787    #modal-register .bonus-container,
1788    #modal-register .radio-buttons {
1789      gap: 1.25rem;
1790      flex-wrap: wrap;
1791      justify-content: center;
1792    }
1793
1794    #modal-register .radio-label {
1795      font-size: 14px;
1796    }
1797
1798    #modal-register .otp-input {
1799      width: clamp(32px, 11vw, 42px) !important;
1800      height: clamp(32px, 11vw, 42px);
1801      font-size: clamp(14px, 4vw, 18px);
1802    }
1803
1804    #modal-register .btn-next,
1805    #modal-register .btn-login,
1806    #mr-modal-success .btn-login {
1807      min-height: 44px;
1808    }
1809
1810    #modal-register .btn-primary,
1811    #modal-register .btn-back {
1812      min-height: 44px;
1813      font-size: 14px;
1814    }
1815  }
1816
1817  @media screen and (max-width: 380px) {
1818
1819    #modal-register .modal-dialog,
1820    #mr-modal-rules .modal-dialog,
1821    #mr-modal-success .modal-dialog {
1822      width: calc(100% - 1rem);
1823      margin: 0.5rem auto;
1824    }
1825
1826    #modal-register .step-item p {
1827      font-size: 10px;
1828    }
1829
1830    #modal-register .circle {
1831      width: 30px;
1832      height: 30px;
1833    }
1834
1835    #modal-register .circle .icon svg {
1836      width: 18px;
1837      height: 18px;
1838    }
1839
1840    #modal-register .progress-line {
1841      top: 12px;
1842      left: 12%;
1843      width: 76%;
1844    }
1845
1846    #modal-register .btn-primary,
1847    #modal-register .btn-back {
1848      width: 48%;
1849      padding: 8px 6px;
1850    }
1851
1852    #modal-register #mr-otp-inputs {
1853      gap: 0.2rem;
1854    }
1855
1856    #modal-register .otp-input {
1857      width: clamp(28px, 10vw, 36px) !important;
1858      height: clamp(28px, 10vw, 36px);
1859    }
1860  }
1861
1862  @media screen and (min-width: 601px) {
1863    #modal-register .container {
1864      max-width: 100%;
1865    }
1866  }
1867
1868  @media screen and (max-height: 500px) and (orientation: landscape) {
1869
1870    #modal-register .modal-dialog.modal-dialog-scrollable .modal-content,
1871    #mr-modal-rules .modal-dialog .modal-content,
1872    #mr-modal-success .modal-dialog .modal-content {
1873      max-height: calc(100dvh - 1rem);
1874    }
1875
1876    #modal-register .modal-body {
1877      padding: 0.5rem 1rem 1rem;
1878    }
1879
1880    #modal-register h1 {
1881      font-size: 1.25rem;
1882      margin-bottom: 0.5rem;
1883    }
1884
1885    #modal-register .progress-container {
1886      margin: 0.75rem auto;
1887    }
1888
1889    #modal-register .step-item p {
1890      font-size: 10px;
1891    }
1892
1893    #modal-register .circle {
1894      width: 28px;
1895      height: 28px;
1896      margin-bottom: 4px;
1897    }
1898
1899    #modal-register .progress-line {
1900      top: 10px;
1901    }
1902
1903    #modal-register .logo img {
1904      max-height: 40px !important;
1905    }
1906  }
1907</style>
1908
1909<!-- ============================================================
1910     MODAL REGISTER — HTML
1911     ============================================================ -->
1912<div class="modal modal-diamond fade" id="modal-register" tabindex="-1" role="dialog"
1913  aria-labelledby="mr-modal-title" aria-hidden="true"
1914  data-backdrop="static" data-keyboard="false"
1915  data-bs-backdrop="static" data-bs-keyboard="false">
1916  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
1917    <div class="modal-content">
1918
1919      <!-- Modal Header -->
1920      <div class="modal-header">
1921        <div class="logo" id="mr-logo" style="margin:0 auto;">
1922          <figure class="thumb">
1923			  <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/logo-pgslot77-main.png" alt="logo" style="max-height:60px;width:auto;"/>
1924          </figure>
1925        </div>
1926        <button id="mr-close-btn" type="button" class="close" data-dismiss="modal" aria-label="Close"
1927          onclick="ModalRegister.close()">
1928          <span aria-hidden="true"><i class="fas fa-times-circle"></i></span>
1929        </button>
1930      </div>
1931
1932      <div class="modal-body">
1933        <div class="from-register">
1934
1935          <h1 class="text-center text-white">สมัครสมาชิก</h1>
1936
1937          <div class="form">
1938            <!-- Progress -->
1939            <div class="progress-container">
1940              <div class="progress-line">
1941                <div class="progress-bar" id="mr-progress-bar"></div>
1942              </div>
1943              <div class="step-item active-progress" id="mr-step-item-1">
1944                <div class="circle"><span class="icon"></span></div>
1945                <p>สมัครสมาชิก</p>
1946              </div>
1947              <div class="step-item" id="mr-step-item-2">
1948                <div class="circle"><span class="icon"></span></div>
1949                <p>ตั้งรหัสผ่าน</p>
1950              </div>
1951              <div class="step-item" id="mr-step-item-3">
1952                <div class="circle"><span class="icon"></span></div>
1953                <p>บัญชีธนาคาร</p>
1954              </div>
1955            </div>
1956
1957            <!-- Step 1: Phone -->
1958            <div id="mr-step-1" class="step active">
1959              <p class="text-white/70 font-sans text-[14px] my-1">เบอร์โทรศัพท์</p>
1960              <input type="tel" id="mr-phone" placeholder="กรุณากรอกเบอร์โทรศัพท์" maxlength="10" />
1961              <div id="mr-phone-error" class="error"></div>
1962              <button class="btn-next" id="mr-next-button" disabled>
1963                <span class="btn-text-one">ถัดไป</span>
1964              </button>
1965              <!-- TEMP: ปิดยอมรับเงื่อนไขการสมัครสมาชิกชั่วคราว
1966              <div class="mr-terms-row">
1967                <label class="checkbox-container">
1968                  <input class="custom-checkbox" type="checkbox" id="mr-terms" />
1969                  <span class="checkmark"></span>
1970                </label>
1971                <div class="d-flex align-items-center gap-2">
1972                  <p>ยอมรับเงื่อนไขการสมัครสมาชิก</p>
1973                  <div class="rule-register" id="mr-rule-trigger" style="cursor:pointer;">(อ่านเพิ่มเติม)</div>
1974                </div>
1975              </div>
1976              -->
1977              <div class="login-link">
1978                <p>มีบัญชีแล้ว?</p>
1979                <a id="mr-goto-login" style="cursor:pointer;">เข้าสู่ระบบ</a>
1980              </div>
1981            </div>
1982
1983            <!-- Step 2: OTP -->
1984            <div id="mr-step-2" class="step">
1985              <div class="container height-100 d-flex justify-content-center align-items-center">
1986                <div class="position-relative">
1987                  <div class="p-2 text-center">
1988                    <h6>กรุณากรอกรหัส OTP</h6>
1989                    <div>
1990                      <span>ที่ส่งไปยังเบอร์:</span>
1991                      <small id="mr-otp-phone-display"></small>
1992                    </div>
1993                    <div id="mr-otp-inputs" class="inputs d-flex flex-row justify-content-center mt-2">
1994                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
1995                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
1996                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
1997                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
1998                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
1999                      <input class="otp-input m-2 text-center form-control rounded" type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
2000                    </div>
2001                    <p id="mr-countdown-text" class="mt-3 text-danger fw-bold"></p>
2002                    <div class="mt-4 d-flex justify-content-center">
2003                      <button id="mr-otp-back-button" class="btn btn-back me-2">ย้อนกลับ</button>
2004                      <button id="mr-otp-validate-button" class="btn btn-primary px-4" disabled>ถัดไป</button>
2005                    </div>
2006                  </div>
2007                </div>
2008              </div>
2009            </div>
2010
2011            <!-- Step 3: Password -->
2012            <div id="mr-step-3" class="step">
2013              <div class="password-container">
2014                <p class="text-white/70 my-1">รหัสผ่าน</p>
2015                <div class="password-wrapper">
2016                  <input type="password" id="mr-password"
2017                    oninput="this.value=this.value.replace(/[^A-Za-z0-9]/g,'')"
2018                    placeholder="กรุณากรอกรหัสผ่าน" />
2019                  <div class="toggle-button" id="mr-toggle-password">
2020                    <span id="mr-icon-password">
2021                      <svg width="24" height="19" viewBox="0 0 24 19" fill="currentColor" class="eye-icon" xmlns="http://www.w3.org/2000/svg">
2022                        <path d="M19.5254 0.966275C19.2322 0.673025 18.7582 0.673025 18.4649 0.966275L16.3919 3.03928C15.0802 2.51128 13.6154 2.17078 11.9999 2.17078C4.80066 2.17078 0.303663 9.15553 0.116163 9.45328C0.00516307 9.62953 -0.0233369 9.83428 0.0201631 10.0225C-0.0158369 10.201 0.00741308 10.3923 0.110163 10.5603C0.214413 10.7313 1.70166 13.102 4.34166 15.091L2.59941 16.8325C2.30616 17.1258 2.30616 17.5998 2.59941 17.893C2.74566 18.0393 2.93766 18.1128 3.12966 18.1128C3.32166 18.1128 3.51366 18.0393 3.65991 17.893L19.5254 2.02678C19.8179 1.73428 19.8179 1.25953 19.5254 0.966275ZM7.67991 9.95578C7.67991 7.57378 9.61791 5.63578 11.9999 5.63578C12.5339 5.63578 13.0439 5.73628 13.5157 5.91478L12.2699 7.16053C12.1799 7.15078 12.0922 7.13578 11.9999 7.13578C10.4452 7.13578 9.17991 8.40103 9.17991 9.95578C9.17991 10.048 9.19566 10.1358 9.20466 10.2258L7.95891 11.4715C7.78041 11.0005 7.67991 10.4898 7.67991 9.95578ZM23.8837 10.5468C23.6962 10.8438 19.1992 17.8293 11.9999 17.8293C10.1204 17.8293 8.44041 17.3725 6.97416 16.6915L9.92391 13.741C10.5404 14.0808 11.2484 14.275 12.0007 14.275C14.3827 14.275 16.3207 12.337 16.3207 9.95502C16.3207 9.20278 16.1264 8.49553 15.7867 7.87827L19.1392 4.52578C22.1047 6.57928 23.7802 9.25753 23.8904 9.43903C23.9932 9.60703 24.0164 9.79827 23.9804 9.97678C24.0232 10.1665 23.9954 10.3705 23.8837 10.5468ZM11.0624 12.6033L14.6474 9.01903C14.7524 9.31378 14.8199 9.62653 14.8199 9.95653C14.8199 11.5113 13.5547 12.7765 11.9999 12.7765C11.6699 12.7758 11.3572 12.7083 11.0624 12.6033Z" fill="white" />
2023                      </svg>
2024                    </span>
2025                  </div>
2026                </div>
2027                <div id="mr-password-error" class="error"></div>
2028              </div>
2029              <div class="password-container">
2030                <p class="text-white/70 my-1">ยืนยันรหัสผ่าน</p>
2031                <div class="password-wrapper">
2032                  <input type="password" id="mr-confirm-password"
2033                    oninput="this.value=this.value.replace(/[^A-Za-z0-9]/g,'')"
2034                    placeholder="กรุณากรอกรหัสผ่านอีกครั้ง" />
2035                  <div class="toggle-button" id="mr-toggle-confirm-password">
2036                    <span id="mr-icon-confirm-password">
2037                      <svg width="24" height="19" viewBox="0 0 24 19" fill="currentColor" class="eye-icon" xmlns="http://www.w3.org/2000/svg">
2038                        <path d="M19.5254 0.966275C19.2322 0.673025 18.7582 0.673025 18.4649 0.966275L16.3919 3.03928C15.0802 2.51128 13.6154 2.17078 11.9999 2.17078C4.80066 2.17078 0.303663 9.15553 0.116163 9.45328C0.00516307 9.62953 -0.0233369 9.83428 0.0201631 10.0225C-0.0158369 10.201 0.00741308 10.3923 0.110163 10.5603C0.214413 10.7313 1.70166 13.102 4.34166 15.091L2.59941 16.8325C2.30616 17.1258 2.30616 17.5998 2.59941 17.893C2.74566 18.0393 2.93766 18.1128 3.12966 18.1128C3.32166 18.1128 3.51366 18.0393 3.65991 17.893L19.5254 2.02678C19.8179 1.73428 19.8179 1.25953 19.5254 0.966275ZM7.67991 9.95578C7.67991 7.57378 9.61791 5.63578 11.9999 5.63578C12.5339 5.63578 13.0439 5.73628 13.5157 5.91478L12.2699 7.16053C12.1799 7.15078 12.0922 7.13578 11.9999 7.13578C10.4452 7.13578 9.17991 8.40103 9.17991 9.95578C9.17991 10.048 9.19566 10.1358 9.20466 10.2258L7.95891 11.4715C7.78041 11.0005 7.67991 10.4898 7.67991 9.95578ZM23.8837 10.5468C23.6962 10.8438 19.1992 17.8293 11.9999 17.8293C10.1204 17.8293 8.44041 17.3725 6.97416 16.6915L9.92391 13.741C10.5404 14.0808 11.2484 14.275 12.0007 14.275C14.3827 14.275 16.3207 12.337 16.3207 9.95502C16.3207 9.20278 16.1264 8.49553 15.7867 7.87827L19.1392 4.52578C22.1047 6.57928 23.7802 9.25753 23.8904 9.43903C23.9932 9.60703 24.0164 9.79827 23.9804 9.97678C24.0232 10.1665 23.9954 10.3705 23.8837 10.5468ZM11.0624 12.6033L14.6474 9.01903C14.7524 9.31378 14.8199 9.62653 14.8199 9.95653C14.8199 11.5113 13.5547 12.7765 11.9999 12.7765C11.6699 12.7758 11.3572 12.7083 11.0624 12.6033Z" fill="white" />
2039                      </svg>
2040                    </span>
2041                  </div>
2042                </div>
2043                <div id="mr-password-error-confirm" class="error"></div>
2044              </div>
2045              <div class="mt-4 d-flex justify-content-center">
2046                <button id="mr-back-to-step-2" class="btn btn-back me-2">ย้อนกลับ</button>
2047                <button id="mr-next-step-3" class="btn btn-primary px-4" disabled>ถัดไป</button>
2048              </div>
2049              <div class="problem-link">
2050                <p>พบปัญหา</p>
2051                <a href="https://cutt.ly/wcpg77" class="cursor-pointer"><span>ติดต่อฝ่ายบริการลูกค้า</span></a>
2052              </div>
2053            </div>
2054
2055            <!-- Step 4: Bank (PopupRegister — dropdown + icon /images/bank/{CODE}.png) -->
2056            <div id="mr-step-4" class="step">
2057              <div id="mr-is-bank-account" class="is-bank-account">
2058                <label class="mr-bank-label">โปรดเลือกธนาคารของคุณ</label>
2059                <div class="dropdown" id="mr-bank-dropdown">
2060                  <div class="dropdown-selected is-placeholder" id="mr-bank-dropdown-selected">โปรดเลือกรายการบัญชีธนาคาร</div>
2061                  <div class="dropdown-options" id="mr-bank-dropdown-options"></div>
2062                </div>
2063                <input class="bank-input hidden" type="text" id="mr-true-wallet"
2064                  placeholder="กรุณากรอกชื่อบัญชี" />
2065                <div id="mr-wallet-error" class="error"></div>
2066                <label class="mr-bank-label" for="mr-account-number">เลขบัญชีธนาคาร</label>
2067                <input class="bank-input" type="tel" id="mr-account-number"
2068                  placeholder="กรอกเลขบัญชีธนาคาร" maxlength="20" minlength="6" />
2069                <div id="mr-account-error" class="error"></div>
2070              </div>
2071              <div id="mr-aff-wrap">
2072                <label class="mr-bank-label">รู้จักเราจากช่องทางไหน</label>
2073                <div class="dropdown" id="mr-dropdown">
2074                  <div class="dropdown-selected is-placeholder" id="mr-dropdown-selected">เลือกช่องทาง</div>
2075                  <div class="dropdown-options" id="mr-dropdown-options"></div>
2076                </div>
2077                <input type="hidden" id="mr-selected-value" value="" />
2078              </div>
2079              <div class="bonus-container">
2080                <div class="d-flex align-items-center">
2081                  <div class="radio-buttons">
2082                    <label class="radio-button">
2083                      <input type="radio" name="mr-promotion" value="1" id="mr-bonus" />
2084                      <div class="radio-circle"></div>
2085                      <span class="radio-label">รับโบนัส</span>
2086                    </label>
2087                    <label class="radio-button">
2088                      <input type="radio" name="mr-promotion" value="0" id="mr-no-bonus" checked />
2089                      <div class="radio-circle"></div>
2090                      <span class="radio-label">ไม่รับโบนัส</span>
2091                    </label>
2092                  </div>
2093                </div>
2094              </div>
2095              <div class="mt-4 d-flex justify-content-center">
2096                <button id="mr-back-to-step-3" class="btn btn-back me-2">ย้อนกลับ</button>
2097                <button id="mr-submit-button" class="btn btn-primary px-4" disabled
2098                  onclick="window._mrConfirmRegister()">ยืนยันการสมัคร</button>
2099              </div>
2100              <div class="problem-link">
2101                <p>พบปัญหา</p>
2102                <a href="https://cutt.ly/wcpg77" class="cursor-pointer"><span>ติดต่อฝ่ายบริการลูกค้า</span></a>
2103              </div>
2104            </div>
2105
2106          </div><!-- /.form -->
2107        </div><!-- /.from-register -->
2108      </div><!-- /.modal-body -->
2109    </div><!-- /.modal-content -->
2110  </div><!-- /.modal-dialog -->
2111</div><!-- /#modal-register -->
2112
2113<!-- TEMP: ปิด modal เงื่อนไขการสมัครชั่วคราว
2114<div class="modal fade" id="mr-modal-rules" tabindex="-1" role="dialog" data-bs-backdrop="static" data-backdrop="static">
2115  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
2116    <div class="modal-content">
2117      <div class="modal-header">
2118        <h5 class="modal-title">เงื่อนไขการสมัครสมาชิก</h5>
2119        <i class="far fa-times-circle" style="cursor:pointer;" id="mr-rules-close"></i>
2120      </div>
2121      <div class="modal-body" id="mr-rule-body"></div>
2122    </div>
2123  </div>
2124</div>
2125-->
2126
2127<!-- Modal: สมัครสำเร็จ -->
2128<div class="modal fade" id="mr-modal-success" tabindex="-1" role="dialog" data-bs-backdrop="static" data-backdrop="static">
2129  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
2130    <div class="modal-content">
2131      <div class="modal-header justify-content-end">
2132        <i class="far fa-times-circle" style="cursor:pointer;" id="mr-success-close"></i>
2133      </div>
2134      <div class="modal-body text-center">
2135        <svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
2136          <g clip-path="url(#mr-clip0)">
2137            <path d="M40 0C17.9449 0 0 17.9449 0 40C0 62.0551 17.9449 80 40 80C62.0551 80 80 62.0551 80 40C80 17.9449 62.0551 0 40 0ZM62.3559 29.4737L36.792 54.8371C35.2882 56.3409 32.8822 56.4411 31.2782 54.9373L17.7444 42.6065C16.1404 41.1028 16.0401 38.5965 17.4436 36.9925C18.9474 35.3885 21.4536 35.2882 23.0576 36.792L33.7845 46.6165L56.6416 23.7594C58.2456 22.1554 60.7519 22.1554 62.3559 23.7594C63.9599 25.3634 63.9599 27.8697 62.3559 29.4737Z" fill="#30B972" />
2138          </g>
2139          <defs>
2140            <clipPath id="mr-clip0">
2141              <rect width="80" height="80" fill="white" />
2142            </clipPath>
2143          </defs>
2144        </svg>
2145        <p class="text-register-success">สมัครสมาชิกเรียบร้อย</p>
2146        <button class="btn-login" id="mr-success-btn" style="width:60%;">
2147          <span class="btn-text-one">ตกลง</span>
2148        </button>
2149      </div>
2150    </div>
2151  </div>
2152</div>
2153
2154<!-- ============================================================
2155     MODAL REGISTER — JAVASCRIPT (Self-Contained IIFE)
2156     ============================================================ -->
2157<script type="rocketlazyloadscript">
2158  (function() {
2159    /* =====================================================
2160       CONFIG — แก้ตรงนี้เพื่อย้าย project
2161       หรือ set window.ModalRegisterConfig ก่อน include
2162       ===================================================== */
2163    var CFG = {
2164      urlApi: "https:\/\/pgslot77.pglst.com",
2165      siteUrl: "https:\/\/pgslot77.art\/",
2166      jwtSecret: 'ABAsercretPayload'
2167    };
2168    if (window.ModalRegisterConfig) {
2169      Object.assign(CFG, window.ModalRegisterConfig);
2170    }
2171    if (!CFG.bankImgBase && CFG.urlApi) {
2172      CFG.bankImgBase = String(CFG.urlApi).replace(/\/$/, '') + '/images/bank/';
2173    }
2174    if (!CFG.affImgBase && CFG.urlApi) {
2175      CFG.affImgBase = String(CFG.urlApi).replace(/\/$/, '') + '/images/iconAff/';
2176    }
2177
2178    /* ===== STATE ===== */
2179    var state = {
2180      currentStep: 1,
2181      otpTimer: null,
2182      otpSeconds: 120,
2183      walletTouched: false,
2184      bankTouched: false,
2185      banklist: [],
2186      prefixRegister: {
2187        type_register: '',
2188        bank_account: '',
2189        otp: '',
2190        true_wallet: '',
2191        disable: '',
2192        description: '',
2193        not_checkbank: ''
2194      },
2195      registerData: {
2196        phone_number: '',
2197        password: '',
2198        affiliate: '',
2199        ref_join: '',
2200        clickid: '',
2201        bank_code: '',
2202        bank_type: '',
2203        bank_number: '',
2204        bank_name: '',
2205        register_type: ''
2206      }
2207    };
2208
2209    /* ===== JWT sign (PopupRegister → $jwt.sign payload, secret) ===== */
2210    function toBase64Url(input) {
2211      var bytes = typeof input === 'string' ?
2212        new TextEncoder().encode(input) :
2213        new Uint8Array(input);
2214      var binary = '';
2215      for (var i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
2216      return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
2217    }
2218
2219    async function signJwt(payload, secret) {
2220      var header = {
2221        alg: 'HS256',
2222        typ: 'JWT'
2223      };
2224      var encodedHeader = toBase64Url(JSON.stringify(header));
2225      var encodedPayload = toBase64Url(JSON.stringify(payload));
2226      var signingInput = encodedHeader + '.' + encodedPayload;
2227      var key = await crypto.subtle.importKey(
2228        'raw',
2229        new TextEncoder().encode(secret), {
2230          name: 'HMAC',
2231          hash: 'SHA-256'
2232        },
2233        false,
2234        ['sign']
2235      );
2236      var signature = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(signingInput));
2237      return signingInput + '.' + toBase64Url(signature);
2238    }
2239
2240    /* ===== STATIC BANK DATA (RegisterData.vue databank — ไม่เรียก API) ===== */
2241    var DATA_BANK = {
2242      KBANK: 'กสิกรไทย จำกัด (มหาชน)',
2243      SCB: 'ไทยพาณิชย์ จำกัด (มหาชน)',
2244      KTB: 'กรุงไทย จำกัด (มหาชน)',
2245      BAY: 'กรุงศรีอยุธยา จำกัด (มหาชน)',
2246      GSB: 'ออมสิน',
2247      UOB: 'ยูโอบี จำกัด (มหาชน)',
2248      BBL: 'กรุงเทพ จำกัด (มหาชน)',
2249      CI: 'ซิตี้แบ้งค์',
2250      LNH: 'แลนด์ แอนด์ เฮ้าส์',
2251      BAAC: 'ธนาคารเพื่อการเกษตรและสหกรณ์การเกษตร',
2252      OSK: 'อาคารสงเคราะห์',
2253      KKP: 'เกียรตินาคิน จำกัด (มหาชน)',
2254      JPK: 'เจพีมอร์แกน เชส สาขากรุงเทพฯ',
2255      CIMB: 'ซีไอเอ็มบี ไทย จำกัด (มหาชน)',
2256      ZTM: 'ซูมิโตโม มิตซุย แบงกิ้ง คอร์ปอเรชั่น',
2257      DOIB: 'ดอยซ์แบงค์',
2258      TISGO: 'ทิสโก้ จำกัด (มหาชน)',
2259      TCREDIT: 'ไทยเครดิต เพื่อรายย่อย',
2260      BNP: 'ธนาคารบีเอ็นพี พารีบาส์ สาขากรุงเทพฯ',
2261      MSU: 'มิซูโฮ คอร์ปอเรต จำกัด สาขากรุงเทพฯ',
2262      MEGA: 'เมกะ สากลพาณิชย์',
2263      SNT: 'สแตนดาร์ดชาร์เตอร์ด (ไทย)',
2264      CN: 'ธนาคารแห่งประเทศจีน (ไทย)',
2265      USA: 'แห่งอเมริกาฯ',
2266      ASL: 'ธนาคารอิสลามแห่งประเทศไทย',
2267      IZBS: 'ไอซีบีซี (ไทย)',
2268      TTB: 'ธนาคารทหารไทยธนชาต'
2269    };
2270
2271    /* bank_type สำหรับส่ง register — จาก PopupRegister myJson.bankType */
2272    var BANK_TYPE = {
2273      TRUEWALLET: 'ทรู วอลเล็ท',
2274      SCB: 'ไทยพาณิชย์',
2275      KBANK: 'กสิกรไทย',
2276      BBL: 'กรุงเทพ',
2277      KTB: 'กรุงไทย',
2278      BAY: 'กรุงศรีอยุธยา',
2279      KKP: 'เกียรตินาคิน',
2280      JPK: 'เจพีมอร์แกนเชส',
2281      CI: 'ซิตี้แบ้งค์',
2282      CIMB: 'ซีไอเอ็มบี',
2283      ZTM: 'ซูมิโตโมมิตซุย',
2284      DOIB: 'ดอยซ์แบงค์',
2285      TISGO: 'ทิสโก้',
2286      TCREDIT: 'ไทยเครดิต',
2287      BNP: 'ธนาคารบีเอ็นพี',
2288      BAAC: 'ธนาคารเพื่อการเกษตรและสหกรณ์การเกษตร',
2289      MSU: 'มิซูโฮ',
2290      MEGA: 'เมกะ',
2291      UOB: 'ยูโอบี',
2292      LNH: 'แลนด์แอนด์ เฮ้าส์',
2293      SNT: 'สแตนดาร์ดชาร์เตอร์ด',
2294      CN: 'ธนาคารแห่งประเทศจีน',
2295      USA: 'แห่งอเมริกาฯ',
2296      GSB: 'ออมสิน',
2297      OSK: 'อาคารสงเคราะห์',
2298      ASL: 'อิสลามแห่งประเทศไทย',
2299      IZBS: 'ไอซีบีซี',
2300      TTB: 'ธนาคารทหารไทยธนชาต'
2301    };
2302
2303    var TRUEWALLET_BANK = {
2304      TRUEWALLET: 'ทรูมันนี่ วอลเล็ท (TRUEWALLET)'
2305    };
2306
2307    /* AllAffData.aff — จาก PopupRegister / myJson.json */
2308    var AFF_DATA = [{
2309        text: 'YOUTUBE',
2310        value: 'YOUTUBE',
2311        icon: 'youtube.png'
2312      },
2313      {
2314        text: 'TIKTOK',
2315        value: 'TIKTOK',
2316        icon: 'tiktok.png'
2317      },
2318      {
2319        text: 'เพื่อนแนะนำมา',
2320        value: 'AFF',
2321        icon: 'talk.png'
2322      },
2323      {
2324        text: 'ป้ายโฆษณาตามเว็บ',
2325        value: 'ADVERTISEMENT',
2326        icon: 'billboard.png'
2327      },
2328      {
2329        text: 'FACEBOOK',
2330        value: 'FACEBOOK',
2331        icon: 'facebook.png'
2332      },
2333      {
2334        text: 'GOOGLE',
2335        value: 'GOOGLE',
2336        icon: 'search.png'
2337      }
2338    ];
2339
2340    /* ===== ICON HELPERS ===== */
2341    var ICON_EYE_OPEN = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="eye-icon"><path d="M12 15a3 3 0 100-6 3 3 0 000 6z"/><path fill-rule="evenodd" d="M1.323 11.447C2.811 6.976 7.028 3.75 12.001 3.75c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113-1.487 4.471-5.705 7.697-10.677 7.697-4.97 0-9.186-3.223-10.675-7.69a1.762 1.762 0 010-1.113zM17.25 12a5.25 5.25 0 11-10.5 0 5.25 5.25 0 0110.5 0z" clip-rule="evenodd"/></svg>';
2342    var ICON_EYE_CLOSED = '<svg width="24" height="19" viewBox="0 0 24 19" fill="currentColor" class="eye-icon" xmlns="http://www.w3.org/2000/svg"><path d="M19.5254 0.966275C19.2322 0.673025 18.7582 0.673025 18.4649 0.966275L16.3919 3.03928C15.0802 2.51128 13.6154 2.17078 11.9999 2.17078C4.80066 2.17078 0.303663 9.15553 0.116163 9.45328C0.00516307 9.62953 -0.0233369 9.83428 0.0201631 10.0225C-0.0158369 10.201 0.00741308 10.3923 0.110163 10.5603C0.214413 10.7313 1.70166 13.102 4.34166 15.091L2.59941 16.8325C2.30616 17.1258 2.30616 17.5998 2.59941 17.893C2.74566 18.0393 2.93766 18.1128 3.12966 18.1128C3.32166 18.1128 3.51366 18.0393 3.65991 17.893L19.5254 2.02678C19.8179 1.73428 19.8179 1.25953 19.5254 0.966275ZM7.67991 9.95578C7.67991 7.57378 9.61791 5.63578 11.9999 5.63578C12.5339 5.63578 13.0439 5.73628 13.5157 5.91478L12.2699 7.16053C12.1799 7.15078 12.0922 7.13578 11.9999 7.13578C10.4452 7.13578 9.17991 8.40103 9.17991 9.95578C9.17991 10.048 9.19566 10.1358 9.20466 10.2258L7.95891 11.4715C7.78041 11.0005 7.67991 10.4898 7.67991 9.95578ZM23.8837 10.5468C23.6962 10.8438 19.1992 17.8293 11.9999 17.8293C10.1204 17.8293 8.44041 17.3725 6.97416 16.6915L9.92391 13.741C10.5404 14.0808 11.2484 14.275 12.0007 14.275C14.3827 14.275 16.3207 12.337 16.3207 9.95502C16.3207 9.20278 16.1264 8.49553 15.7867 7.87827L19.1392 4.52578C22.1047 6.57928 23.7802 9.25753 23.8904 9.43903C23.9932 9.60703 24.0164 9.79827 23.9804 9.97678C24.0232 10.1665 23.9954 10.3705 23.8837 10.5468ZM11.0624 12.6033L14.6474 9.01903C14.7524 9.31378 14.8199 9.62653 14.8199 9.95653C14.8199 11.5113 13.5547 12.7765 11.9999 12.7765C11.6699 12.7758 11.3572 12.7083 11.0624 12.6033Z" fill="white"/></svg>';
2343
2344    var STEP_ICONS = [
2345      '<svg width="23" height="23" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.66665 9.33333C9.66665 5.84133 12.508 3 16 3C19.492 3 22.3333 5.84133 22.3333 9.33333C22.3333 12.8253 19.492 15.6667 16 15.6667C12.508 15.6667 9.66665 12.8253 9.66665 9.33333ZM20 17.6667H12C7.77331 17.6667 4.33331 21.1067 4.33331 25.3333C4.33331 27.356 5.97731 29 7.99998 29H24C26.0226 29 27.6666 27.356 27.6666 25.3333C27.6666 21.1067 24.2266 17.6667 20 17.6667Z" fill="currentColor"/></svg>',
2346      '<svg width="23" height="23" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24.4706 13.1765V9.41175C24.4706 4.70587 20.7059 0.941162 16 0.941162C11.2941 0.941162 7.5294 4.70587 7.5294 9.41175V13.1765C5.9294 13.1765 4.70587 14.4 4.70587 16V28.2353C4.70587 29.7412 5.9294 31.0588 7.5294 31.0588H24.4706C26.0706 31.0588 27.2941 29.7412 27.2941 28.2353V16C27.2941 14.4 26.0706 13.1765 24.4706 13.1765ZM9.41175 9.41175C9.41175 5.74116 12.3294 2.82352 16 2.82352C19.6706 2.82352 22.5882 5.74116 22.5882 9.41175V13.1765H9.41175V9.41175ZM16.9412 23.3412V25.4118C16.9412 25.9765 16.5647 26.3529 16 26.3529C15.4353 26.3529 15.0588 25.9765 15.0588 25.4118V23.3412C13.9294 22.9647 13.1765 21.9294 13.1765 20.7059C13.1765 19.1059 14.4 17.8823 16 17.8823C1
23467.6 17.8823 18.8235 19.1059 18.8235 20.7059C18.8235 21.9294 18.0706 22.9647 16.9412 23.3412Z" fill="currentColor"/></svg>',
2347      '<svg width="23" height="23" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#mr-bank-icon)"><path d="M24.7766 16.7715H28.5264V25.75H24.7766V16.7715Z" fill="currentColor"/><path d="M17.6755 16.7715H21.4255V25.75H17.6755V16.7715Z" fill="currentColor"/><path d="M10.5745 16.7715H14.3245V25.75H10.5745V16.7715Z" fill="currentColor"/><path d="M3.47363 16.7715H7.22339V25.75H3.47363V16.7715Z" fill="currentColor"/><path d="M29.7766 13.959V13.0215H2.22363V13.959C2.22363 14.4768 2.64331 14.8965 3.16113 14.8965H28.8391C29.3567 14.8965 29.7766 14.4768 29.7766 13.959Z" fill="currentColor"/><path d="M31.062 27.625H0.938476C0.420654 27.625 0.000976562 28.0447 0.000976562 28.5625V31.0625C0.000976562 31.5803 0.420654 32 0.938476 32H31.062C31.5798 32 31.9995 31.5803 31.9995 31.0625V28.5625C31.9995 28.0447 31.5798 27.625 31.062 27.625Z" fill="currentColor"/><path d="M0.937538 11.1465H31.0625C31.482 11.1465 31.8504 10.8679 31.9646 10.4643C32.0786 10.0608 31.9112 9.63037 31.554 9.41064L16.4915 0.13916C16.1902-0.0463867 15.8101-0.0463867 15.5086 0.13916L0.446083 9.41064C0.0889055 9.63061-0.0785748 10.0608 0.0356829 10.4643C0.149941 10.8679 0.518349 11.1465 0.937538 11.1465ZM15.3628 5.51416H16.6375C17.1553 5.51416 17.575 5.93383 17.575 6.45166C17.575 6.96948 17.1553 7.38916 16.6375 7.38916H15.3628C14.845 7.38916 14.4253 6.96948 14.4253 6.45166C14.4253 5.93383 14.845 5.51416 15.3628 5.51416Z" fill="currentColor"/></g><defs><clipPath id="mr-bank-icon"><rect width="32" height="32" fill="white"/></clipPath></defs></svg>'
2348    ];
2349    var ICON_CHECK = '<svg width="24" height="24" fill="currentColor"><path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="3" fill="none"/></svg>';
2350
2351    /* ===== BOOTSTRAP MODAL HELPERS ===== */
2352    function bsShow(id) {
2353      var target = document.getElementById(id);
2354      if (!target) return;
2355      if (window.bootstrap && bootstrap.Modal && bootstrap.Modal.getOrCreateInstance) {
2356        bootstrap.Modal.getOrCreateInstance(target).show();
2357      } else if (window.$ && $.fn.modal) {
2358        $(target).modal('show');
2359      } else {
2360        target.style.display = 'block';
2361        target.classList.add('show');
2362        document.body.classList.add('modal-open');
2363        if (!document.getElementById(id + '-bd')) {
2364          var bd = document.createElement('div');
2365          bd.id = id + '-bd';
2366          bd.className = 'modal-backdrop fade show';
2367          document.body.appendChild(bd);
2368        }
2369      }
2370    }
2371
2372    function bsHide(id) {
2373      var target = document.getElementById(id);
2374      if (!target) return;
2375      if (window.bootstrap && bootstrap.Modal && bootstrap.Modal.getInstance) {
2376        var inst = bootstrap.Modal.getInstance(target);
2377        if (inst) inst.hide();
2378      } else if (window.$ && $.fn.modal) {
2379        $(target).modal('hide');
2380      } else {
2381        target.style.display = 'none';
2382        target.classList.remove('show');
2383        var bd = document.getElementById(id + '-bd');
2384        if (bd) bd.remove();
2385        var anyOpen = document.querySelector('.modal.show');
2386        if (!anyOpen) document.body.classList.remove('modal-open');
2387      }
2388    }
2389
2390    /* ===== DOM REFS ===== */
2391    function el(id) {
2392      return document.getElementById(id);
2393    }
2394    var overlay = el('modal-register');
2395    var phoneInput = el('mr-phone');
2396    var phoneError = el('mr-phone-error');
2397    // TEMP: ปิดยอมรับเงื่อนไขชั่วคราว
2398    // var termsChk = el('mr-terms');
2399    var nextBtn = el('mr-next-button');
2400    var otpInputs = document.querySelectorAll('#mr-otp-inputs input');
2401    var otpDisplay = el('mr-otp-phone-display');
2402    var otpValidBtn = el('mr-otp-validate-button');
2403    var otpBackBtn = el('mr-otp-back-button');
2404    var countdown = el('mr-countdown-text');
2405    var pwdInput = el('mr-password');
2406    var cfmPwdInput = el('mr-confirm-password');
2407    var pwdError = el('mr-password-error');
2408    var pwdErrorCfm = el('mr-password-error-confirm');
2409    var nextStep3Btn = el('mr-next-step-3');
2410    var backStep2Btn = el('mr-back-to-step-2');
2411    var backStep3Btn = el('mr-back-to-step-3');
2412    var bankDropdown = el('mr-bank-dropdown');
2413    var bankDropSelected = el('mr-bank-dropdown-selected');
2414    var bankDropOptions = el('mr-bank-dropdown-options');
2415    var bankNumInput = el('mr-account-number');
2416    var trueWallet = el('mr-true-wallet');
2417    var submitBtn = el('mr-submit-button');
2418    var accountError = el('mr-account-error');
2419    var walletError = el('mr-wallet-error');
2420    var dropdown = el('mr-dropdown');
2421    var dropSelected = el('mr-dropdown-selected');
2422    var dropOptions = el('mr-dropdown-options');
2423    var referrerInput = el('mr-selected-value');
2424    var progressBar = el('mr-progress-bar');
2425    var stepItems = [el('mr-step-item-1'), el('mr-step-item-2'), el('mr-step-item-3')];
2426
2427    /* ===== PROGRESS / STEPS ===== */
2428    function updateSteps() {
2429      var total = stepItems.length;
2430      stepItems.forEach(function(item, i) {
2431        var circle = item.querySelector('.circle');
2432        var icon = circle.querySelector('.icon');
2433        item.classList.remove('active-progress', 'done');
2434        if (i + 1 < state.currentStep) {
2435          item.classList.add('done');
2436          icon.innerHTML = ICON_CHECK;
2437        } else {
2438          if (i + 1 === state.currentStep) item.classList.add('active-progress');
2439          if (STEP_ICONS[i]) icon.innerHTML = STEP_ICONS[i];
2440        }
2441      });
2442      progressBar.style.width = (((state.currentStep - 1) / (total - 1)) * 100) + '%';
2443    }
2444
2445    function nextStep() {
2446      if (state.currentStep < stepItems.length) {
2447        state.currentStep++;
2448        updateSteps();
2449      }
2450    }
2451
2452    function prevStep() {
2453      if (state.currentStep > 1) {
2454        state.currentStep--;
2455        updateSteps();
2456      }
2457    }
2458
2459    /* ===== PHONE VALIDATION ===== */
2460    function validatePhone(phone) {
2461      return /^(0[689])\d*$/.test(phone);
2462    }
2463
2464    function updateButtonState() {
2465      // TEMP: ไม่ตรวจ termsChk.checked
2466      var valid = validatePhone(phoneInput.value) && phoneInput.value.length === 10;
2467      if (phoneInput.value === '') phoneError.textContent = 'กรุณากรอกเบอร์โทรศัพท์';
2468      else if (!validatePhone(phoneInput.value)) phoneError.textContent = 'เบอร์โทรต้องขึ้นต้นด้วย 0 ต่อด้วย 6 หรือ 8 หรือ 9';
2469      else phoneError.textContent = '';
2470      nextBtn.disabled = !valid;
2471    }
2472
2473    phoneInput.addEventListener('input', function() {
2474      this.value = this.value.replace(/\D/g, '');
2475      updateButtonState();
2476    });
2477    // TEMP: termsChk.addEventListener('change', updateButtonState);
2478
2479    /* ===== STEP 1 NEXT ===== */
2480    nextBtn.addEventListener('click', function() {
2481      state.registerData.phone_number = phoneInput.value.trim();
2482      var otp = state.prefixRegister.otp;
2483      if (otp === 'allow' || otp === 'main') {
2484        showStep(1, 3);
2485        nextStep();
2486      } else {
2487        getOtp(phoneInput.value);
2488      }
2489    });
2490
2491    /* ===== OTP ===== */
2492    function showStep(from, to) {
2493      el('mr-step-' + from).classList.remove('active');
2494      el('mr-step-' + to).classList.add('active');
2495    }
2496
2497    function goToStep2() {
2498      showStep(1, 2);
2499      var phone = state.registerData.phone_number || '*******xxxx';
2500      otpDisplay.textContent = phone.slice(0, -4).replace(/\d/g, '*') + phone.slice(-4);
2501      resetOtpInputs();
2502      startOtpCountdown();
2503    }
2504
2505    function returnToStep1() {
2506      showStep(2, 1);
2507      phoneInput.value = '';
2508      nextBtn.disabled = true;
2509    }
2510
2511    otpInputs.forEach(function(input, i) {
2512      input.addEventListener('input', function(e) {
2513        e.target.value = e.target.value.replace(/\D/g, '');
2514        if (e.target.value.length === 1 && i < otpInputs.length - 1) otpInputs[i + 1].focus();
2515        checkOtpComplete();
2516      });
2517      input.addEventListener('keydown', function(e) {
2518        if (e.key === 'Backspace' && !e.target.value && i > 0) otpInputs[i - 1].focus();
2519      });
2520      input.addEventListener('paste', function(e) {
2521        e.preventDefault();
2522        var pasted = e.clipboardData.getData('text').replace(/\D/g, '');
2523        pasted.split('').forEach(function(c, j) {
2524          if (otpInputs[i + j]) otpInputs[i + j].value = c;
2525        });
2526        var last = Math.min(i + pasted.length, otpInputs.length) - 1;
2527        otpInputs[last].focus();
2528        checkOtpComplete();
2529      });
2530    });
2531
2532    function checkOtpComplete() {
2533      var code = Array.from(otpInputs).map(function(x) {
2534        return x.value;
2535      }).join('');
2536      otpValidBtn.disabled = code.length !== 6;
2537    }
2538
2539    function resetOtpInputs() {
2540      otpInputs.forEach(function(x) {
2541        x.value = '';
2542      });
2543      otpInputs[0].focus();
2544      otpValidBtn.disabled = true;
2545    }
2546
2547    function startOtpCountdown() {
2548      clearInterval(state.otpTimer);
2549      state.otpSeconds = 120;
2550      updateCountdownText();
2551      state.otpTimer = setInterval(function() {
2552        state.otpSeconds--;
2553        updateCountdownText();
2554        if (state.otpSeconds <= 0) {
2555          clearInterval(state.otpTimer);
2556          returnToStep1();
2557        }
2558      }, 1000);
2559    }
2560
2561    function updateCountdownText() {
2562      countdown.textContent = 'เวลาที่เหลือ: ' + state.otpSeconds + ' วินาที';
2563    }
2564
2565    otpValidBtn.addEventListener('click', function() {
2566      var code = Array.from(otpInputs).map(function(x) {
2567        return x.value;
2568      }).join('');
2569      verifyOtp(phoneInput.value, code);
2570    });
2571
2572    otpBackBtn.addEventListener('click', function() {
2573      clearInterval(state.otpTimer);
2574      returnToStep1();
2575      nextBtn.disabled = true;
2576    });
2577
2578    /* ===== PASSWORD ===== */
2579    function togglePassword(inputEl, iconEl) {
2580      var type = inputEl.getAttribute('type') === 'password' ? 'text' : 'password';
2581      inputEl.setAttribute('type', type);
2582      iconEl.innerHTML = type === 'text' ? ICON_EYE_OPEN : ICON_EYE_CLOSED;
2583    }
2584
2585    el('mr-toggle-password').addEventListener('click', function() {
2586      togglePassword(pwdInput, el('mr-icon-password'));
2587    });
2588    el('mr-toggle-confirm-password').addEventListener('click', function() {
2589      togglePassword(cfmPwdInput, el('mr-icon-confirm-password'));
2590    });
2591
2592    function validatePasswords() {
2593      var pwd = pwdInput.value,
2594        cfm = cfmPwdInput.value;
2595      var onlyAlNum = /^[A-Za-z0-9]+$/.test(pwd);
2596      var longEnough = pwd.length > 5;
2597      var valid = pwd && cfm && pwd === cfm && onlyAlNum && longEnough;
2598
2599      if (!pwd && !cfm) pwdError.textContent = 'กรุณากรอกรหัสผ่าน';
2600      else if (pwd !== cfm && pwd && cfm) {
2601        pwdErrorCfm.textContent = 'รหัสผ่านไม่ตรงกัน';
2602        pwdError.textContent = '';
2603      } else if (!longEnough) {
2604        pwdError.textContent = 'รหัสผ่านต้องมีความยาวอย่างน้อย 6 ตัวอักษร';
2605        pwdErrorCfm.textContent = '';
2606      } else if (!onlyAlNum) {
2607        pwdError.textContent = 'รหัสผ่านต้องมีตัวอักษรภาษาอังกฤษหรือตัวเลขเท่านั้น';
2608        pwdErrorCfm.textContent = '';
2609      } else {
2610        pwdError.textContent = '';
2611        pwdErrorCfm.textContent = '';
2612      }
2613
2614      nextStep3Btn.disabled = !valid;
2615    }
2616
2617    pwdInput.addEventListener('input', validatePasswords);
2618    cfmPwdInput.addEventListener('input', validatePasswords);
2619
2620    nextStep3Btn.addEventListener('click', function() {
2621      state.registerData.password = pwdInput.value;
2622      showStep(3, 4);
2623      nextStep();
2624      loadBankList();
2625    });
2626
2627    backStep2Btn.addEventListener('click', function() {
2628      showStep(3, 1);
2629      prevStep();
2630    });
2631
2632    /* ===== BANK VALIDATION ===== */
2633    bankNumInput.addEventListener('input', function() {
2634      state.bankTouched = true;
2635      bankNumInput.value = bankNumInput.value.replace(/\D/g, '');
2636      checkSubmitButton();
2637    });
2638
2639    trueWallet.addEventListener('input', function() {
2640      state.walletTouched = true;
2641      trueWallet.value = trueWallet.value.replace(/[^ก-๙A-Za-z\s]/g, '');
2642      checkSubmitButton();
2643    });
2644
2645    function validateBankName(name) {
2646      if (!name) name = '';
2647      var isValid = /^[ก-๙A-Za-z\s]+$/.test(name);
2648      if (state.walletTouched && name === '') walletError.textContent = 'กรุณากรอกชื่อบัญชี';
2649      else if (state.walletTouched && !isValid) walletError.textContent = 'อนุญาตเฉพาะตัวอักษรไทยหรืออังกฤษเท่านั้น';
2650      else walletError.textContent = '';
2651      return isValid;
2652    }
2653
2654    function validateBankNumber(number) {
2655      if (!number) number = '';
2656      var onlyNum = /^\d+$/.test(number);
2657      var lenOk = number.length >= 10 && number.length <= 20;
2658      if (state.bankTouched && number === '') accountError.textContent = 'กรุณากรอกเลขบัญชีธนาคาร';
2659      else if (state.bankTouched && !onlyNum) accountError.textContent = 'เลขบัญชีต้องเป็นตัวเลขเท่านั้น';
2660      else if (state.bankTouched && !lenOk) accountError.textContent = 'เลขบัญชีควรมี 10 ถึง 20 หลัก';
2661      else accountError.textContent = '';
2662      return onlyNum && lenOk;
2663    }
2664
2665    function checkSubmitButton() {
2666      var walletName = trueWallet.value.trim();
2667      var accountNum = bankNumInput.value.trim();
2668      var isTrue = state.registerData.bank_code === 'TRUEWALLET';
2669      var bnValid = !isTrue || validateBankName(walletName);
2670      var numValid = validateBankNumber(accountNum);
2671      submitBtn.disabled = !(state.registerData.bank_code && numValid && bnValid);
2672    }
2673
2674    function getBankImgUrl(code) {
2675      if (!CFG.bankImgBase || !code) return '';
2676      return String(CFG.bankImgBase).replace(/\/?$/, '/') + code + '.png';
2677    }
2678
2679    function updateBankSelectedDisplay(bank) {
2680      if (!bankDropSelected) return;
2681      if (!bank) {
2682        bankDropSelected.classList.add('is-placeholder');
2683        bankDropSelected.textContent = 'โปรดเลือกรายการบัญชีธนาคาร';
2684        return;
2685      }
2686      bankDropSelected.classList.remove('is-placeholder');
2687      var imgUrl = getBankImgUrl(bank.bank_code);
2688      var imgHtml = imgUrl ?
2689        '<img src="' + imgUrl + '" alt="' + bank.bank_code + '" class="mr-bank-option-icon" onerror="this.style.display=\'none\'">' :
2690        '';
2691      bankDropSelected.innerHTML = imgHtml + '<span>' + bank.full_name + '</span>';
2692    }
2693
2694    function selectBank(bank) {
2695      if (!bank) return;
2696      state.registerData.bank_code = bank.bank_code;
2697      state.registerData.bank_type = bank.bank_type;
2698      updateBankSelectedDisplay(bank);
2699      trueWallet.value = '';
2700      bankNumInput.value = '';
2701      accountError.textContent = '';
2702      walletError.textContent = '';
2703      state.bankTouched = false;
2704      state.walletTouched = false;
2705      if (bank.bank_code === 'TRUEWALLET' || state.prefixRegister.not_checkbank) {
2706        trueWallet.classList.remove('hidden');
2707        trueWallet.classList.add('show');
2708      } else {
2709        trueWallet.classList.add('hidden');
2710        trueWallet.classList.remove('show');
2711      }
2712      checkSubmitButton();
2713    }
2714
2715    bankDropSelected.addEventListener('click', function() {
2716      if (bankDropdown) bankDropdown.classList.toggle('open');
2717    });
2718
2719    backStep3Btn.addEventListener('click', function() {
2720      showStep(4, 3);
2721      pwdInput.value = '';
2722      cfmPwdInput.value = '';
2723      nextStep3Btn.disabled = true;
2724      prevStep();
2725    });
2726
2727    /* ===== DROPDOWN ===== */
2728    dropSelected.addEventListener('click', function() {
2729      dropdown.classList.toggle('open');
2730    });
2731    document.addEventListener('click', function(e) {
2732      if (dropdown && !dropdown.contains(e.target)) dropdown.classList.remove('open');
2733      if (bankDropdown && !bankDropdown.contains(e.target)) bankDropdown.classList.remove('open');
2734    });
2735
2736    /* ===== API CALLS ===== */
2737    async function fetchPrefix() {
2738      if (!window._prefixPromise) {
2739        window._prefixPromise = fetch(CFG.urlApi + '/api/prefix')
2740          .then(function(res) {
2741            return res.json();
2742          })
2743          .catch(function() {
2744            window._prefixPromise = null;
2745            return null;
2746          });
2747      }
2748      return window._prefixPromise;
2749    }
2750
2751    async function getOtp(phone) {
2752      nextBtn.disabled = true;
2753      try {
2754        var jwtPayload = {
2755          Phone_number: phone,
2756          iat: Math.floor(Date.now() / 1000)
2757        };
2758        var token = await signJwt(jwtPayload, CFG.jwtSecret);
2759        var res = await fetch(CFG.urlApi + '/api/verify_phone', {
2760          method: 'POST',
2761          headers: {
2762            'X-API-KEY': 'officex-homey-dev',
2763            Accept: 'application/json',
2764            'Content-Type': 'application/json'
2765          },
2766          body: JSON.stringify({
2767            token: token
2768          })
2769        });
2770        var data = await res.json();
2771        if (data.code === 0) {
2772          if (window.Swal) Swal.fire({
2773            toast: true,
2774            position: 'top-end',
2775            icon: 'success',
2776            title: data.msg,
2777            showConfirmButton: false,
2778            timer: 1500
2779          });
2780          if (data.payload && data.payload.active === 0) goToStep2();
2781          else {
2782            showStep(1, 3);
2783            nextStep();
2784          }
2785          nextBtn.disabled = false;
2786        } else {
2787          if (window.Swal) Swal.fire({
2788            toast: true,
2789            position: 'top-end',
2790            icon: 'error',
2791            title: data.msg || 'ดำเนินการไม่สำเร็จ',
2792            showConfirmButton: false,
2793            timer: 1500
2794          });
2795          nextBtn.disabled = false;
2796        }
2797      } catch (e) {
2798        nextBtn.disabled = false;
2799      }
2800    }
2801
2802    async function verifyOtp(phone, otp) {
2803      otpValidBtn.disabled = true;
2804      try {
2805        var jwtPayload = {
2806          phone_verify: phone,
2807          otp_verify: otp,
2808          iat: Math.floor(Date.now() / 1000)
2809        };
2810        var token = await signJwt(jwtPayload, CFG.jwtSecret);
2811        var res = await fetch(CFG.urlApi + '/api/verify_OTP', {
2812          method: 'POST',
2813          headers: {
2814            'X-API-KEY': 'officex-homey-dev',
2815            Accept: 'application/json',
2816            'Content-Type': 'application/json'
2817          },
2818          body: JSON.stringify({
2819            token: token
2820          })
2821        });
2822        var data = await res.json();
2823        if (data.code === 0) {
2824          if (window.Swal) Swal.fire({
2825            toast: true,
2826            position: 'top-end',
2827            icon: 'success',
2828            title: data.msg,
2829            showConfirmButton: false,
2830            timer: 1500
2831          });
2832          showStep(2, 3);
2833          nextStep();
2834          clearInterval(state.otpTimer);
2835          otpValidBtn.disabled = false;
2836        } else {
2837          if (window.Swal) Swal.fire({
2838            toast: true,
2839            position: 'top-end',
2840            icon: 'error',
2841            title: data.msg,
2842            showConfirmButton: false,
2843            timer: 1500
2844          });
2845          otpValidBtn.disabled = false;
2846        }
2847      } catch (e) {
2848        otpValidBtn.disabled = false;
2849      }
2850    }
2851
2852    function buildBankListFromJson() {
2853      var banks = Object.assign({}, DATA_BANK);
2854      if (state.prefixRegister.true_wallet) {
2855        Object.assign(banks, TRUEWALLET_BANK);
2856      }
2857      return Object.keys(banks).map(function(code) {
2858        return {
2859          bank_code: code,
2860          full_name: banks[code],
2861          bank_type: BANK_TYPE[code] || banks[code]
2862        };
2863      });
2864    }
2865
2866    function renderBankDropdown(bankData) {
2867      if (!bankDropOptions) return;
2868      var current = state.registerData.bank_code;
2869      bankDropOptions.innerHTML = '';
2870      var list = bankData.filter(function(item) {
2871        return item.bank_code !== 'PEER2PAY' && item.bank_code !== 'UMPAY';
2872      });
2873      state.banklist = list;
2874      list.forEach(function(bank) {
2875        var opt = document.createElement('div');
2876        opt.setAttribute('data-value', bank.bank_code);
2877        opt.setAttribute('role', 'option');
2878        opt.className = 'mr-bank-option';
2879        var imgUrl = getBankImgUrl(bank.bank_code);
2880        var imgHtml = imgUrl ?
2881          '<img src="' + imgUrl + '" alt="' + bank.bank_code + '" class="mr-bank-option-icon" onerror="this.style.display=\'none\'">' :
2882          '';
2883        opt.innerHTML = imgHtml + '<span>' + bank.full_name + '</span>';
2884        opt.addEventListener('click', function() {
2885          selectBank(bank);
2886          bankDropdown.classList.remove('open');
2887        });
2888        bankDropOptions.appendChild(opt);
2889      });
2890      if (current) {
2891        var selected = list.find(function(b) {
2892          return b.bank_code === current;
2893        });
2894        if (selected) updateBankSelectedDisplay(selected);
2895      }
2896    }
2897
2898    function loadBankList() {
2899      renderBankDropdown(buildBankListFromJson());
2900    }
2901
2902    function getAffIconUrl(icon) {
2903      if (!icon) return '';
2904      if (/^https?:\/\//.test(icon)) return icon;
2905      if (icon.charAt(0) === '/' && CFG.urlApi) {
2906        return String(CFG.urlApi).replace(/\/$/, '') + icon;
2907      }
2908      if (!CFG.affImgBase) return '';
2909      return String(CFG.affImgBase).replace(/\/?$/, '/') + icon;
2910    }
2911
2912    function updateAffSelectedDisplay(item) {
2913      if (!dropSelected) return;
2914      if (!item || !item.value) {
2915        dropSelected.classList.add('is-placeholder');
2916        dropSelected.textContent = 'เลือกช่องทาง';
2917        return;
2918      }
2919      dropSelected.classList.remove('is-placeholder');
2920      var imgUrl = getAffIconUrl(item.icon);
2921      var imgHtml = imgUrl ?
2922        '<img src="' + imgUrl + '" alt="' + item.text + '" class="mr-aff-option-icon" onerror="this.style.display=\'none\'">' :
2923        '';
2924      dropSelected.innerHTML = imgHtml + '<span>' + item.text + '</span>';
2925    }
2926
2927    function selectAff(item) {
2928      if (!item || !item.value) return;
2929      referrerInput.value = item.value;
2930      state.registerData.affiliate = item.value;
2931      updateAffSelectedDisplay(item);
2932    }
2933
2934    function renderAffDropdown() {
2935      if (!dropOptions) return;
2936      dropOptions.innerHTML = '';
2937      AFF_DATA.forEach(function(item) {
2938        var opt = document.createElement('div');
2939        opt.setAttribute('data-value', item.value);
2940        opt.setAttribute('role', 'option');
2941        opt.className = 'mr-aff-option';
2942        var imgUrl = getAffIconUrl(item.icon);
2943        var imgHtml = imgUrl ?
2944          '<img src="' + imgUrl + '" alt="' + item.text + '" class="mr-aff-option-icon" onerror="this.style.display=\'none\'">' :
2945          '';
2946        opt.innerHTML = imgHtml + '<span>' + item.text + '</span>';
2947        opt.addEventListener('click', function() {
2948          selectAff(item);
2949          dropdown.classList.remove('open');
2950        });
2951        dropOptions.appendChild(opt);
2952      });
2953    }
2954
2955    function loadAffList() {
2956      renderAffDropdown();
2957      updateAffSelectedDisplay(null);
2958    }
2959
2960    async function checkAffiliateFromQuery() {
2961      var affWrap = el('mr-aff-wrap');
2962      var params = new URLSearchParams(window.location.search);
2963      var ref = params.get('ref');
2964      var clickid = params.get('clickid');
2965
2966      state.registerData.ref_join = '';
2967      state.registerData.clickid = clickid || '';
2968
2969      if (ref) {
2970        if (affWrap) affWrap.style.display = 'none';
2971        state.registerData.affiliate = 'INVITFRIEND';
2972        referrerInput.value = 'INVITFRIEND';
2973        try {
2974          var jwtPayload = {
2975            join: ref,
2976            iat: Math.floor(Date.now() / 1000)
2977          };
2978          var token = await signJwt(jwtPayload, CFG.jwtSecret);
2979          var res = await fetch(CFG.urlApi + '/AffrefDE', {
2980            method: 'POST',
2981            headers: {
2982              'X-API-KEY': 'officex-homey-dev',
2983              Accept: 'application/json',
2984              'Content-Type': 'application/json'
2985            },
2986            body: JSON.stringify({
2987              token: token
2988            })
2989          });
2990          var data = await res.json();
2991          if (data.payload && data.payload.token) {
2992            state.registerData.ref_join = data.payload.token;
2993          }
2994        } catch (e) {}
2995      } else {
2996        if (affWrap) affWrap.style.display = '';
2997        if (!state.registerData.affiliate) {
2998          referrerInput.value = '';
2999          updateAffSelectedDisplay(null);
3000        }
3001      }
3002    }
3003
3004    function renderRuleRegister(data) {
3005      el('mr-rule-body').innerHTML = '<p>' + data.data.register.description + '</p>';
3006    }
3007
3008    function usePrefixData(data) {
3009      var pr = state.prefixRegister;
3010      var linecontact = "https:\/\/cutt.ly\/wcpg77" ||
3011        (data.data.contact && data.data.contact.linecontact) || '';
3012      if (linecontact) {
3013        el('mr-contact-link').addEventListener('click', function() {
3014          window.open(linecontact, '_blank');
3015        });
3016        el('mr-contact-link-step').addEventListener('click', function() {
3017          window.open(linecontact, '_blank');
3018        });
3019      }
3020      pr.type_register = data.data.register.type_register;
3021      pr.bank_account = data.data.register.bank_account;
3022      pr.otp = data.data.register.otp;
3023      pr.true_wallet = data.data.register.true_wallet;
3024      pr.disable = data.data.register.disable;
3025      pr.description = data.data.register.description;
3026      pr.not_checkbank = data.data.register.not_checkbank;
3027
3028      loadBankList();
3029      // TEMP: renderRuleRegister(data);
3030    }
3031
3032    /* ===== CONFIRM REGISTER ===== */
3033    window._mrConfirmRegister = async function() {
3034      var bankNumber = bankNumInput.value.trim();
3035      var promotion = parseInt(document.querySelector('input[name="mr-promotion"]:checked')?.value, 10) || 0;
3036      var affWrap = el('mr-aff-wrap');
3037      var affVisible = affWrap && affWrap.style.display !== 'none';
3038
3039      if (affVisible && !state.registerData.affiliate) {
3040        if (window.Swal) Swal.fire({
3041          toast: true,
3042          position: 'top-end',
3043          icon: 'error',
3044          title: 'คุณรู้จักเราจากช่องทางไหน',
3045          showConfirmButton: false,
3046          timer: 1500
3047        });
3048        return;
3049      }
3050
3051      if (state.prefixRegister.not_checkbank) state.registerData.register_type = 'WAIT';
3052      state.registerData.bank_number = bankNumber;
3053      state.registerData.affiliate = referrerInput.value || state.registerData.affiliate;
3054      state.registerData.bank_name = trueWallet.value;
3055      state.registerData.promotion = promotion;
3056
3057      var timedate = window.moment ?
3058        moment(new Date()).format('Y-MM-DD HH:mm:ss') :
3059        new Date().toISOString().slice(0, 19).replace('T', ' ');
3060      submitBtn.disabled = true;
3061      try {
3062        var jwtPayload = {
3063          date_regis: timedate,
3064          phone_number: state.registerData.phone_number,
3065          password: state.registerData.password,
3066          bank_type: state.registerData.bank_type,
3067          bank_code: state.registerData.bank_code,
3068          bank_number: bankNumber,
3069          bank_name: state.registerData.bank_name || '',
3070          affiliate: state.registerData.affiliate,
3071          join: state.registerData.ref_join || '',
3072          clickid: state.registerData.clickid || '',
3073          is_bonus: promotion,
3074          iat: Math.floor(Date.now() / 1000)
3075        };
3076        var token = await signJwt(jwtPayload, CFG.jwtSecret);
3077        var res = await fetch(CFG.urlApi + '/api/register', {
3078          method: 'POST',
3079          headers: {
3080            'X-API-KEY': 'officex-homey-dev',
3081            Accept: 'application/json',
3082            'Content-Type': 'application/json'
3083          },
3084          body: JSON.stringify({
3085            token: token
3086          })
3087        });
3088        var data = await res.json();
3089        if (data.code === 0) {
3090          submitBtn.disabled = false;
3091          showModalSuccess();
3092        } else {
3093          if (window.Swal) Swal.fire({
3094            toast: true,
3095            position: 'top-end',
3096            icon: 'error',
3097            title: data.msg || data.message?.message || 'สมัครสมาชิกไม่สำเร็จ',
3098            showConfirmButton: false,
3099            timer: 1500
3100          });
3101          submitBtn.disabled = false;
3102          if (data.payload?.is_input_bank_name || data.data?.is_input_bank_name || state.prefixRegister.not_checkbank) {
3103            state.registerData.register_type = 'WAIT';
3104            trueWallet.classList.add('show');
3105          }
3106        }
3107      } catch (e) {
3108        submitBtn.disabled = false;
3109      }
3110    };
3111
3112    // TEMP: ปิด rules modal ชั่วคราว
3113    /*
3114    function closeRulesAndShowRegister() {
3115      bsHide('mr-modal-rules');
3116      bsShow('modal-register');
3117    }
3118
3119    el('mr-rule-trigger').addEventListener('click', function() {
3120      bsHide('modal-register');
3121      bsShow('mr-modal-rules');
3122    });
3123    el('mr-rules-close').addEventListener('click', function() {
3124      closeRulesAndShowRegister();
3125    });
3126    */
3127
3128    /* ===== SUCCESS MODAL ===== */
3129    function showModalSuccess() {
3130      bsShow('mr-modal-success');
3131    }
3132
3133    function openLoginAfterRegister() {
3134      bsHide('mr-modal-success');
3135      ModalRegister.close();
3136      if (window.ModalLogin) ModalLogin.open();
3137      else window.location.href = CFG.siteUrl;
3138    }
3139
3140    el('mr-success-close').addEventListener('click', openLoginAfterRegister);
3141    el('mr-success-btn').addEventListener('click', openLoginAfterRegister);
3142
3143    /* ===== GOTO LOGIN LINK ===== */
3144    el('mr-goto-login').addEventListener('click', function() {
3145      ModalRegister.close();
3146      if (window.ModalLogin) ModalLogin.open();
3147      else window.location.href = CFG.siteUrl;
3148    });
3149
3150    /* ===== RESET MODAL STATE ===== */
3151    function resetAll() {
3152      state.currentStep = 1;
3153      state.otpSeconds = 120;
3154      state.walletTouched = false;
3155      state.bankTouched = false;
3156      clearInterval(state.otpTimer);
3157      state.registerData = {
3158        phone_number: '',
3159        password: '',
3160        affiliate: '',
3161        ref_join: '',
3162        clickid: '',
3163        bank_code: '',
3164        bank_type: '',
3165        bank_number: '',
3166        bank_name: '',
3167        register_type: ''
3168      };
3169
3170      // reset steps visibility
3171      [1, 2, 3, 4].forEach(function(s) {
3172        var step = el('mr-step-' + s);
3173        if (step) step.classList.remove('active');
3174      });
3175      var s1 = el('mr-step-1');
3176      if (s1) s1.classList.add('active');
3177
3178      // reset inputs
3179      phoneInput.value = '';
3180      phoneError.textContent = '';
3181      nextBtn.disabled = true;
3182      // TEMP: termsChk.checked = false;
3183      resetOtpInputs();
3184      pwdInput.value = '';
3185      cfmPwdInput.value = '';
3186      pwdError.textContent = '';
3187      pwdErrorCfm.textContent = '';
3188      nextStep3Btn.disabled = true;
3189      updateBankSelectedDisplay(null);
3190      if (bankDropdown) bankDropdown.classList.remove('open');
3191      bankNumInput.value = '';
3192      trueWallet.value = '';
3193      submitBtn.disabled = true;
3194      trueWallet.classList.add('hidden');
3195      trueWallet.classList.remove('show');
3196      accountError.textContent = '';
3197      walletError.textContent = '';
3198      state.registerData.bank_code = '';
3199      state.registerData.bank_type = '';
3200      updateAffSelectedDisplay(null);
3201      if (dropdown) dropdown.classList.remove('open');
3202      referrerInput.value = '';
3203      checkAffiliateFromQuery();
3204      updateSteps();
3205    }
3206
3207    /* ===== INIT ===== */
3208    var prefixLoaded = false;
3209
3210    function init() {
3211      updateSteps();
3212      loadBankList();
3213      loadAffList();
3214      checkAffiliateFromQuery();
3215    }
3216
3217    /* ===== PUBLIC API ===== */
3218    window.ModalRegister = {
3219      /**
3220       * เปิด modal สมัครสมาชิก
3221       * เรียกได้จากทุกหน้า: ModalRegister.open()
3222       */
3223      open: function() {
3224        resetAll();
3225        if (!prefixLoaded) {
3226          fetchPrefix().then(function(data) {
3227            if (data) {
3228              usePrefixData(data);
3229              prefixLoaded = true;
3230            } else {
3231              loadBankList();
3232            }
3233          });
3234        } else {
3235          loadBankList();
3236        }
3237        bsShow('modal-register');
3238      },
3239      /**
3240       * ปิด modal สมัครสมาชิก
3241       * เรียกได้จากทุกหน้า: ModalRegister.close()
3242       */
3243      close: function() {
3244        bsHide('modal-register');
3245        bsHide('mr-modal-rules');
3246        bsHide('mr-modal-success');
3247        clearInterval(state.otpTimer);
3248      },
3249      /**
3250       * Override config หลัง include
3251       * เรียกได้จากทุกหน้า: ModalRegister.setConfig({ urlApi: '...', siteUrl: '...' })
3252       */
3253      setConfig: function(cfg) {
3254        Object.assign(CFG, cfg);
3255      }
3256    };
3257
3258    init();
3259  })();
3260</script>
3260
3261<!-- ============================================================
3262     MODAL LOGIN — CSS (Scoped · ไม่ทับ CSS ของ project ปลายทาง)
3263     ทุก rule ถูก scope ด้วย #modal-login
3264     ============================================================ -->
3265<style>
3266  /* ===== RESET & BOX MODEL ===== */
3267  #modal-login *,
3268  #modal-login *::before,
3269  #modal-login *::after {
3270    box-sizing: border-box;
3271  }
3272
3273  /* ===== THEME — แก้สีปุ่ม/ตัวหนังสือ modal ที่นี่ที่เดียว ===== */
3274  #modal-login,
3275  #ml-modal-forgot,
3276  #ml-modal-disable-register {
3277    --ml-primary: #ff5600;
3278    /* สีพื้นหลังปุ่มหลัก (เข้าสู่ระบบ) */
3279    --ml-btn-text: #ffffff;
3280    /* สีตัวหนังสือปุ่มหลัก */
3281    --ml-btn-line: #39cd00;
3282    /* สีพื้นหลังปุ่ม LINE / ติดต่อ */
3283    --ml-btn-line-text: #ffffff;
3284    /* สีตัวหนังสือปุ่ม LINE / ติดต่อ */
3285    --ml-text-main: #ffffff;
3286    /* ตัวหนังสือทั่วไปใน modal */
3287    --ml-text-accent: #ff5600;
3288    /* ลิงก์ / ข้อความเน้น */
3289    --ml-modal-bg: #000000b8;
3290    /* พื้นหลัง modal */
3291    --ml-modal-border: #ff5600;
3292    /* ขอบ modal */
3293    --ml-close: #e50b00;
3294    /* ปุ่มปิด (X) */
3295    --ml-error: red;
3296    /* ข้อความ error */
3297    --ml-input-text: #ffffff;
3298    /* ตัวหนังสือใน input */
3299    --ml-input-placeholder: #ffffff;
3300    /* placeholder */
3301    --ml-input-border: #a5a5a58c;
3302    /* ขอบ input */
3303    --ml-font: "Prompt", sans-serif;
3304    --ml-bg-input: rgba(0, 0, 0, .56);
3305  }
3306
3307  /* ===== FONT & BASE ===== */
3308  #modal-login {
3309    font-family: var(--ml-font);
3310    font-size: 16px;
3311  }
3312
3313  #modal-login p {
3314    margin: 0;
3315    font-size: 16px;
3316  }
3317
3318  #modal-login h1 {
3319    font-size: 32px;
3320    font-weight: 600;
3321    margin-bottom: 1rem;
3322  }
3323
3324  #modal-login h5 {
3325    font-weight: 600;
3326    margin: 0;
3327  }
3328
3329  #modal-login figure {
3330    margin: 0;
3331  }
3332
3333  #modal-login a {
3334    text-decoration: none !important;
3335    font-size: 16px;
3336    font-weight: 400;
3337    color: var(--ml-text-accent);
3338  }
3339
3340  #modal-login :where(p, a, span, h1, h2, h3, h4, h5, h6) {
3341    font-weight: 500;
3342  }
3343
3344  /* ===== CLOSE BUTTON ===== */
3345  #modal-login .modal-header .close span,
3346  #modal-login .modal-header .close i {
3347    color: var(--ml-close) !important;
3348  }
3349
3350  /* ===== BOOTSTRAP MODAL CONTENT DARK THEME ===== */
3351  #modal-login .modal-content,
3352  #ml-modal-forgot .modal-content,
3353  #ml-modal-disable-register .modal-content {
3354    background: var(--ml-modal-bg);
3355    border: 2px solid var(--ml-modal-border);
3356    border-radius: 16px;
3357    color: var(--ml-text-main);
3358    font-family: var(--ml-font);
3359  }
3360
3361  #modal-login .modal-body {
3362    padding: 1rem 1.5rem 2rem;
3363    overflow-y: auto;
3364    -webkit-overflow-scrolling: touch;
3365  }
3366
3367  /* ===== LAYOUT ===== */
3368  #modal-login .form-layout {
3369    display: flex;
3370    justify-content: center;
3371  }
3372
3373  #modal-login .from-login {
3374    width: 100%;
3375    margin: auto;
3376  }
3377
3378  #modal-login .logo {
3379    width: clamp(200px, 40vw, 400px);
3380    margin: 0 auto;
3381  }
3382
3383  #modal-login .logo img {
3384    width: 100%;
3385    height: auto;
3386  }
3387
3388  #modal-login .form {
3389    margin: 0 auto;
3390    color: var(--ml-text-main);
3391  }
3392
3393  /* ===== INPUTS ===== */
3394  #modal-login input {
3395    width: 100%;
3396    padding: 10px;
3397    border-radius: 100px;
3398    border: 1px solid var(--ml-input-border);
3399    background-color: var(--ml-bg-input);
3400    color: var(--ml-input-text);
3401    font-family: var(--ml-font);
3402    font-size: 16px;
3403  }
3404
3405  #modal-login input:focus-visible,
3406  #modal-login input:focus {
3407    outline: none;
3408  }
3409
3410  #modal-login ::placeholder {
3411    color: var(--ml-input-placeholder);
3412    opacity: 1;
3413  }
3414
3415  /* ===== BUTTONS ===== */
3416  #modal-login .btn-login .btn-text-one,
3417  #modal-login .btn-forget .btn-text-one,
3418  #ml-modal-forgot .btn-text-one {
3419    color: var(--ml-btn-text);
3420  }
3421
3422  #modal-login .btn-line .btn-text-one,
3423  #ml-modal-disable-register .btn-line .btn-text-one {
3424    color: var(--ml-btn-line-text);
3425  }
3426
3427  #modal-login .btn-login,
3428  #modal-login .btn-register,
3429  #modal-login .btn-forget {
3430    width: 100%;
3431    padding: 10px;
3432    border-radius: 100px;
3433    border: 1px solid rgba(0, 0, 0, .56);
3434    background: var(--ml-primary);
3435    color: var(--ml-btn-text);
3436    margin-bottom: 10px;
3437    cursor: pointer;
3438    font-family: var(--ml-font);
3439    font-size: 16px;
3440  }
3441
3442  #modal-login .btn-register {
3443    background: transparent;
3444    border: 1px solid var(--ml-primary);
3445    color: var(--ml-primary);
3446    margin-top: 0.5rem;
3447  }
3448
3449  #modal-login .btn-line {
3450    width: 100%;
3451    padding: 10px;
3452    border-radius: 100px;
3453    border: none;
3454    background: var(--ml-btn-line);
3455    color: var(--ml-btn-line-text);
3456    margin-top: 10px;
3457    cursor: pointer;
3458    font-family: var(--ml-font);
3459    font-size: 16px;
3460    display: flex;
3461    text-align: center;
3462    justify-content: center;
3463  }
3464
3465  #modal-login .btn-line.line-login {
3466    display: none;
3467  }
3468
3469  #modal-login .btn-line.active-line {
3470    display: block !important;
3471  }
3472
3473  #modal-login button[disabled] {
3474    background-color: var(--ml-primary) !important;
3475    cursor: not-allowed;
3476    border: none;
3477    color: var(--ml-btn-text);
3478    position: relative;
3479  }
3480
3481  #modal-login button[disabled]::after {
3482    content: "";
3483    position: absolute;
3484    inset: 0;
3485    background-color: #000;
3486    opacity: 0.5;
3487    z-index: 1;
3488    border-radius: 100px;
3489  }
3490
3491  /* ===== FORM FIELDS ===== */
3492  #modal-login .error {
3493    color: var(--ml-error);
3494    font-size: 14px;
3495    margin-top: 4px;
3496  }
3497
3498  #modal-login .phone-number,
3499  #modal-login .password {
3500    margin-top: 1rem;
3501  }
3502
3503  #modal-login .password-wrapper {
3504    position: relative;
3505  }
3506
3507  #modal-login .toggle-button {
3508    position: absolute;
3509    top: 50%;
3510    right: 10px;
3511    transform: translateY(-50%);
3512    display: flex;
3513    align-items: center;
3514    cursor: pointer;
3515    color: #666;
3516  }
3517
3518  #modal-login .eye-icon {
3519    width: 20px;
3520    height: 20px;
3521    color: var(--ml-text-main);
3522  }
3523
3524  #modal-login .page-wrap {
3525    width: 100%;
3526  }
3527
3528  #modal-login .page-logo {
3529    text-align: center;
3530    margin-bottom: 1rem;
3531  }
3532
3533  #modal-login .page-logo img {
3534    width: clamp(200px, 50vw, 250px);
3535    height: auto;
3536  }
3537
3538  #modal-login .form-group label,
3539  #modal-login .form-password>label {
3540    display: block;
3541    margin-bottom: 0.5rem;
3542    color: var(--ml-text-main);
3543  }
3544
3545  #modal-login .form-password .forgot-password {
3546    margin: 0.5rem 0 0;
3547  }
3548
3549  #modal-login .form-password .forgot-password small {
3550    color: var(--ml-text-accent);
3551    cursor: pointer;
3552  }
3553
3554  /* ===== FORGOT / NOT-MEMBER ===== */
3555  #modal-login .forgot-password {
3556    margin: 1rem 0;
3557    text-align: right;
3558  }
3559
3560  #modal-login .forgot-password span {
3561    color: var(--ml-text-accent);
3562    cursor: pointer;
3563  }
3564
3565  #modal-login .not-member {
3566    text-align: center;
3567    display: block;
3568    width: 100%;
3569    margin: 1rem 0;
3570    font-size: 16px;
3571    color: var(--ml-text-main);
3572  }
3573
3574  #modal-login .not-member a {
3575    color: var(--ml-text-accent) !important;
3576  }
3577
3578  /* ===== MODAL CONTENT (forgot / disable) ===== */
3579  #ml-modal-forgot .modal-content,
3580  #ml-modal-disable-register .modal-content {
3581    position: relative;
3582    display: flex;
3583    flex-direction: column;
3584    width: 100%;
3585    pointer-events: auto;
3586    background-color: rgb(0, 0, 0);
3587    border-radius: 16px;
3588    outline: 0;
3589    color: var(--ml-text-main);
3590    font-family: var(--ml-font);
3591  }
3592
3593  #ml-modal-forgot .modal-header,
3594  #ml-modal-disable-register .modal-header {
3595    border: none;
3596    padding: 1rem 1rem 0.5rem;
3597    display: flex;
3598    align-items: center;
3599    justify-content: space-between;
3600  }
3601
3602  #ml-modal-forgot .modal-header.justify-content-end,
3603  #ml-modal-disable-register .modal-header.justify-content-end {
3604    justify-content: flex-end;
3605  }
3606
3607  #ml-modal-forgot .modal-title {
3608    font-size: 18px;
3609    font-weight: 600;
3610    margin: 0;
3611  }
3612
3613  #ml-modal-forgot .modal-body,
3614  #ml-modal-disable-register .modal-body {
3615    padding: 1rem;
3616    font-size: 16px;
3617  }
3618
3619  #ml-modal-forgot .modal-footer {
3620    border: none;
3621    padding: 0.5rem 1rem 1rem;
3622  }
3623
3624  /* ===== MODAL SHELL (login + sub-modals) ===== */
3625  #modal-login .modal-dialog,
3626  #ml-modal-forgot .modal-dialog,
3627  #ml-modal-disable-register .modal-dialog {
3628    width: calc(100% - 2rem);
3629    max-width: 480px;
3630    margin: 1rem auto;
3631  }
3632
3633  #modal-login .modal-dialog.modal-dialog-scrollable .modal-content {
3634    max-height: calc(100dvh - 2rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
3635  }
3636
3637  #modal-login .modal-header {
3638    position: relative;
3639    display: flex;
3640    align-items: flex-start;
3641    justify-content: flex-end;
3642    border: none;
3643    min-height: 2.5rem;
3644    padding: 0.75rem 2.75rem 0.75rem 0.75rem;
3645    flex-shrink: 0;
3646  }
3647
3648  #modal-login .modal-header .close {
3649    position: absolute;
3650    right: 0.75rem;
3651    top: 0.75rem;
3652    transform: none;
3653    margin: 0;
3654    padding: 0.25rem;
3655    z-index: 2;
3656    opacity: 1;
3657  }
3658
3659  #ml-modal-forgot .modal-dialog .modal-content,
3660  #ml-modal-disable-register .modal-dialog .modal-content {
3661    max-height: calc(100dvh - 2rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
3662  }
3663
3664  #ml-modal-forgot .modal-content input {
3665    width: 100%;
3666    padding: 10px;
3667    border-radius: 100px;
3668    border: 1px solid var(--ml-input-border);
3669    background-color: var(--ml-bg-input);
3670    color: var(--ml-input-text);
3671    outline: none;
3672  }
3673
3674  #ml-modal-forgot i,
3675  #ml-modal-disable-register i {
3676    color: var(--ml-close);
3677    font-size: 1.5rem;
3678    cursor: pointer;
3679  }
3680
3681  #ml-modal-forgot .btn-forget {
3682    width: 100%;
3683    padding: 10px;
3684    border-radius: 100px;
3685    border: none;
3686    background: var(--ml-primary);
3687    color: var(--ml-btn-text);
3688    cursor: pointer;
3689    font-family: var(--ml-font);
3690    font-size: 16px;
3691  }
3692
3693  #ml-modal-disable-register .btn-line {
3694    display: inline-block;
3695    padding: 10px;
3696    border-radius: 100px;
3697    border: none;
3698    background: var(--ml-btn-line);
3699    color: var(--ml-btn-line-text);
3700    cursor: pointer;
3701    font-family: var(--ml-font);
3702    font-size: 16px;
3703  }
3704
3705  #ml-modal-disable-register .text-disabled-register {
3706    font-size: clamp(18px, 1.5vw, 20px);
3707    font-weight: 600;
3708    margin: 2rem 0;
3709  }
3710
3711  /* ===== FLEX UTILITIES ===== */
3712  #modal-login .d-flex {
3713    display: flex !important;
3714  }
3715
3716  #modal-login .justify-content-center {
3717    justify-content: center !important;
3718  }
3719
3720  #modal-login .align-items-center {
3721    align-items: center !important;
3722  }
3723
3724  #modal-login .text-center {
3725    text-align: center !important;
3726  }
3727
3728  #modal-login .text-white {
3729    color: var(--ml-text-main) !important;
3730  }
3731
3732  #modal-login .mt-2 {
3733    margin-top: 0.5rem !important;
3734  }
3735
3736  #modal-login .mt-4 {
3737    margin-top: 1rem !important;
3738  }
3739
3740  #modal-login .me-2 {
3741    margin-right: 0.5rem !important;
3742  }
3743
3744  #modal-login .cursor-pointer {
3745    cursor: pointer !important;
3746  }
3747
3748  /* ===== RESPONSIVE ===== */
3749  @media screen and (max-width: 768px) {
3750
3751    #modal-login .modal-dialog,
3752    #ml-modal-forgot .modal-dialog,
3753    #ml-modal-disable-register .modal-dialog {
3754      width: calc(100% - 1.5rem);
3755      margin: 0.75rem auto;
3756    }
3757
3758    #modal-login h1 {
3759      font-size: clamp(1.375rem, 5vw, 2rem);
3760    }
3761
3762    #modal-login .logo {
3763      width: clamp(140px, 50vw, 280px);
3764    }
3765
3766    #modal-login .modal-body {
3767      padding: 0.75rem 1rem 1.5rem;
3768    }
3769
3770    #ml-modal-forgot .modal-body,
3771    #ml-modal-disable-register .modal-body {
3772      padding: 0.75rem 1rem;
3773    }
3774
3775    #ml-modal-forgot .modal-title {
3776      font-size: 16px;
3777    }
3778  }
3779
3780  @media screen and (max-width: 600px) {
3781    #modal-login .from-login {
3782      padding: 0 0.25rem;
3783    }
3784
3785    #modal-login .modal-header {
3786      min-height: 2.25rem;
3787      padding: 0.75rem 2.75rem 0.75rem 0.75rem;
3788    }
3789
3790    #modal-login .not-member {
3791      font-size: 14px;
3792      line-height: 1.5;
3793    }
3794
3795    #modal-login .btn-login,
3796    #modal-login .btn-line,
3797    #ml-modal-forgot .btn-forget {
3798      min-height: 44px;
3799    }
3800
3801    #ml-modal-disable-register .text-disabled-register {
3802      margin: 1.25rem 0;
3803    }
3804  }
3805
3806  @media screen and (max-width: 380px) {
3807
3808    #modal-login .modal-dialog,
3809    #ml-modal-forgot .modal-dialog,
3810    #ml-modal-disable-register .modal-dialog {
3811      width: calc(100% - 1rem);
3812      margin: 0.5rem auto;
3813    }
3814
3815    #modal-login input {
3816      padding: 8px 2.5rem 8px 12px;
3817      font-size: 16px;
3818    }
3819  }
3820
3821  @media screen and (max-height: 500px) and (orientation: landscape) {
3822
3823    #modal-login .modal-dialog.modal-dialog-scrollable .modal-content,
3824    #ml-modal-forgot .modal-dialog .modal-content,
3825    #ml-modal-disable-register .modal-dialog .modal-content {
3826      max-height: calc(100dvh - 1rem);
3827    }
3828
3829    #modal-login .modal-body {
3830      padding: 0.5rem 1rem 1rem;
3831    }
3832
3833    #modal-login h1 {
3834      font-size: 1.25rem;
3835      margin-bottom: 0.5rem;
3836    }
3837
3838    #modal-login .phone-number,
3839    #modal-login .password {
3840      margin-top: 0.5rem;
3841    }
3842
3843    #modal-login .logo img {
3844      max-height: 40px !important;
3845    }
3846  }
3847</style>
3848
3849<!-- ============================================================
3850     MODAL LOGIN — HTML
3851     ============================================================ -->
3852<div class="modal modal-diamond fade" id="modal-login" tabindex="-1" role="dialog"
3853  aria-labelledby="ml-modal-title" aria-hidden="true"
3854  data-backdrop="static" data-keyboard="false"
3855  data-bs-backdrop="static" data-bs-keyboard="false">
3856  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
3857    <div class="modal-content">
3858
3859      <!-- Modal Header — close only (PopupLogin style) -->
3860      <div class="modal-header">
3861        <button type="button" class="close" data-dismiss="modal" aria-label="Close"
3862          onclick="ModalLogin.close()">
3863          <span aria-hidden="true"><i class="fas fa-times"></i></span>
3864        </button>
3865      </div>
3866
3867      <div class="modal-body">
3868        <div class="from-login page-wrap">
3869
3870          <div class="page-logo" id="ml-logo">
3871            <figure class="thumb">
3872              <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/logo-pgslot77-main.png" alt="logo" style="max-height:60px;width:auto;" />
3873            </figure>
3874          </div>
3875
3876          <form id="ml-login-form" class="form" novalidate>
3877            <!-- Phone -->
3878            <div class="form-group phone-number">
3879              <label for="ml-phone">กรอกเบอร์โทรศัพท์</label>
3880              <input id="ml-phone" type="tel" maxlength="10"
3881                oninput="if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" />
3882            </div>
3883
3884            <!-- Password -->
3885            <div class="form-password password">
3886              <label for="ml-password">กรอกรหัสผ่าน</label>
3887              <div class="password-wrapper">
3888                <input type="password" id="ml-password" />
3889                <div class="toggle-button" id="ml-toggle-password" aria-label="แสดง/ซ่อนรหัสผ่าน">
3890                  <span id="ml-icon-password">
3891                    <svg width="24" height="19" viewBox="0 0 24 19" fill="currentColor" class="eye-icon" xmlns="http://www.w3.org/2000/svg">
3892                      <path d="M19.5254 0.966275C19.2322 0.673025 18.7582 0.673025 18.4649 0.966275L16.3919 3.03928C15.0802 2.51128 13.6154 2.17078 11.9999 2.17078C4.80066 2.17078 0.303663 9.15553 0.116163 9.45328C0.00516307 9.62953 -0.0233369 9.83428 0.0201631 10.0225C-0.0158369 10.201 0.00741308 10.3923 0.110163 10.5603C0.214413 10.7313 1.70166 13.102 4.34166 15.091L2.59941 16.8325C2.30616 17.1258 2.30616 17.5998 2.59941 17.893C2.74566 18.0393 2.93766 18.1128 3.12966 18.1128C3.32166 18.1128 3.51366 18.0393 3.65991 17.893L19.5254 2.02678C19.8179 1.73428 19.8179 1.25953 19.5254 0.966275ZM7.67991 9.95578C7.67991 7.57378 9.61791 5.63578 11.9999 5.63578C12.5339 5.63578 13.0439 5.73628 13.5157 5.91478L12.2699 7.16053C12.1799 7.15078 12.0922 7.13578 11.9999 7.13578C10.4452 7.13578 9.17991 8.40103 9.17991 9.95578C9.17991 10.048 9.19566 10.1358 9.20466 10.2258L7.95891 11.4715C7.78041 11.0005 7.67991 10.4898 7.67991 9.95578ZM23.8837 10.5468C23.6962 10.8438 19.1992 17.8293 11.9999 17.8293C10.1204 17.8293 8.44041 17.3725 6.97416 16.6915L9.92391 13.741C10.5404 14.0808 11.2484 14.275 12.0007 14.275C14.3827 14.275 16.3207 12.337 16.3207 9.95502C16.3207 9.20278 16.1264 8.49553 15.7867 7.87827L19.1392 4.52578C22.1047 6.57928 23.7802 9.25753 23.8904 9.43903C23.9932 9.60703 24.0164 9.79827 23.9804 9.97678C24.0232 10.1665 23.9954 10.3705 23.8837 10.5468ZM11.0624 12.6033L14.6474 9.01903C14.7524 9.31378 14.8199 9.62653 14.8199 9.95653C14.8199 11.5113 13.5547 12.7765 11.9999 12.7765C11.6699 12.7758 11.3572 12.7083 11.0624 12.6033Z" fill="white" />
3893                    </svg>
3894                  </span>
3895                </div>
3896              </div>
3897              <div class="forgot-password text-right" id="ml-forgot-trigger">
3898                <small>ลืมรหัสผ่าน</small>
3899              </div>
3900            </div>
3901
3902            <!-- Submit -->
3903            <div class="text-center mt-4">
3904              <button type="submit" class="btn-login" id="ml-submit-btn">
3905                <span class="btn-text-one" id="ml-submit-text">เข้าสู่ระบบ</span>
3906              </button>
3907            </div>
3908
3909            <!-- Register -->
3910            <div class="text-center mt-4">
3911              <button type="button" class="btn-register" id="ml-goto-register">
3912                สมัครสมาชิก
3913              </button>
3914            </div>
3915          </form>
3916
3917          <!-- Line login -->
3918          <button class="btn-line line-login" id="ml-btn-line-login" style="display:none;">
3919            <span class="btn-text-one">เข้าสู่ระบบผ่านไลน์</span>
3920          </button>
3921
3922          <!-- Contact support -->
3923          <a class="btn-line" href="https://cutt.ly/wcpg77">
3924            <span class="btn-text-one">พบปัญหาติดต่อทีมงาน</span>
3925          </a>
3926
3927        </div><!-- /.from-login -->
3928      </div><!-- /.modal-body -->
3929    </div><!-- /.modal-content -->
3930  </div><!-- /.modal-dialog -->
3931</div><!-- /#modal-login -->
3932
3933<!-- Modal: ลืมรหัสผ่าน -->
3934<div class="modal fade" id="ml-modal-forgot" tabindex="-1" role="dialog" data-bs-backdrop="static" data-backdrop="static">
3935  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
3936    <div class="modal-content">
3937      <div class="modal-header">
3938        <h5 class="modal-title">ลืมรหัสผ่าน</h5>
3939        <i class="far fa-times-circle" style="cursor:pointer;" id="ml-forgot-close"></i>
3940      </div>
3941      <div class="modal-body">
3942        <div class="phone-number">
3943          <p class="text-white/70 font-sans text-[14px] my-1">เบอร์โทรศัพท์</p>
3944          <input id="ml-phone-forget" type="tel" placeholder="กรุณากรอกเบอร์โทรศัพท์" maxlength="10" />
3945          <div id="ml-phone-error-forget" class="error"></div>
3946        </div>
3947      </div>
3948      <div class="modal-footer">
3949        <button class="btn-forget" id="ml-forget-btn" disabled>
3950          <span class="btn-text-one">ตกลง</span>
3951        </button>
3952      </div>
3953    </div>
3954  </div>
3955</div>
3956
3957<!-- Modal: ปิดรับสมัคร -->
3958<div class="modal fade" id="ml-modal-disable-register" tabindex="-1" role="dialog" data-bs-backdrop="static" data-backdrop="static">
3959  <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
3960    <div class="modal-content">
3961      <div class="modal-header justify-content-end">
3962        <i class="far fa-times-circle" style="cursor:pointer;" id="ml-disable-close"></i>
3963      </div>
3964      <div class="modal-body text-center">
3965        <svg width="81" height="80" viewBox="0 0 81 80" fill="none" xmlns="http://www.w3.org/2000/svg">
3966          <path fill-rule="evenodd" clip-rule="evenodd"
3967            d="M40.5 0C18.424 0 0.5 17.924 0.5 40C0.5 62.076 18.424 80 40.5 80C62.576 80 80.5 62.076 80.5 40C80.5 17.924 62.576 0 40.5 0ZM40.5 51.972C42.708 51.972 44.5 53.764 44.5 55.972C44.5 58.18 42.708 59.972 40.5 59.972C38.292 59.972 36.5 58.18 36.5 55.972C36.5 53.764 38.292 51.972 40.5 51.972ZM44.5 44V20C44.5 17.792 42.708 16 40.5 16C38.292 16 36.5 17.792 36.5 20V44C36.5 46.208 38.292 48 40.5 48C42.708 48 44.5 46.208 44.5 44Z"
3968            fill="#FFB711" />
3969        </svg>
3970        <p class="text-disabled-register">ขออภัยไม่สามารถสมัครสมาชิกได้ขณะนี้</p>
3971        <a class="btn-line" href="https://cutt.ly/wcpg77" style="width:60%;">
3972          <span class="btn-text-one">พบปัญหาติดต่อทีมงาน</span>
3973        </a>
3974      </div>
3975    </div>
3976  </div>
3977</div>
3978
3979<!-- ============================================================
3980     MODAL LOGIN — JAVASCRIPT (Self-Contained IIFE)
3981     ============================================================ -->
3982<script type="rocketlazyloadscript">
3983  (function() {
3984    /* =====================================================
3985       CONFIG — แก้ตรงนี้เพื่อย้าย project
3986       หรือ set window.ModalLoginConfig ก่อน include
3987       ===================================================== */
3988    var CFG = {
3989      urlApi: "https:\/\/pgslot77.pglst.com",
3990      siteUrl: "https:\/\/pgslot77.art\/",
3991      jwtSecret: 'ABAsercretPayload'
3992    };
3993    if (window.ModalLoginConfig) {
3994      Object.assign(CFG, window.ModalLoginConfig);
3995    }
3996
3997    /* ===== STATE ===== */
3998    var btnLoading = false;
3999
4000    /* ===== Swal toast helper ===== */
4001    function showSwal(message, icon) {
4002      if (!window.Swal) return;
4003      Swal.fire({
4004        toast: true,
4005        position: 'top-end',
4006        icon: icon || 'error',
4007        title: message,
4008        showConfirmButton: false,
4009        timer: 1500
4010      });
4011    }
4012
4013    /* ===== JWT sign (PopupLogin → $jwt.sign payload, secret) ===== */
4014    function toBase64Url(input) {
4015      var bytes = typeof input === 'string' ?
4016        new TextEncoder().encode(input) :
4017        new Uint8Array(input);
4018      var binary = '';
4019      for (var i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
4020      return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
4021    }
4022
4023    async function signJwt(payload, secret) {
4024      var header = {
4025        alg: 'HS256',
4026        typ: 'JWT'
4027      };
4028      var encodedHeader = toBase64Url(JSON.stringify(header));
4029      var encodedPayload = toBase64Url(JSON.stringify(payload));
4030      var signingInput = encodedHeader + '.' + encodedPayload;
4031      var key = await crypto.subtle.importKey(
4032        'raw',
4033        new TextEncoder().encode(secret), {
4034          name: 'HMAC',
4035          hash: 'SHA-256'
4036        },
4037        false,
4038        ['sign']
4039      );
4040      var signature = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(signingInput));
4041      return signingInput + '.' + toBase64Url(signature);
4042    }
4043
4044    /* ===== checkPhone — same logic as ESC_BAC checkPhone.js ===== */
4045    function checkPhone(number) {
4046      var pattern = /^[^a-z][0-9]+$/;
4047      if (number != null && number !== '') {
4048        if (pattern.test(number)) {
4049          if (number[0] === '0') {
4050            if (number.length === 10) return true;
4051            return 'กรุณากรอกเบอร์โทรศัพท์ให้ครบ 10 ตัว';
4052          }
4053          return 'เบอร์โทรศัพท์ต้องขึ้นต้นด้วย 0 เท่านั้น';
4054        }
4055        return 'เบอร์โทรของคุณกรุณากรอกแค่ตัวเลข';
4056      }
4057      return 'กรุณากรอกเบอร์โทรศัพท์';
4058    }
4059
4060    /* ===== ICON HELPERS ===== */
4061    var ICON_EYE_OPEN = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="eye-icon"><path d="M12 15a3 3 0 100-6 3 3 0 000 6z"/><path fill-rule="evenodd" d="M1.323 11.447C2.811 6.976 7.028 3.75 12.001 3.75c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113-1.487 4.471-5.705 7.697-10.677 7.697-4.97 0-9.186-3.223-10.675-7.69a1.762 1.762 0 010-1.113zM17.25 12a5.25 5.25 0 11-10.5 0 5.25 5.25 0 0110.5 0z" clip-rule="evenodd"/></svg>';
4062    var ICON_EYE_CLOSED = '<svg width="24" height="19" viewBox="0 0 24 19" fill="currentColor" class="eye-icon" xmlns="http://www.w3.org/2000/svg"><path d="M19.5254 0.966275C19.2322 0.673025 18.7582 0.673025 18.4649 0.966275L16.3919 3.03928C15.0802 2.51128 13.6154 2.17078 11.9999 2.17078C4.80066 2.17078 0.303663 9.15553 0.116163 9.45328C0.00516307 9.62953 -0.0233369 9.83428 0.0201631 10.0225C-0.0158369 10.201 0.00741308 10.3923 0.110163 10.5603C0.214413 10.7313 1.70166 13.102 4.34166 15.091L2.59941 16.8325C2.30616 17.1258 2.30616 17.5998 2.59941 17.893C2.74566 18.0393 2.93766 18.1128 3.12966 18.1128C3.32166 18.1128 3.51366 18.0393 3.65991 17.893L19.5254 2.02678C19.8179 1.73428 19.8179 1.25953 19.5254 0.966275ZM7.67991 9.95578C7.67991 7.57378 9.61791 5.63578 11.9999 5.63578C12.5339 5.63578 13.0439 5.73628 13.5157 5.91478L12.2699 7.16053C12.1799 7.15078 12.0922 7.13578 11.9999 7.13578C10.4452 7.13578 9.17991 8.40103 9.17991 9.95578C9.17991 10.048 9.19566 10.1358 9.20466 10.2258L7.95891 11.4715C7.78041 11.0005 7.67991 10.4898 7.67991 9.95578ZM23.8837 10.5468C23.6962 10.8438 19.1992 17.8293 11.9999 17.8293C10.1204 17.8293 8.44041 17.3725 6.97416 16.6915L9.92391 13.741C10.5404 14.0808 11.2484 14.275 12.0007 14.275C14.3827 14.275 16.3207 12.337 16.3207 9.95502C16.3207 9.20278 16.1264 8.49553 15.7867 7.87827L19.1392 4.52578C22.1047 6.57928 23.7802 9.25753 23.8904 9.43903C23.9932 9.60703 24.0164 9.79827 23.9804 9.97678C24.0232 10.1665 23.9954 10.3705 23.8837 10.5468ZM11.0624 12.6033L14.6474 9.01903C14.7524 9.31378 14.8199 9.62653 14.8199 9.95653C14.8199 11.5113 13.5547 12.7765 11.9999 12.7765C11.6699 12.7758 11.3572 12.7083 11.0624 12.6033Z" fill="white"/></svg>';
4063
4064    /* ===== BOOTSTRAP MODAL HELPERS ===== */
4065    function bsShow(id) {
4066      var target = document.getElementById(id);
4067      if (!target) return;
4068      if (window.bootstrap && bootstrap.Modal && bootstrap.Modal.getOrCreateInstance) {
4069        bootstrap.Modal.getOrCreateInstance(target).show();
4070      } else if (window.$ && $.fn.modal) {
4071        $(target).modal('show');
4072      } else {
4073        target.style.display = 'block';
4074        target.classList.add('show');
4075        document.body.classList.add('modal-open');
4076        if (!document.getElementById(id + '-bd')) {
4077          var bd = document.createElement('div');
4078          bd.id = id + '-bd';
4079          bd.className = 'modal-backdrop fade show';
4080          document.body.appendChild(bd);
4081        }
4082      }
4083    }
4084
4085    function bsHide(id) {
4086      var target = document.getElementById(id);
4087      if (!target) return;
4088      if (window.bootstrap && bootstrap.Modal && bootstrap.Modal.getInstance) {
4089        var inst = bootstrap.Modal.getInstance(target);
4090        if (inst) inst.hide();
4091      } else if (window.$ && $.fn.modal) {
4092        $(target).modal('hide');
4093      } else {
4094        target.style.display = 'none';
4095        target.classList.remove('show');
4096        var bd = document.getElementById(id + '-bd');
4097        if (bd) bd.remove();
4098        var anyOpen = document.querySelector('.modal.show');
4099        if (!anyOpen) document.body.classList.remove('modal-open');
4100      }
4101    }
4102
4103    /* ===== DOM REFS ===== */
4104    function el(id) {
4105      return document.getElementById(id);
4106    }
4107    var overlay = el('modal-login');
4108    var loginForm = el('ml-login-form');
4109    var phoneInput = el('ml-phone');
4110    var pwdInput = el('ml-password');
4111    var submitBtn = el('ml-submit-btn');
4112    var submitText = el('ml-submit-text');
4113    var forgotTrigger = el('ml-forgot-trigger');
4114    var gotoRegister = el('ml-goto-register');
4115    var btnLineLogin = el('ml-btn-line-login');
4116    var btnContact = el('ml-btn-contact');
4117
4118    var phoneForgetInput = el('ml-phone-forget');
4119    var phoneErrForget = el('ml-phone-error-forget');
4120    var forgetBtn = el('ml-forget-btn');
4121
4122    /* ===== LOADING STATE (PopupLogin btnLoading) ===== */
4123    function setLoading(loading) {
4124      btnLoading = loading;
4125      submitBtn.disabled = loading;
4126      submitText.textContent = loading ? 'กรุณารอสักครู่' : 'เข้าสู่ระบบ';
4127    }
4128
4129    /* ===== VALIDATE & SUBMIT (PopupLogin handlerValidate) ===== */
4130    function handlerValidate(e) {
4131      if (e) e.preventDefault();
4132      if (btnLoading) return;
4133      var isPhone = checkPhone(phoneInput.value.trim());
4134      if (isPhone === true) {
4135        doLogin(phoneInput.value.trim(), pwdInput.value);
4136      } else {
4137        showSwal(isPhone, 'error');
4138      }
4139    }
4140
4141    loginForm.addEventListener('submit', handlerValidate);
4142
4143    phoneInput.addEventListener('input', function() {
4144      this.value = this.value.replace(/\D/g, '');
4145    });
4146
4147    /* ===== FORGOT PASSWORD PHONE VALIDATION (ForgotPassword handlerValidate) ===== */
4148    function validatePhoneForget() {
4149      var val = phoneForgetInput.value.trim();
4150      var isPhone = checkPhone(val);
4151      if (isPhone === true) {
4152        phoneErrForget.textContent = '';
4153        forgetBtn.disabled = false;
4154      } else {
4155        phoneErrForget.textContent = isPhone === 'กรุณากรอกเบอร์โทรศัพท์' ? '' : isPhone;
4156        forgetBtn.disabled = true;
4157      }
4158    }
4159
4160    phoneForgetInput.addEventListener('input', function() {
4161      this.value = this.value.replace(/\D/g, '');
4162      validatePhoneForget();
4163    });
4164
4165    /* ===== PASSWORD TOGGLE ===== */
4166    el('ml-toggle-password').addEventListener('click', function() {
4167      var type = pwdInput.getAttribute('type') === 'password' ? 'text' : 'password';
4168      pwdInput.setAttribute('type', type);
4169      el('ml-icon-password').innerHTML = type === 'text' ? ICON_EYE_OPEN : ICON_EYE_CLOSED;
4170    });
4171
4172    /* ===== SUBMIT LOGIN (PopupLogin login → passToLogin) ===== */
4173    async function doLogin(phone, password) {
4174      setLoading(true);
4175      var loadingStarted = Date.now();
4176      try {
4177        var jwtPayload = {
4178          phone_number: phone,
4179          password: password,
4180          iat: Math.floor(Date.now() / 1000)
4181        };
4182        var token = await signJwt(jwtPayload, CFG.jwtSecret);
4183        var res = await fetch(CFG.urlApi + '/api/login', {
4184          method: 'POST',
4185          headers: {
4186            'X-API-KEY': 'officex-homey-dev',
4187            Accept: 'application/json',
4188            'Content-Type': 'application/json'
4189          },
4190          body: JSON.stringify({
4191            token: token
4192          })
4193        });
4194        var data = await res.json();
4195        if (data.code === 0) {
4196          window.location.href = CFG.urlApi + '/login?phone_number=' + encodeURIComponent(phone) + '&password=' + encodeURIComponent(password);
4197        } else {
4198          showSwal(data.msg, 'error');
4199        }
4200      } catch (e) {
4201        showSwal('การเชื่อมต่อกับเซิร์ฟเวอร์ขัดข้อง', 'error');
4202      } finally {
4203        var elapsed = Date.now() - loadingStarted;
4204        var delay = Math.max(0, 1500 - elapsed);
4205        setTimeout(function() {
4206          setLoading(false);
4207        }, delay);
4208      }
4209    }
4210
4211    function closeForgotAndShowLogin() {
4212      bsHide('ml-modal-forgot');
4213      bsShow('modal-login');
4214    }
4215
4216    /* ===== FORGOT PASSWORD ===== */
4217    forgotTrigger.addEventListener('click', function() {
4218      phoneForgetInput.value = '';
4219      phoneErrForget.textContent = '';
4220      forgetBtn.disabled = true;
4221      bsHide('modal-login');
4222      bsShow('ml-modal-forgot');
4223    });
4224
4225    el('ml-forgot-close').addEventListener('click', function() {
4226      closeForgotAndShowLogin();
4227    });
4228
4229    forgetBtn.addEventListener('click', function() {
4230      if (forgetBtn.disabled || btnLoading) return;
4231      var isPhone = checkPhone(phoneForgetInput.value.trim());
4232      if (isPhone === true) {
4233        doForgetPassword(phoneForgetInput.value.trim());
4234      } else {
4235        showSwal(isPhone, 'error');
4236      }
4237    });
4238
4239    async function doForgetPassword(phone) {
4240      forgetBtn.disabled = true;
4241      try {
4242        var jwtPayload = {
4243          phone_number: phone,
4244          iat: Math.floor(Date.now() / 1000)
4245        };
4246        var token = await signJwt(jwtPayload, CFG.jwtSecret);
4247        var res = await fetch(CFG.urlApi + '/api//forgetPassword?type=SMS', {
4248          method: 'POST',
4249          headers: {
4250            'X-API-KEY': 'officex-homey-dev',
4251            Accept: 'application/json',
4252            'Content-Type': 'application/json'
4253          },
4254          body: JSON.stringify({
4255            token: token
4256          })
4257        });
4258        var data = await res.json();
4259        var icon = data.code === 0 ? 'success' : 'error';
4260        if (data.code === 0) {
4261          closeForgotAndShowLogin();
4262        }
4263        showSwal(data.msg, icon);
4264        forgetBtn.disabled = false;
4265      } catch (e) {
4266        showSwal('การเชื่อมต่อกับเซิร์ฟเวอร์ขัดข้อง', 'error');
4267        forgetBtn.disabled = false;
4268      }
4269    }
4270
4271    /* ===== DISABLE REGISTER MODAL ===== */
4272    el('ml-disable-close').addEventListener('click', function() {
4273      bsHide('ml-modal-disable-register');
4274    });
4275
4276    /* ===== SWITCH POPUP — login → register (PopupLogin switchPopup) ===== */
4277    var registerDisabled = false;
4278
4279    function switchToRegister() {
4280      ModalLogin.close();
4281      if (window.ModalRegister) {
4282        ModalRegister.open();
4283      } else {
4284        window.location.href = CFG.siteUrl + 'register';
4285      }
4286    }
4287
4288    function handleRegisterClick(e) {
4289      if (e) e.preventDefault();
4290      if (registerDisabled) {
4291        bsShow('ml-modal-disable-register');
4292      } else {
4293        switchToRegister();
4294      }
4295    }
4296
4297    gotoRegister.addEventListener('click', handleRegisterClick);
4298
4299    /* ===== API: PREFIX ===== */
4300    async function fetchPrefix() {
4301      if (!window._prefixPromise) {
4302        window._prefixPromise = fetch(CFG.urlApi + '/api/prefix')
4303          .then(function(res) {
4304            return res.json();
4305          })
4306          .catch(function() {
4307            window._prefixPromise = null;
4308            return null;
4309          });
4310      }
4311      return window._prefixPromise;
4312    }
4313
4314    function usePrefixData(data) {
4315      var linecontact = "https:\/\/cutt.ly\/wcpg77" ||
4316        (data.data.contact && data.data.contact.linecontact) || '';
4317      var isLineLogin = data.data.register.line_status_login;
4318      var lineClientID = data.data.line_login?.client_id || '';
4319      var isDisable = data.data.register.disable;
4320
4321      if (linecontact) {
4322        btnContact.addEventListener('click', function() {
4323          window.open(linecontact, '_blank');
4324        });
4325        el('ml-btn-disable-contact').addEventListener('click', function() {
4326          window.open(linecontact, '_blank');
4327        });
4328      }
4329
4330      if (isLineLogin && lineClientID !== '') {
4331        btnLineLogin.style.display = '';
4332        btnLineLogin.classList.add('active-line');
4333        btnLineLogin.addEventListener('click', function() {
4334          location.href = 'https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=' + lineClientID +
4335            '&redirect_uri=' + CFG.urlApi + '/login&state=' + Date.now() + '&scope=openid profile email';
4336        });
4337      }
4338
4339      registerDisabled = !!isDisable;
4340    }
4341
4342    /* ===== AUTO LOGIN FROM URL (PopupLogin mounted) ===== */
4343    function tryAutoLoginFromQuery() {
4344      var params = new URLSearchParams(window.location.search);
4345      var queryPhone = params.get('phone_number');
4346      var queryPassword = params.get('password');
4347      if (!queryPhone || !queryPassword) return;
4348
4349      phoneInput.value = queryPhone;
4350      pwdInput.value = queryPassword;
4351
4352      var url = new URL(window.location.href);
4353      url.searchParams.delete('phone_number');
4354      url.searchParams.delete('password');
4355      window.history.replaceState({}, '', url.pathname + (url.search || '') + url.hash);
4356
4357      bsShow('modal-login');
4358      doLogin(queryPhone, queryPassword);
4359    }
4360
4361    /* ===== RESET STATE ===== */
4362    function resetAll() {
4363      phoneInput.value = '';
4364      pwdInput.value = '';
4365      pwdInput.setAttribute('type', 'password');
4366      el('ml-icon-password').innerHTML = ICON_EYE_CLOSED;
4367      setLoading(false);
4368    }
4369
4370    /* ===== INIT ===== */
4371    function init() {
4372      fetchPrefix().then(function(data) {
4373        if (data) usePrefixData(data);
4374      });
4375      tryAutoLoginFromQuery();
4376    }
4377
4378    /* ===== PUBLIC API ===== */
4379    window.ModalLogin = {
4380      /**
4381       * เปิด modal เข้าสู่ระบบ
4382       * เรียกได้จากทุกหน้า: ModalLogin.open()
4383       */
4384      open: function() {
4385        resetAll();
4386        bsShow('modal-login');
4387      },
4388      /**
4389       * ปิด modal เข้าสู่ระบบ
4390       * เรียกได้จากทุกหน้า: ModalLogin.close()
4391       */
4392      close: function() {
4393        bsHide('modal-login');
4394        bsHide('ml-modal-forgot');
4395        bsHide('ml-modal-disable-register');
4396      },
4397      /**
4398       * Override config หลัง include
4399       * ModalLogin.setConfig({ urlApi: '...', siteUrl: '...' })
4400       */
4401      setConfig: function(cfg) {
4402        Object.assign(CFG, cfg);
4403      }
4404    };
4405
4406    init();
4407  })();
4408</script>
4408		 
4409
4410<div class="bg-in-page">
4411    <div class="container">
4412        <div class="row pd-t">
4413            <div class="col-12 enter-wrap">
4414                <h1 class="text-center fc-gold-g mt-4">ทางเข้า PGSLOT77</h1>
4415                <p class="mt-4">
4416                    <p class="mt-4">รวมทางเข้า PGSLOT หรือทางเข้า PGSLOT77 ทั้งหมดของเราได้นำมารวบรวมใว้ที่นี่ที่เดียวให้กับทุกท่านได้เลือกเข้ากันได้เลยที่เราทำทางเข้า ใว้หลายๆทางเพราะว่าอาจจะมีลูกค้าบางท่านจำลิงค์ของเราไม่ได้จำสับสนกับอันอื่นบ้าง ในวันนี้เราได้รวมรวมทุกลิงค์ที่สามารถเข้าได้มาให้ท่านแล้ว</p>
4417<p class="mt-4">ทางเข้า PGSLOT ที่ 1 : <span style="color: #ffff00"><a style="color: #ffff00" href="https://rebrand.ly/pgslot77_pglst">https://rebrand.ly/pgslot77_pglst</a></span><br />
4418ทางเข้า PGSLOT ที่ 2 : <span style="color: #ffff00"><a style="color: #ffff00" href="https://cutly.art/pgslot77_pglst">https://cutly.art/pgslot77_pglst</a></span><br />
4419ทางเข้า PGSLOT ที่ 3 : <span style="color: #ffff00"><a style="color: #ffff00" href="https://bitt.to/2netx0">https://bitt.to/2netx0</a></span><br />
4420ทางเข้า PGSLOT ที่ 4 : <span style="color: #ffff00"><a style="color: #ffff00" href="https://www.shorturl.asia/nghecr">https://www.shorturl.asia/nghecr</a></span></p>
4421<p>ทางเข้า PGSLOT ที่ 5 : <span style="color: #ffff00"><a style="color: #ffff00" href="https://t.co/4krdlM9SWL">https://t.co/4krdlM9SWL</a></span></p>
4422<p class="mt-4">ทางเข้า PG Slot สำหรับช่องทางการใช้บริการและช่องทางของการลงทุนที่ได้มีการเปิดให้บริการในปัจจุบันนี้ก็มีทั้งหมด 3 ช่องทางคือการใช้บริการผ่านทางเว็บไซด์ ลงทุนผ่านทางแอพพลิเคชั่นและการลงทุนทางการดาวน์โหลดซึ่งก็ถือได้ว่าตอบโจทย์ความต้องการของผู้เล่นและผู้ใช้งานได้เป็นอย่างดี ถ้าเรามีความสนใจและมีความต้องการในการลงทุนเราก็สามารถทำการลงทุนและสามารถทำการใช้บริการได้อย่างเต็มที่เพื่อให้เรามีโอกาสประสบความสำเร็จต่อการใช้งานในการลงทุนที่ดีและมีคุณภาพ Pg slot77 สำหรับเว็บไซต์ที่เราขอทำการนำเสนอในวันนี้ก็คือเว็บไซต์ pg slot77 ที่ได้มีการเปิดให้บริการสำหรับการเล่นเกมสล็อตออนไลน์โดยตรง เพื่อตอบโจทย์ความต้องการของผู้เล่นและผู้ใช้บริการโดยเฉพาะ ถ้าหากใครมีความสนใจอยากทำการเล่นและอยากทำการใช้งานก็
4422สามารถทำการลงทุนและสามารถทำการใช้บริการตามความต้องการของท่านได้เพียงแต่ต้องทำการสมัครเป็นสมาชิกให้เรียบร้อยเท่านี้ก็สามารถทำการใช้บริการและสามารถทำการลงทุนตามความต้องการของผู้เล่นและผู้ใช้บริการได้แล้ว วิธีการเล่นและวิธีการลงทุนของผู้ใช้บริการแต่ละคนนั้นมีทักษะในการใช้งานและมีทักษะในการลงทุนที่ไม่เหมือนกันอยู่ที่ว่าเรามีความสนใจในการลงทุนและความสนใจในการใช้บริการรูปแบบไหนเราสามารถเลือกใช้บริการตามความต้องการของเราได้เพื่อให้เรามีโอกาสประสบความสำเร็จต่อการลงทุนและการใช้งานที่ดีและมีคุณภาพมากที่สุดมาใช้ตัวช่วยมาเป็นตัวช่วยในการลงทุนก็ได้ถ้าเราใช้ตัวช่วยมาเป็นตัวช่วยในการลงทุนแล้วก็จะมีโอกาสจะส่งผลต่อการลงทุนและการใช้บริการแน่นอน และนี่ก็คือการนำเสนอข้อมูลของการใช้บริการและข้อมูลของการลงทุนในวันนี้ Pg slot77 หวังว่าจะเป็นข้อมูลและเป็นแนวทางในการลงทุนของผู้เล่นและผู้ใช้บริการได้ไม่มากก็น้อยทำให้การลงทุนและการใช้งานของผู้เล่นมีโอกาสประสบความสำเร็จในการลงทุนมากที่สุดได้รับผลกำไรกลับคืนมาจากการใช้บริการและการลงทุนอย่างที่ท่านให้ความสนใจในการใช้งานและให้ความสนใจในการลงทุนให้ท่านสามารถเลือกใช้บริการตามความต้องการของท่านอย่างเต็มที่ มีแนวทางในการลงทุนที่ค่อนข้างดีท่านก็
4422จะมีโอกาสประสบความสำเร็จต่อการใช้บริการและมีโอกาสประสบความสำเร็จต่อการลงทุนอยู่เสมอ ว่าการนำเสนอข้อมูลของเราในวันนี้จะเป็นการนำเสนอข้อมูลที่ตอบโจทย์ความต้องการของผู้ใช้บริการที่มีความสนใจในการลงทุนได้ และเพื่อให้ง่ายต่อการตัดสินใจในการลงทุนมากยิ่งขึ้น</p>
4423                </p>
4424<!--                 <p class="mt-4">
4425                    ทางเข้า PGSLOT ที่ 1 : <a style="color:gold;"
4426                        href="https://pgslot77.slot-auto.com/login">https://pgslot77.slot-auto.com/login</a> <br>
4427                    ทางเข้า PGSLOT ที่ 2 : <a style="color:gold;"
4428                        href="https://bit.ly/pgslot77-entrance">https://bit.ly/pgslot77-entrance</a> <br>
4429                    ทางเข้า PGSLOT ที่ 3 : <a style="color:gold;"
4430                        href="http://ow.ly/nATQ30qWWyi">http://ow.ly/nATQ30qWWyi</a> <br>
4431                    ทางเข้า PGSLOT ที่ 4 : <a style="color:gold;"
4432                        href="http://bit.do/pgslot77-entrance">http://bit.do/pgslot77-entrance</a>
4433                    <br>
4434                    ทางเข้า PGSLOT ที่ 5 : <a style="color:gold;"
4435                        href="https://t.co/dkdBQ3GGtN">https://t.co/dkdBQ3GGtN</a> <br>
4436                </p>
4437                <p class="mt-4">
4438                    ทางเข้า PG Slot
4439                    สำหรับช่องทางการใช้บริการและช่องทางของการลงทุนที่ได้มีการเปิดให้บริการในปัจจุบันนี้ก็มีทั้งหมด 3
4440                    ช่องทางคือการใช้บริการผ่านทางเว็บไซด์
4441                    ลงทุนผ่านทางแอพพลิเคชั่นและการลงทุนทางการดาวน์โหลดซึ่งก็ถือได้ว่าตอบโจทย์ความต้องการของผู้เล่นและผู้ใช้งานได้เป็นอย่างดี
4442                    ถ้าเรามีความสนใจและมีความต้องการในการลงทุนเราก็สามารถทำการลงทุนและสามารถทำการใช้บริการได้อย่างเต็มที่เพื่อให้เรามีโอกาสประสบความสำเร็จต่อการใช้งานในการลงทุนที่ดีและมีคุณภาพ
4443
4444
4445                    Pg slot77 สำหรับเว็บไซต์ที่เราขอทำการนำเสนอในวันนี้ก็คือเว็บไซต์ pg slot77
4446                    ที่ได้มีการเปิดให้บริการสำหรับการเล่นเกมสล็อตออนไลน์โดยตรง
4447                    เพื่อตอบโจทย์ความต้องการของผู้เล่นและผู้ใช้บริการโดยเฉพาะ
4448                    ถ้าหากใครมีความสนใจอยากทำการเล่นและอยากทำการใช้งานก็
4448สามารถทำการลงทุนและสามารถทำการใช้บริการตามความต้องการของท่านได้เพียงแต่ต้องทำการสมัครเป็นสมาชิกให้เรียบร้อยเท่านี้ก็สามารถทำการใช้บริการและสามารถทำการลงทุนตามความต้องการของผู้เล่นและผู้ใช้บริการได้แล้ว
4449
4450                    วิธีการเล่นและวิธีการลงทุนของผู้ใช้บริการแต่ละคนนั้นมีทักษะในการใช้งานและมีทักษะในการลงทุนที่ไม่เหมือนกันอยู่ที่ว่าเรามีความสนใจในการลงทุนและความสนใจในการใช้บริการรูปแบบไหนเราสามารถเลือกใช้บริการตามความต้องการของเราได้เพื่อให้เรามีโอกาสประสบความสำเร็จต่อการลงทุนและการใช้งานที่ดีและมีคุณภาพมากที่สุดมาใช้ตัวช่วยมาเป็นตัวช่วยในการลงทุนก็ได้ถ้าเราใช้ตัวช่วยมาเป็นตัวช่วยในการลงทุนแล้วก็จะมีโอกาสจะส่งผลต่อการลงทุนและการใช้บริการแน่นอน
4451                    และนี่ก็คือการนำเสนอข้อมูลของการใช้บริการและข้อมูลของการลงทุนในวันนี้
4452
4453                    Pg slot77
4454                    หวังว่าจะเป็นข้อมูลและเป็นแนวทางในการลงทุนของผู้เล่นและผู้ใช้บริการได้ไม่มากก็น้อยทำให้การลงทุนและการใช้งานของผู้เล่นมีโอกาสประสบความสำเร็จในการลงทุนมากที่สุดได้รับผลกำไรกลับคืนมาจากการใช้บริการและการลงทุนอย่างที่ท่านให้ความสนใจในการใช้งานและให้ความสนใจในการลงทุนให้ท่านสามารถเลือกใช้บริการตามความต้องการของท่านอย่างเต็มที่
4455                    มีแนวทางในการลงทุนที่ค่อนข้างดีท่านก็
4455จะมีโอกาสประสบความสำเร็จต่อการใช้บริการและมีโอกาสประสบความสำเร็จต่อการลงทุนอยู่เสมอ
4456                    ว่าการนำเสนอข้อมูลของเราในวันนี้จะเป็นการนำเสนอข้อมูลที่ตอบโจทย์ความต้องการของผู้ใช้บริการที่มีความสนใจในการลงทุนได้
4457                    และเพื่อให้ง่ายต่อการตัดสินใจในการลงทุนมากยิ่งขึ้น
4458
4459                </p> -->
4460            </div>
4461        </div>
4462    </div>
4463</div>
4464
4465
4466
4467
4468
4469    
4469<script type="speculationrules">
4470{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/Theme-re-pgslot77/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
4471</script>
4471
4472			
4472<script type="rocketlazyloadscript" data-rocket-type='text/javascript'>
4473				const lazyloadRunObserver = () => {
4474					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
4475					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
4476						entries.forEach( ( entry ) => {
4477							if ( entry.isIntersecting ) {
4478								let lazyloadBackground = entry.target;
4479								if( lazyloadBackground ) {
4480									lazyloadBackground.classList.add( 'e-lazyloaded' );
4481								}
4482								lazyloadBackgroundObserver.unobserve( entry.target );
4483							}
4484						});
4485					}, { rootMargin: '200px 0px 200px 0px' } );
4486					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
4487						lazyloadBackgroundObserver.observe( lazyloadBackground );
4488					} );
4489				};
4490				const events = [
4491					'DOMContentLoaded',
4492					'elementor/lazyload/observe',
4493				];
4494				events.forEach( ( event ) => {
4495					document.addEventListener( event, lazyloadRunObserver );
4496				} );
4497			</script>
4497
4498			
4498<script type="rocketlazyloadscript" id="seed-social-js" data-rocket-src="https://pgslot77.art/wp-content/plugins/seed-social/script.js?ver=2021.02"></script>
vendor: 1 bytes, line 4498
4498
4499<script type="rocketlazyloadscript" id="moment-js" data-rocket-src="https://pgslot77.art/wp-includes/js/dist/vendor/moment.min.js?ver=2.30.1"></script>
vendor: 1 bytes, line 4499
4499
4500<script type="rocketlazyloadscript" id="moment-js-after">
4501moment.updateLocale( 'th', {"months":["\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21","\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c","\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21","\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19","\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21","\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19","\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21","\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21","\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19","\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21","\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19","\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"],"monthsShort":["\u0e21.\u0e04.","\u0e01.\u0e1e.","\u0e21\u0e35.\u0e04.","\u0e40\u0e21.\u0e22.","\u0e1e.\u0e04.","\u0e21\u0e34.\u0e22.","\u0e01.\u0e04.","\u0e2a.\u0e04.","\u0e01.\u0e22.","\u0e15.\u0e04.","\u0e1e.\u0e22.","\u0e18.\u0e04."],"weekdays":["\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c","\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c","\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23","\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18","\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35","\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c","\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"],"weekdaysShort":["\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c","\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c","\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23","\u0e1e\u0e38\u0e18","\u0e1e\u0e24\u0e2b\u0e31\u0e2a","\u0e28\u0e38\u0e01\u0e23\u0e4c","\u0e40\u0e2a\u0e32\u0e23\u0e4c"],"week":{"dow":1},"longDateFormat":{"LT":"g:i a","LTS":null,"L":null,"LL":"F j, Y","LLL":"j F Y G:i \u0e19.","LLLL":null}} );
4502//# sourceURL=moment-js-after
4503</script>
vendor: 1 bytes, line 4503
4503
4504<script id="happy-elementor-addons-js-extra">
4505var HappyLocalize = {"ajax_url":"https://pgslot77.art/wp-admin/admin-ajax.php","nonce":"d19089708f","pdf_js_lib":"https://pgslot77.art/wp-content/plugins/happy-elementor-addons/assets/vendor/pdfjs/lib"};
4506//# sourceURL=happy-elementor-addons-js-extra
4507</script>
vendor: 1 bytes, line 4507
4507
4508<script type="rocketlazyloadscript" id="happy-elementor-addons-js" data-rocket-src="https://pgslot77.art/wp-content/plugins/happy-elementor-addons/assets/js/happy-addons.min.js?ver=3.11.0"></script>
4508
4509
4510
4511    <div class="nav-aba-wrap bg-black">
4512	<div class="item-pc">
4513            <div class="game-aba-item w-100 d-flex flex-wrap align-items-center justify-content-around">     		
4514				              </div>
4515		</div>
4516
4517        <div class="item-mobile">
4518            <div class="container">
4519                <div class="head-brand-flex w-100 d-flex align-items-center">
4520                    <div id="responsive-brand" class="brand-mobile" style="padding-left:15px;"> 					
4521						    			
4522                    </div>
4523                </div>
4524            </div>
4525        </div>
4526    </div>
4527
4528    <footer class="main-foot" style="    position: relative;">
4529        <div class="container">
4530            <div class="footer-item d-flex flex-wrap align-items-center justify-content-center">
4531                <div class="info-hubslotxo d-flex flex-wrap align-items-top">
4532                    <figure class="foot-logo">
4533                        <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/logo-pgslot77-main.png">
4534                    </figure>
4535                    <div class="text-box">
4536                        <h1 class="fc-gold-g">PGSLOT</h1>
4537                        <p>
4538                            PGSLOT ระบบเติม ถอน เครดิต อัตโนมัติ โดยไม่ต้องผ่าน Call Center
4539                            พบกับประสบการณ์ใหม่ในการสมัครสมาชิก ฝาก ถอน เครดิต ด้วยตัวเองกับระบบอัตโนมัติรวดเร็ว ปลอดภัย
4540                            ระบบสมบูรณ์ 100% สล็อตออนไลน์เจ้าแรกแห่งประเทศไทย พร้อมให้บริการแล้ว
4541                        </p>
4542                        <h3 class="fc-gold-g pt-3">เมนูลัด</h3>
4543                        <ul class="shortcut-menu">
4544                            <li>
4545                                <a href="https://pgslot77.art/category/slot/">บทความ</a>
4546                            </li>
4547                            <li>
4548                                <a href="https://pgslot77.art/download/">ดาวน์โหลด</a>
4549                            </li>
4550                        </ul>
4551                    </div>
4552                </div>
4553                <div class="interract-foot ">
4554                    <h2 class="fc-gold-g">เล่น PGSLOT77</h2>
4555                    <ul class="button-foot">
4556                        <li>
4557<!--                             <a data-toggle="modal" data-target="#exampleModal2222" style="cursor:pointer;"> -->
4558							<a href="https://pgslot77.pglst.com/login">
4559                                <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/button-4-1.png">
4560                            </a>
4561                        </li>
4562                    </ul>
4563                    <h2 class="fc-gold-g pt-3">ติดต่อเรา PGSLOT77</h2>
4564                    <ul class="download-foot">
4565                        <li>
4566                            <a href="https://cutt.ly/facebookpg77">
4567                                <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/face-popup-fixed.png">
4568                            </a>
4569                        </li>
4570                        <li>
4571                            <a href="https://cutt.ly/wcpg77">
4572                                <img src="https://pgslot77.art/wp-content/themes/Theme-re-pgslot77/assets/img/line-popup-fixed.png">
4573                            </a>
4574                        </li>
4575                    </ul>
4576                </div>
4577            </div>
4578            <p class="pt-3 foot text-center">
4579                COPYRIGHT 2019 WWW.PGSLOT77.COM
4580                <a href="https://www.dmca.com/Protection/Status.aspx?ID=52f37f18-c647-4f03-a771-381e31d7d3ec&amp;refurl=https://pgslot77.com/"
4581                    title="DMCA.com Protection Status" class="dmca-badge"> <img
4582                        src="https://images.dmca.com/Badges/dmca-badge-w100-5x1-06.png?ID=52f37f18-c647-4f03-a771-381e31d7d3e
4582c"
4583                        alt="DMCA.com Protection Status"></a>
4584                
4584<script type="rocketlazyloadscript" data-rocket-src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"> </script>
4584
4585            </p>
4586        </div>
4587
4588    </footer>
4589    
4590  
4591
4592    
4592<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script>
4592<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"c5f7a1de92cc4ae29abfde1f3d615538","r":1,"spa":2}' crossorigin="anonymous"></script>
4592
4593</body>
4594
4595    </html>
4596<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->
4597<!-- plugin=object-cache-pro client=phpredis metric#hits=1703 metric#misses=7 metric#hit-ratio=99.6 metric#bytes=536017 metric#prefetches=108 metric#store-reads=25 metric#store-writes=7 metric#store-hits=125 metric#store-misses=0 metric#sql-queries=20 metric#ms-total=516.82 metric#ms-cache=5.73 metric#ms-cache-avg=0.1848 metric#ms-cache-ratio=1.1 sample#redis-hits=70754868 sample#redis-misses=2151306 sample#redis-hit-ratio=97.0 sample#redis-ops-per-sec=80 sample#redis-evicted-keys=0 sample#redis-used-memory=101781536 sample#redis-used-memory-rss=104271872 sample#redis-memory-fragmentation-ratio=1.0 sample#redis-connected-clients=3 sample#redis-tracking-clients=0 sample#redis-rejected-connections=0 sample#redis-keys=61347 -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.