{"content":"\n\u003csection class=\"contact-page\"\u003e\n  \u003cdiv class=\"contact-grid\"\u003e\n    \u003cheader class=\"contact-intro\"\u003e\n      \u003cspan class=\"contact-eyebrow\"\u003e\n        \u003cspan class=\"contact-eyebrow__dot\" aria-hidden=\"true\"\u003e\u003c/span\u003e\n        Available for new projects\n      \u003c/span\u003e\n      \u003ch1 class=\"contact-heading\"\u003e\n        Let’s build\u003cbr\u003esomething \u003cspan class=\"contact-heading__accent\"\u003egreat\u003c/span\u003e.\n      \u003c/h1\u003e\n      \u003cp class=\"contact-lede\"\u003e\n        Have an idea, a role, or just want to say hi?\n        \u003cspan class=\"contact-lede__line\"\u003eDrop a message — I usually reply within 24 hours.\u003c/span\u003e\n        \u003cspan class=\"contact-lede__aside\"\u003ePrefer a quick skim first? \u003ca href=\"/fqa/\"\u003eBrowse the FAQ\u003c/a\u003e.\u003c/span\u003e\n      \u003c/p\u003e\n    \u003c/header\u003e\n\n    \u003cdiv class=\"contact-form\"\u003e\n      \u003cform\n        method=\"POST\"\n        id=\"contact_form\"\n        data-success-url=\"/thank-you/\"\n        novalidate\n        toolname=\"submit_contact_message\"\n        tooldescription=\"Send a contact message to Toi (Bá Tới) about a role, project, or hello. Message must be 60–250 characters.\"\n      \u003e\n        \u003cfieldset\u003e\n          \u003cdiv class=\"contact-field\" data-field=\"email\"\u003e\n            \u003clabel for=\"email\"\u003eEmail address\u003c/label\u003e\n            \u003cdiv class=\"contact-field__control\"\u003e\n              \u003csvg class=\"contact-field__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003crect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"3\"\u003e\u003c/rect\u003e\n                \u003cpath d=\"m22 7-10 6L2 7\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003cinput\n                type=\"email\"\n                name=\"email\"\n                id=\"email\"\n                placeholder=\"you@company.com\"\n                required\n                toolparamdescription=\"Sender email address for the reply.\"\n              /\u003e\n            \u003c/div\u003e\n            \u003cp class=\"contact-field__error\" id=\"email-error\" role=\"alert\"\u003e\u003c/p\u003e\n          \u003c/div\u003e\n\n          \u003cdiv class=\"contact-field\" data-field=\"message\"\u003e\n            \u003clabel for=\"message\"\u003eWhat’s on your mind?\u003c/label\u003e\n            \u003cdiv class=\"contact-field__control contact-field__control--textarea\"\u003e\n              \u003csvg class=\"contact-field__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003cpath d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003ctextarea\n                rows=\"6\"\n                name=\"message\"\n                id=\"message\"\n                placeholder=\"Tell me about your project, role, or idea…\"\n                minlength=\"60\"\n                maxlength=\"250\"\n                required\n                toolparamdescription=\"Message body (60–250 characters) describing the role, project, or hello.\"\n              \u003e\u003c/textarea\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"contact-field__meta\"\u003e\n              \u003cp class=\"contact-field__error\" id=\"message-error\" role=\"alert\"\u003e\u003c/p\u003e\n              \u003csmall class=\"contact-field__counter\" id=\"message-counter\"\u003e0/250\u003c/small\u003e\n            \u003c/div\u003e\n          \u003c/div\u003e\n\n          \u003c!-- Turnstile mounts here (interaction-only: empty unless a challenge is needed), so a\n               visible \"Verify you are human\" box sits above the Send button, not under it. --\u003e\n          \u003cdiv class=\"contact-captcha\"\u003e\u003c/div\u003e\n\n          \u003cdiv class=\"contact-actions\"\u003e\n            \u003c!-- data-state (idle | verifying | sending | sent | error) picks the visible icon; label set by contact-form.js --\u003e\n            \u003cbutton type=\"submit\" data-state=\"idle\"\u003e\n              \u003csvg class=\"contact-submit__icon contact-submit__icon--idle\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003cpath d=\"m22 2-7 20-4-9-9-4Z\"\u003e\u003c/path\u003e\n                \u003cpath d=\"M22 2 11 13\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003csvg class=\"contact-submit__icon contact-submit__icon--busy\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003cpath d=\"M21 12a9 9 0 1 1-6.219-8.56\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003csvg class=\"contact-submit__icon contact-submit__icon--sent\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c/circle\u003e\n                \u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003csvg class=\"contact-submit__icon contact-submit__icon--error\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c/circle\u003e\n                \u003cpath d=\"M12 8v4\"\u003e\u003c/path\u003e\n                \u003cpath d=\"M12 16h.01\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              \u003cspan class=\"contact-submit__label\"\u003eSend message\u003c/span\u003e\n            \u003c/button\u003e\n            \u003cp class=\"contact-privacy\"\u003e\n              \u003csvg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n                \u003crect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"\u003e\u003c/rect\u003e\n                \u003cpath d=\"M7 11V7a5 5 0 0 1 10 0v4\"\u003e\u003c/path\u003e\n              \u003c/svg\u003e\n              Your info is private — never shared, never sold.\n            \u003c/p\u003e\n          \u003c/div\u003e\n          \u003cp class=\"contact-status\" role=\"status\" aria-live=\"polite\"\u003e\u003c/p\u003e\n        \u003c/fieldset\u003e\n      \u003c/form\u003e\n      \u003c!-- Honeypot lives outside \u003cform\u003e: Lighthouse's WebMCP schema audit flags any unnamed control\n           in the form, and a named one would become a tool parameter. contact-form.js reads it. --\u003e\n      \u003cinput type=\"checkbox\" data-honeypot style=\"display: none;\" tabindex=\"-1\" aria-hidden=\"true\" /\u003e\n    \u003c/div\u003e\n\n    \u003cul class=\"contact-channels\"\u003e\n      \u003cli\u003e\n        \u003ca href=\"/fqa/\"\u003e\n          \u003csvg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n            \u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c/circle\u003e\n            \u003cpath d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"\u003e\u003c/path\u003e\n            \u003cpath d=\"M12 17h.01\"\u003e\u003c/path\u003e\n          \u003c/svg\u003e\n          \u003cspan\u003e\n            \u003cstrong\u003eFAQ\u003c/strong\u003e\n            \u003cem\u003eSkills, stack, and roles\u003c/em\u003e\n          \u003c/span\u003e\n        \u003c/a\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n        \u003ca href=\"https://www.toidang.xyz/r/cv?utm_source=contact-page\" target=\"_blank\" rel=\"noopener nofollow\"\u003e\n          \u003csvg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n            \u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c/path\u003e\n            \u003cpath d=\"M14 2v6h6\"\u003e\u003c/path\u003e\n          \u003c/svg\u003e\n          \u003cspan\u003e\n            \u003cstrong\u003eInteractive CV\u003c/strong\u003e\n            \u003cem\u003ehttps://toidang.xyz/r/cv\u003c/em\u003e\n          \u003c/span\u003e\n        \u003c/a\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n        \u003ca href=\"https://github.com/toidang92\" target=\"_blank\" rel=\"noopener nofollow\"\u003e\n          \u003csvg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"\u003e\n            \u003cpath d=\"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-2c-3.2.7-3.88-1.37-3.88-1.37-.53-1.34-1.29-1.7-1.29-1.7-1.05-.72.08-.71.08-.71 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.71 1.26 3.37.96.1-.75.4-1.26.73-1.55-2.55-.29-5.24-1.28-5.24-5.69 0-1.26.45-2.29 1.18-3.09-.12-.29-.51-1.47.11-3.06 0 0 .97-.31 3.18 1.18a11.07 11.07 0 0 1 5.78 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.24 2.77.12 3.06.74.8 1.18 1.83 1.18 3.09 0 4.42-2.7 5.39-5.27 5.68.42.36.78 1.05.78 2.12v3.14c0 .31.21.68.8.56C20.22 21.38 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5Z\"/\u003e\n          \u003c/svg\u003e\n          \u003cspan\u003e\n            \u003cstrong\u003eGitHub\u003c/strong\u003e\n            \u003cem\u003e@toidang92\u003c/em\u003e\n          \u003c/span\u003e\n        \u003c/a\u003e\n      \u003c/li\u003e\n      \u003cli\u003e\n        \u003ca href=\"https://www.linkedin.com/in/toidang92\" target=\"_blank\" rel=\"noopener nofollow\"\u003e\n          \u003csvg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"\u003e\n            \u003cpath d=\"M20.45 20.45h-3.55v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.95v5.66H9.36V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29ZM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13Zm1.78 13.02H3.56V9h3.56v11.45ZM22.22 0H1.77C.8 0 0 .78 0 1.74v20.51C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.75V1.74C24 .78 23.2 0 22.22 0Z\"/\u003e\n          \u003c/svg\u003e\n          \u003cspan\u003e\n            \u003cstrong\u003eLinkedIn\u003c/strong\u003e\n            \u003cem\u003ein/toidang92\u003c/em\u003e\n          \u003c/span\u003e\n        \u003c/a\u003e\n      \u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/div\u003e\n\u003c/section\u003e\n","title":"Contact"}