{"id":7726,"date":"2025-10-20T13:21:13","date_gmt":"2025-10-20T13:21:13","guid":{"rendered":"https:\/\/twobirdsonestoned.co\/?page_id=7726"},"modified":"2025-10-21T12:09:01","modified_gmt":"2025-10-21T12:09:01","slug":"whos-typing-da-words","status":"publish","type":"page","link":"https:\/\/twobirdsonestoned.co\/fr\/whos-typing-da-words\/","title":{"rendered":"Who&#8217;s typing da words?"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"7726\" class=\"elementor elementor-7726\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1098dc e-flex e-con-boxed e-con e-parent\" data-id=\"a1098dc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1485cea elementor-widget elementor-widget-html\" data-id=\"1485cea\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \n    <!-- Primary Meta Tags -->\n    <title>Who's Typing Da Words - Two Birds One Stoned | Meet James<\/title>\n    <meta name=\"title\" content=\"Who's Typing Da Words - Two Birds One Stoned | Meet James\">\n    <meta name=\"description\" content=\"Meet James Gallagher, the voice behind Two Birds One Stoned. From Dublin tech to Australian cannabis education, this is the journey that shaped the platform.\">\n    <meta name=\"keywords\" content=\"James Gallagher, Two Birds One Stoned, cannabis education, founder story, cannabis advocate\">\n    <meta name=\"author\" content=\"James Gallagher\">\n    <meta name=\"robots\" content=\"index, follow\">\n    \n    <!-- Canonical URL -->\n    <link rel=\"canonical\" href=\"https:\/\/twobirdsonestoned.co\/who\/\">\n    \n    <!-- Favicon and Icons -->\n    <link rel=\"icon\" type=\"image\/x-icon\" href=\"\/favicon.ico\">\n    \n    <!-- Fonts -->\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n    \n    <style>\n        \/* Reset and base styles *\/\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        html {\n            background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%, #0a0a0a 100%);\n            width: 100%;\n            min-height: 100vh;\n            margin: 0;\n            padding: 0;\n            scroll-behavior: smooth;\n        }\n\n        body {\n            font-family: 'Montserrat', sans-serif;\n            background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%, #0a0a0a 100%);\n            color: #fff;\n            width: 100%;\n            min-height: 100vh;\n            margin: 0;\n            padding: 0;\n            line-height: 1.6;\n        }\n\n        \/* VIDEO MODAL STYLES *\/\n        .video-modal {\n            display: none;\n            position: fixed;\n            z-index: 10000;\n            left: 0;\n            top: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.9);\n            backdrop-filter: blur(5px);\n        }\n\n        .video-modal-content {\n            position: relative;\n            margin: 2% auto;\n            width: 90%;\n            max-width: 800px;\n            height: 80vh;\n            max-height: 600px;\n            background: #1d1d1d;\n            border-radius: 15px;\n            border: 2px solid rgba(156,175,136,0.3);\n            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5);\n            overflow: hidden;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .video-modal-header {\n            padding: 1rem 1.5rem;\n            background: rgba(244, 197, 66, 0.1);\n            border-bottom: 1px solid rgba(156,175,136,0.3);\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n        .video-modal-title {\n            color: #F4C542;\n            font-size: 1.2rem;\n            font-weight: 600;\n            margin: 0;\n        }\n\n        .video-modal-close {\n            background: none;\n            border: none;\n            color: #fff;\n            font-size: 2rem;\n            cursor: pointer;\n            padding: 0;\n            width: 40px;\n            height: 40px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            border-radius: 50%;\n            transition: all 0.3s ease;\n        }\n\n        .video-modal-close:hover {\n            background: rgba(255, 255, 255, 0.1);\n            transform: rotate(90deg);\n        }\n\n        .video-container {\n            flex: 1;\n            position: relative;\n            background: #000;\n        }\n\n        .video-container iframe {\n            width: 100%;\n            height: 100%;\n            border: none;\n        }\n\n        \/* Light theme styles for modal *\/\n        .light-theme .video-modal-content {\n            background: #ffffff;\n            border: 2px solid #000000;\n        }\n\n        .light-theme .video-modal-header {\n            background: rgba(184, 134, 11, 0.1);\n            border-bottom: 1px solid #000000;\n        }\n\n        .light-theme .video-modal-title {\n            color: #B8860B;\n        }\n\n        .light-theme .video-modal-close {\n            color: #2A2A2A;\n        }\n\n        .light-theme .video-modal-close:hover {\n            background: rgba(0, 0, 0, 0.1);\n        }\n\n        \/* Video link styling *\/\n        .video-link {\n            color: #4CAF50;\n            text-decoration: underline;\n            cursor: pointer;\n            transition: color 0.3s ease;\n            font-weight: 500;\n        }\n\n        .video-link:hover {\n            color: #45a049;\n        }\n\n        .light-theme .video-link {\n            color: #B8860B;\n        }\n\n        .light-theme .video-link:hover {\n            color: #A0750A;\n        }\n\n        \/* PAGE SECTION *\/\n        .about-page {\n            background: transparent;\n            margin: 0;\n            min-height: 100vh;\n            width: 100%;\n            padding: 0;\n            position: relative;\n            padding-top: 150px;\n            padding-bottom: 4rem;\n        }\n\n        \/* Container *\/\n        .tbos-container {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 0 2rem;\n            width: 100%;\n        }\n\n        \/* Title Section *\/\n        .title-container {\n            margin-bottom: 6rem;\n            text-align: center;\n            opacity: 0;\n            transform: translateY(-20px);\n            transition: all 0.8s ease;\n        }\n\n        .about-page .tbos-section-title {\n            font-family: 'Montserrat', sans-serif;\n            color: #ffffff;\n            word-break: break-word;\n        }\n\n        .page-subtitle {\n            font-size: clamp(12px, 2.5vw, 18px);\n            line-height: 1.4;\n            margin-bottom: 0;\n            margin-top: clamp(20px, 5vw, 30px);\n            text-align: center;\n            color: #E3E3DC;\n            opacity: 0.9;\n        }\n\n        \/* Content Cards *\/\n        .content-card {\n            background-color: #1d1d1d;\n            color: #fff;\n            padding: 2rem;\n            border-radius: 1rem;\n            border: 1px solid rgba(156,175,136,0.3);\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n            margin: 2rem auto;\n            max-width: 800px;\n            transition: transform 0.3s ease, box-shadow 0.3s ease, opacity 0.6s ease;\n            overflow: hidden;\n            opacity: 0;\n            transform: translateY(30px);\n        }\n\n        .content-card.animate-in {\n            opacity: 1;\n            transform: translateY(0);\n        }\n\n        .content-card:hover {\n            transform: translateY(-4px);\n            box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);\n        }\n\n        \/* Content Text *\/\n        .content-text {\n            font-size: 1rem;\n            line-height: 1.6;\n            color: #E3E3DC;\n            margin-bottom: 1.5rem;\n        }\n\n        .content-text:last-child {\n            margin-bottom: 0;\n        }\n\n        \/* Links *\/\n        .content-card a {\n            color: #4CAF50;\n            text-decoration: underline;\n            transition: color 0.3s ease;\n            font-weight: 500;\n        }\n\n        .content-card a:hover {\n            color: #45a049;\n        }\n\n        \/* Theme Toggle *\/\n        .theme-toggle {\n            text-align: center;\n            margin-top: 20px;\n        }\n\n        .theme-toggle button {\n            background: rgba(0,0,0,0.8);\n            border: 2px solid #4CAF50;\n            color: #4CAF50;\n            padding: clamp(8px, 2vw, 12px) clamp(15px, 4vw, 25px);\n            border-radius: 25px;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            font-size: clamp(16px, 3vw, 20px);\n            font-weight: bold;\n            font-family: 'Montserrat', sans-serif;\n        }\n\n        .theme-toggle button:hover {\n            background: rgba(76, 175, 80, 0.1);\n            transform: translateY(-2px);\n        }\n\n        \/* Content Break *\/\n        .content-break {\n            height: 3rem;\n            position: relative;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .content-break::before {\n            content: '';\n            width: 200px;\n            height: 2px;\n            background: linear-gradient(90deg, transparent, #F4C542, transparent);\n            border-radius: 1px;\n        }\n\n        \/* Enhanced Typography *\/\n        .content-text strong {\n            color: #F4C542;\n            font-weight: 600;\n        }\n\n        \/* CTA Button *\/\n        .cta-button {\n            display: inline-block;\n            background: linear-gradient(135deg, #4CAF50, #45a049);\n            color: #ffffff;\n            padding: 1.2rem 3.5rem;\n            border-radius: 50px;\n            text-decoration: none;\n            font-weight: 600;\n            font-size: 1.3rem;\n            transition: all 0.3s ease;\n            box-shadow: 0 4px 15px rgba(76, 175, 80, 0.3);\n            border: none;\n            cursor: pointer;\n        }\n\n        .cta-button:hover {\n            transform: translateY(-3px) !important;\n            box-shadow: 0 6px 20px rgba(76, 175, 80, 0.4) !important;\n            background: linear-gradient(135deg, #45a049, #3d8b40) !important;\n        }\n\n        \/* CTA Section *\/\n        .cta-section {\n            text-align: center;\n            margin: 4rem auto;\n            max-width: 950px;\n            padding: 2rem;\n        }\n\n        \/* Mobile Responsive *\/\n        @media (max-width: 768px) {\n            .tbos-container {\n                padding: 0 1rem;\n            }\n\n            .content-card {\n                padding: 1.5rem;\n                margin: 2rem auto;\n            }\n\n            .about-page {\n                padding-top: 150px;\n            }\n\n            .cta-button {\n                padding: 1rem 2.5rem;\n                font-size: 1.2rem;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .video-modal-content {\n                margin: 10% auto;\n                width: 98%;\n                height: 60vh;\n                max-height: 400px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <!-- Audio Elements (Hidden) -->\n    <div style=\"display: none;\">\n        <audio id=\"nightTimeAudio\" preload=\"auto\">\n            <source src=\"https:\/\/twobirdsonestoned.co\/wp-content\/uploads\/2025\/06\/Nighttime-Bird.mp3\" type=\"audio\/mpeg\">\n        <\/audio>\n        \n        <audio id=\"dayTimeAudio\" preload=\"auto\">\n            <source src=\"https:\/\/twobirdsonestoned.co\/wp-content\/uploads\/2025\/06\/Daytime-Bird-.mp3\" type=\"audio\/mpeg\">\n        <\/audio>\n    <\/div>\n\n    <!-- VIDEO MODAL -->\n    <div id=\"videoModal\" class=\"video-modal\">\n        <div class=\"video-modal-content\">\n            <div class=\"video-modal-header\">\n                <h3 id=\"videoModalTitle\" class=\"video-modal-title\">Chargement...<\/h3>\n                <button class=\"video-modal-close\" onclick=\"closeVideoModal()\">\u00d7<\/button>\n            <\/div>\n            <div class=\"video-container\">\n                <iframe id=\"videoIframe\" src=\"\" allowfullscreen><\/iframe>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <section class=\"about-page\">\n        <div class=\"tbos-container\">\n            <!-- Title Section -->\n            <div class=\"title-container\">\n                <h1 class=\"tbos-section-title translation-block\" style=\"font-size: clamp(28px, 8vw, 48px); font-weight: bold; margin: 0 0 25px 0; text-shadow: 2px 2px 8px rgba(0,0,0,0.8); line-height: 1.1; text-align: center; padding: 0; display: block; width: 100%; clear: both; background: none; border-radius: 0; box-shadow: none; max-width: none; margin-left: auto; margin-right: auto;\"><span>C'EST QUI<\/span> <span>QUI<\/span> <span>\u00c9CRIT?<\/span><\/h1>\n                <p class=\"page-subtitle\">Mange tes l\u00e9gumes<\/p>\n                \n                <!-- Theme Toggle -->\n                <div class=\"theme-toggle\">\n                    <button onclick=\"toggleThemeAndText()\" id=\"theme-toggle\">\ud83c\udf19<\/button>\n                <\/div>\n            <\/div>\n\n            <!-- Content Break -->\n            <div class=\"content-break\"><\/div>\n\n            <!-- Intro Section -->\n            <div class=\"content-card\">\n                <p class=\"content-text\"><span class=\"video-link\" onclick=\"openVideoModal('JBNHQzSl3GM', 'Ah me neck')\">Ah me neckkkkk<\/span>.<\/p>\n                <p class=\"content-text\">Alors me voil\u00e0, Bangkok, 20h25 le 20 octobre 2025, en train de taper sur Google Docs. Un peu un retour aux sources en fait. Quand j'ai d\u00e9cid\u00e9 de commencer \u00e0 apprendre aux gens sur l'herbe, Google Docs c'est l\u00e0 que tout a commenc\u00e9. Y'a eu tellement de trucs pour que le site ressemble \u00e0 ce que je veux, fonctionnel, les vid\u00e9os comme tu veux, \u00e9diter le contenu \u00e9crit etc etc. Je pourrais divaguer putain honn\u00eatement mais je vais pas le faire.<\/p>\n                <p class=\"content-text\">Depuis hier, ce qui est \u00e9crit en-dessous \u00e9tait pr\u00e9vu pour la page '\u00c0 propos'. J'ai pas pens\u00e9 que \u00e7a collait, c'est plus personnel, plus sur le mec qui tape les mots :L Tu te souviens d'envoyer des textos avec ces trucs dedans hahaha :L :L :O<\/p>\n                <p class=\"content-text\">Anyway yea I didnt think it fit there so I've given it's own page. Easy to do when you figure out how to build the website. Shoutout Claude and its early coding capabilities. Everything feels like it's moving 100mph these days. It's really just a quick snapshot of what I've been doing for the last while. Not going to add or change things because I can't be arsed and been at this long enough. So yea, a bit about the person who built the first version of this website and what I've been at.<\/p>\n            <\/div>\n\n            <!-- The Journey Content -->\n            <div class=\"content-card\">\n                <p class=\"content-text\">Un aper\u00e7u tr\u00e8s rapide : J'ai grandi en Irlande et j'ai eu \u00e9norm\u00e9ment de chance en y repensant. Confort financier, bonne \u00e9ducation et un foyer stable. Il n'y a rien de plus que quelqu'un puisse vouloir en grandissant, m\u00eame si \u00e7a devient plus clair avec l'\u00e2ge.<\/p>\n                \n                <p class=\"content-text translation-block\">En grandissant, j'ai fait beaucoup de sport, principalement du <span class=\"video-link\">hurling<\/span> et du <span class=\"video-link\">football ga\u00e9lique<\/span>, j'ai tra\u00een\u00e9 avec les gars, j'ai quickscope quelques noobs, je me suis d\u00e9brouill\u00e9 dans le syst\u00e8me \u00e9ducatif et je suis all\u00e9 boire la plupart des week-ends. Avec \u00e7a, j'ai probablement aussi pouss\u00e9 quelques limites en chemin. Rien de trop fou, juste le m\u00e9lange habituel de bons moments et de le\u00e7ons qui viennent avec le fait de grandir. Tout \u00e7a a probablement fa\u00e7onn\u00e9 ma fa\u00e7on de penser aujourd'hui.<\/p>\n                \n                <p class=\"content-text\">Apr\u00e8s avoir obtenu mon dipl\u00f4me de l'Universit\u00e9 de Limerick, j'ai pass\u00e9 mes d\u00e9buts de carri\u00e8re dans la sc\u00e8ne tech de Dublin. Gr\u00e2ce aux incitations fiscales du gouvernement irlandais, la ville est devenue un aimant pour des entreprises comme Google et pour des gens comme moi, poursuivant des opportunit\u00e9s. Un court contrat de vente l\u00e0-bas s'est transform\u00e9 en quelques ann\u00e9es d\u00e9terminantes. J'ai eu une exposition que je n'aurais pas pu planifier, et \u00e0 l'\u00e9poque, la vie semblait \u00eatre sur la bonne voie.<\/p>\n                \n                <p class=\"content-text\">Puis la vie a fait des trucs de vie. Apr\u00e8s une p\u00e9riode de chaos, de r\u00e9flexion et de mise au point, j'avais perdu l'amour pour tout ce que je faisais dans ma vie. La question brutale : allais-je construire toute ma carri\u00e8re autour de la vente de choses qui ne signifiaient pratiquement rien pour moi, juste parce que \u00e7a signifiait une s\u00e9curit\u00e9 financi\u00e8re ? Cette vision de mon avenir me faisait peur, alors la r\u00e9ponse \u00e9tait non.<\/p>\n                \n                <p class=\"content-text\">Je voulais explorer mes int\u00e9r\u00eats. Mais c'\u00e9tait quoi au juste mes int\u00e9r\u00eats ?<\/p>\n                \n                <p class=\"content-text translation-block\">Eh bien, lors d'une promenade \u00e0 Dublin un soir, en fumant un vieux joint,<strong style=\"font-weight: 600 !important\"> un podcast de<\/strong> <a href=\"https:\/\/open.spotify.com\/episode\/6ef7aaNiEm70KG8eWbnZVR?si=55800e7498804f1a\" target=\"_blank\">David McWilliams<\/a><strong style=\"font-weight: 600 !important\"> extr\u00eamement bien chronom\u00e9tr\u00e9<\/strong> est tomb\u00e9 sur moi. Ce podcast en particulier a allum\u00e9 quelque chose en moi, une direction \u00e0 explorer. Le cannabis. Alors \u00e0 toi David, go raibh m\u00edle maith agat se\u00f1or.<\/p>\n                \n                <p class=\"content-text translation-block\">Pas longtemps apr\u00e8s avoir \u00e9cout\u00e9 ce podcast, j'ai quitt\u00e9 mon job chez Google et j'ai pass\u00e9 des mois \u00e0 voyager en Am\u00e9rique du Sud et Centrale. J'ai pu d\u00e9couvrir des endroits comme la Colombie, le Nicaragua, le Belize, le P\u00e9rou et le Mexique, honn\u00eatement une partie tellement int\u00e9ressante du monde. <a href=\"https:\/\/one-mans-thoughts.notion.site\/Quitting-my-job-Travelling-South-Central-America-Moving-to-Australia-3bdc5b5cce5d42adb028bcf5db3dad21\" target=\"_blank\">J'ai \u00e9crit un truc sur y aller<\/a> avant et je ne peux pas assez le recommander. Des souvenirs faits avec de super amis et des inconnus au hasard en chemin.<\/p>\n                \n                <p class=\"content-text\">Puis l'Australie a appel\u00e9 (comme elle le fait pour la moiti\u00e9 de l'Irlande). J'ai fini par travailler dans la construction, tron\u00e7onneuse dans une main, marteau-piqueur dans l'autre (t'es ABN ou TFN mec). Mais l'autre partie de l'Australie appelait, alors j'ai achet\u00e9 un 4x4, construit un lit \u00e0 l'arri\u00e8re, et suis parti dans la campagne. C'\u00e9tait aussi une exp\u00e9rience pour le moins.. Quatre mois plus tard je suis tomb\u00e9 en panne dans l'outback et j'ai d\u00fb me replier \u00e0 Sydney, la queue entre les jambes. Cette exp\u00e9rience humiliante et ce revers ont en fait ouvert la porte \u00e0 l'industrie du cannabis m\u00e9dical australien. C'est l\u00e0 que j'ai pass\u00e9 deux ans \u00e0 agir comme une \u00e9ponge et juste apprendre autant que je pouvais.<\/p>\n                \n                <p class=\"content-text\">Pendant les huit derniers mois j'ai voyag\u00e9 \u00e0 travers l'Asie, laptop en main, travaillant \u00e0 distance jusqu'\u00e0 ce que je fasse r\u00e9cemment le changement vers le consulting ind\u00e9pendant. J'ai eu la chance de vivre dans des endroits comme la Chine, la Tha\u00eflande et le Vietnam. En chemin, j'ai jou\u00e9 au hurling \u00e0 Hong Kong et au Vietnam, et au football ga\u00e9lique \u00e0 Taiwan et Kuala Lumpur, blessures incluses (\u00e9paule et c\u00f4te, shoutout Asia GAA). Tout a \u00e9t\u00e9 un peu fou franchement, r\u00e9alisant ce qui est l\u00e0-bas. Je reviendrai l\u00e0-dessus mais honn\u00eatement, va vivre en Asie un moment. Tes communaut\u00e9s sont d\u00e9j\u00e0 l\u00e0, qui attendent.<\/p>\n                \n                <p class=\"content-text\">Mais ouais, tout \u00e7a relie les points jusqu'\u00e0 o\u00f9 je suis maintenant.<\/p>\n                \n                <p class=\"content-text\">Travailler dans l'espace du cannabis m'a ouvert les yeux. J'ai vu combien de gens utilisaient le cannabis non pas pour s'\u00e9chapper, mais pour g\u00e9rer la douleur, le stress et la maladie et comment d'autres l'utilisaient pour ralentir, \u00eatre pr\u00e9sents et vraiment profiter de la vie un peu plus. J'ai aussi vu \u00e0 quel point le monde en g\u00e9n\u00e9ral comprenait peu ce sujet. Les conversations \u00e9taient soit trop cliniques soit trop stoner. Il n'y avait pas de juste milieu, pas d'espace pour des discussions honn\u00eates et \u00e9quilibr\u00e9es.<\/p>\n                \n                <p class=\"content-text\">C'est \u00e0 \u00e7a que sert ce site. Il ne s'agit pas de te dire que le cannabis est parfait ou que c'est un rem\u00e8de miracle. Je suis l\u00e0 pour donner aux gens un endroit o\u00f9 apprendre, r\u00e9fl\u00e9chir, questionner et peut-\u00eatre voir les choses un peu diff\u00e9remment qu'avant.<\/p>\n            <\/div>\n\n            <!-- Go Exploring CTA -->\n            <div class=\"cta-section\">\n                <a href=\"https:\/\/twobirdsonestoned.co\/fr\" class=\"cta-button\">\n                    \ud83c\udf3f Va explorer\n                <\/a>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <script>\n        \/\/ Track theme state\n        let isDarkTheme = true;\n\n        \/\/ VIDEO MODAL FUNCTIONS\n        function openVideoModal(videoId, title) {\n            const modal = document.getElementById('videoModal');\n            const iframe = document.getElementById('videoIframe');\n            const modalTitle = document.getElementById('videoModalTitle');\n            \n            modalTitle.textContent = title;\n            iframe.src = `https:\/\/www.youtube.com\/embed\/${videoId}?autoplay=1&rel=0&modestbranding=1`;\n            modal.style.display = 'block';\n            document.body.style.overflow = 'hidden';\n        }\n\n        function closeVideoModal() {\n            const modal = document.getElementById('videoModal');\n            const iframe = document.getElementById('videoIframe');\n            \n            iframe.src = '';\n            modal.style.display = 'none';\n            document.body.style.overflow = '';\n        }\n\n        window.onclick = function(event) {\n            const modal = document.getElementById('videoModal');\n            if (event.target === modal) {\n                closeVideoModal();\n            }\n        }\n\n        document.addEventListener('keydown', function(event) {\n            if (event.key === 'Escape') {\n                closeVideoModal();\n            }\n        });\n\n        function toggleThemeAndText() {\n            const button = document.getElementById('theme-toggle');\n            const currentEmoji = button.textContent.trim();\n            \n            if (currentEmoji === '\ud83c\udf19') {\n                button.textContent = '\u2600\ufe0f';\n                playAudio('dayTimeAudio');\n                isDarkTheme = false;\n            } else {\n                button.textContent = '\ud83c\udf19';\n                playAudio('nightTimeAudio');\n                isDarkTheme = true;\n            }\n            \n            toggleTheme();\n        }\n\n        function playAudio(audioId) {\n            const audio = document.getElementById(audioId);\n            \n            if (audio) {\n                audio.currentTime = 0;\n                const playPromise = audio.play();\n                \n                if (playPromise !== undefined) {\n                    playPromise.then(() => {\n                        console.log(`${audioId} played successfully`);\n                    }).catch(error => {\n                        console.log(`Audio play failed for ${audioId}:`, error);\n                        showVisualFeedback(audioId);\n                    });\n                }\n            }\n        }\n\n        function showVisualFeedback(audioId) {\n            const button = document.getElementById('theme-toggle');\n            const originalTransform = button.style.transform;\n            \n            button.style.transform = 'scale(1.1)';\n            button.style.transition = 'transform 0.1s ease';\n            \n            setTimeout(() => {\n                button.style.transform = originalTransform;\n                button.style.transition = 'all 0.3s ease';\n            }, 100);\n        }\n\n        function toggleTheme() {\n            const body = document.body;\n            const html = document.documentElement;\n            const contentCards = document.querySelectorAll('.content-card');\n            const title = document.querySelector('.tbos-section-title');\n            const subtitle = document.querySelector('.page-subtitle');\n            const toggleButton = document.getElementById('theme-toggle');\n            \n            \/\/ These elements don't exist on this page but keeping for consistency\n            const header = document.querySelector('.tbos-header');\n            const headerNavLinks = document.querySelectorAll('.tbos-nav a');\n            const headerSocialLinks = document.querySelectorAll('.tbos-socials a');\n            const dropdownContent = document.querySelectorAll('.dropdown-content');\n            const hamburgerLines = document.querySelectorAll('.hamburger-line');\n            \n            const mobileMenu = document.querySelector('.mobile-menu');\n            const mobileMenuLinks = document.querySelectorAll('.mobile-menu a');\n            const mobileSocialLinks = document.querySelectorAll('.mobile-socials a');\n            \n            const footerCardWrapper = document.querySelector('.footer-card-wrapper');\n            const footerTitle = document.querySelector('.footer-card h4');\n            const footerText = document.querySelectorAll('.footer-card p');\n            const footerLinks = document.querySelectorAll('.footer-bottom-row a');\n            const footerSocialLinks = document.querySelectorAll('.footer-social-group a');\n            \n            if (!isDarkTheme) {\n                \/\/ LIGHT THEME\n                console.log('Applying LIGHT theme');\n                \n                body.classList.add('light-theme');\n                \n                html.style.setProperty('background', 'linear-gradient(135deg, #f8f6f0 0%, #ede8d8 25%, #e5dcc9 50%, #ede8d8 75%, #f8f6f0 100%)', 'important');\n                body.style.setProperty('background', 'linear-gradient(135deg, #f8f6f0 0%, #ede8d8 25%, #e5dcc9 50%, #ede8d8 75%, #f8f6f0 100%)', 'important');\n                \n                html.style.setProperty('margin', '0', 'important');\n                html.style.setProperty('padding', '0', 'important');\n                body.style.setProperty('margin', '0', 'important');\n                body.style.setProperty('padding', '0', 'important');\n                html.style.setProperty('min-height', '100vh', 'important');\n                body.style.setProperty('min-height', '100vh', 'important');\n                \n                if (header) {\n                    header.style.setProperty('background', '#ffffff', 'important');\n                    header.style.setProperty('border', '2px solid #000000', 'important');\n                }\n                \n                headerNavLinks.forEach(link => {\n                    link.style.setProperty('color', '#2A2A2A', 'important');\n                });\n                \n                headerSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#2A2A2A', 'important');\n                });\n                \n                dropdownContent.forEach(dropdown => {\n                    dropdown.style.setProperty('background', '#ffffff', 'important');\n                    dropdown.style.setProperty('border', '2px solid #000000', 'important');\n                    \n                    const dropdownLinks = dropdown.querySelectorAll('a');\n                    dropdownLinks.forEach(link => {\n                        link.style.setProperty('color', '#2A2A2A', 'important');\n                    });\n                });\n                \n                hamburgerLines.forEach(line => {\n                    line.style.setProperty('background', '#2A2A2A', 'important');\n                });\n                \n                if (mobileMenu) {\n                    mobileMenu.style.setProperty('background', '#ffffff', 'important');\n                    mobileMenu.style.setProperty('border-left', '2px solid #000000', 'important');\n                }\n                \n                mobileMenuLinks.forEach(link => {\n                    link.style.setProperty('color', '#2A2A2A', 'important');\n                    link.style.setProperty('border-bottom', '1px solid rgba(0, 0, 0, 0.1)', 'important');\n                });\n                \n                mobileSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#2A2A2A', 'important');\n                    link.style.setProperty('background', 'rgba(0, 0, 0, 0.05)', 'important');\n                });\n                \n                if (footerCardWrapper) {\n                    footerCardWrapper.style.setProperty('background', '#ffffff', 'important');\n                    footerCardWrapper.style.setProperty('border', '2px solid #000000', 'important');\n                }\n                \n                if (footerTitle) {\n                    footerTitle.style.setProperty('color', '#B8860B', 'important');\n                }\n                \n                footerText.forEach(text => {\n                    text.style.setProperty('color', '#1a1a1a', 'important');\n                    text.style.setProperty('font-weight', '500', 'important');\n                });\n                \n                footerLinks.forEach(link => {\n                    link.style.setProperty('color', '#000000', 'important');\n                });\n                \n                footerSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#4CAF50', 'important');\n                });\n                \n                contentCards.forEach(card => {\n                    card.style.setProperty('background-color', '#ffffff', 'important');\n                    card.style.setProperty('border', '2px solid #000000', 'important');\n                    card.style.setProperty('color', '#2A2A2A', 'important');\n                    \n                    const texts = card.querySelectorAll('p, .content-text');\n                    texts.forEach(text => {\n                        text.style.setProperty('color', '#1a1a1a', 'important');\n                        text.style.setProperty('font-weight', '500', 'important');\n                    });\n                    \n                    const strongTexts = card.querySelectorAll('strong');\n                    strongTexts.forEach(strong => {\n                        strong.style.setProperty('color', '#000000', 'important');\n                        strong.style.setProperty('font-weight', '600', 'important');\n                    });\n                    \n                    const links = card.querySelectorAll('a');\n                    links.forEach(link => {\n                        link.style.setProperty('color', '#B8860B', 'important');\n                    });\n                    \n                    const videoLinks = card.querySelectorAll('.video-link');\n                    videoLinks.forEach(link => {\n                        link.style.setProperty('color', '#B8860B', 'important');\n                    });\n                });\n                \n                if (title) {\n                    title.style.setProperty('text-shadow', 'none', 'important');\n                    \n                    const spans = title.querySelectorAll('span');\n                    spans.forEach((span, index) => {\n                        if (index === 1) {\n                            span.style.setProperty('color', '#2A2A2A', 'important');\n                        } else {\n                            span.style.setProperty('color', '#B8860B', 'important');\n                        }\n                    });\n                }\n\n                if (subtitle) {\n                    subtitle.style.setProperty('color', '#000000', 'important');\n                    subtitle.style.setProperty('opacity', '1', 'important');\n                }\n\n                const ctaButtons = document.querySelectorAll('.cta-button');\n                ctaButtons.forEach(button => {\n                    button.style.setProperty('background', 'linear-gradient(135deg, #4CAF50, #45a049)', 'important');\n                    button.style.setProperty('color', '#FFFFFF', 'important');\n                    button.style.setProperty('box-shadow', '0 4px 15px rgba(76, 175, 80, 0.3)', 'important');\n                });\n                \n                if (toggleButton) {\n                    toggleButton.style.setProperty('background', '#ffffff', 'important');\n                    toggleButton.style.setProperty('border', '2px solid #B8860B', 'important');\n                    toggleButton.style.setProperty('color', '#B8860B', 'important');\n                }\n                \n            } else {\n                \/\/ DARK THEME\n                console.log('Applying DARK theme');\n                \n                body.classList.remove('light-theme');\n                \n                html.style.setProperty('background', 'linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%, #0a0a0a 100%)', 'important');\n                body.style.setProperty('background', 'linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%, #0a0a0a 100%)', 'important');\n                \n                html.style.setProperty('margin', '0', 'important');\n                html.style.setProperty('padding', '0', 'important');\n                body.style.setProperty('margin', '0', 'important');\n                body.style.setProperty('padding', '0', 'important');\n                html.style.setProperty('min-height', '100vh', 'important');\n                body.style.setProperty('min-height', '100vh', 'important');\n                \n                if (header) {\n                    header.style.setProperty('background', '#1d1d1d', 'important');\n                    header.style.setProperty('border', '1px solid rgba(156,175,136,0.3)', 'important');\n                }\n                \n                headerNavLinks.forEach(link => {\n                    link.style.setProperty('color', '#f5ebd6', 'important');\n                });\n                \n                headerSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#f5ebd6', 'important');\n                });\n                \n                dropdownContent.forEach(dropdown => {\n                    dropdown.style.setProperty('background', '#1d1d1d', 'important');\n                    dropdown.style.setProperty('border', '1px solid rgba(156,175,136,0.3)', 'important');\n                    \n                    const dropdownLinks = dropdown.querySelectorAll('a');\n                    dropdownLinks.forEach(link => {\n                        link.style.setProperty('color', '#f5ebd6', 'important');\n                    });\n                });\n                \n                hamburgerLines.forEach(line => {\n                    line.style.setProperty('background', '#f5ebd6', 'important');\n                });\n                \n                if (mobileMenu) {\n                    mobileMenu.style.setProperty('background', 'rgba(29, 29, 29, 0.98)', 'important');\n                    mobileMenu.style.setProperty('border-left', '1px solid rgba(156,175,136,0.3)', 'important');\n                }\n                \n                mobileMenuLinks.forEach(link => {\n                    link.style.setProperty('color', '#f5ebd6', 'important');\n                    link.style.setProperty('border-bottom', '1px solid rgba(255, 255, 255, 0.1)', 'important');\n                });\n                \n                mobileSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#f5ebd6', 'important');\n                    link.style.setProperty('background', 'rgba(255, 255, 255, 0.05)', 'important');\n                });\n                \n                if (footerCardWrapper) {\n                    footerCardWrapper.style.setProperty('background', '#1d1d1d', 'important');\n                    footerCardWrapper.style.setProperty('border', '1px solid rgba(156,175,136,0.3)', 'important');\n                }\n                \n                if (footerTitle) {\n                    footerTitle.style.setProperty('color', '#F4C542', 'important');\n                }\n                \n                footerText.forEach(text => {\n                    text.style.setProperty('color', '#f5ebd6', 'important');\n                    text.style.setProperty('font-weight', '400', 'important');\n                });\n                \n                footerLinks.forEach(link => {\n                    link.style.setProperty('color', '#4CAF50', 'important');\n                });\n                \n                footerSocialLinks.forEach(link => {\n                    link.style.setProperty('color', '#4CAF50', 'important');\n                });\n                \n                contentCards.forEach(card => {\n                    card.style.setProperty('background-color', '#1d1d1d', 'important');\n                    card.style.setProperty('border', '1px solid rgba(156,175,136,0.3)', 'important');\n                    card.style.setProperty('color', '#fff', 'important');\n                    \n                    const texts = card.querySelectorAll('p, .content-text');\n                    texts.forEach(text => {\n                        text.style.setProperty('color', '#E3E3DC', 'important');\n                        text.style.setProperty('font-weight', '400', 'important');\n                    });\n                    \n                    const strongTexts = card.querySelectorAll('strong');\n                    strongTexts.forEach(strong => {\n                        strong.style.setProperty('color', '#F4C542', 'important');\n                        strong.style.setProperty('font-weight', '600', 'important');\n                    });\n                    \n                    const links = card.querySelectorAll('a');\n                    links.forEach(link => {\n                        link.style.setProperty('color', '#4CAF50', 'important');\n                    });\n\n                    const videoLinks = card.querySelectorAll('.video-link');\n                    videoLinks.forEach(link => {\n                        link.style.setProperty('color', '#4CAF50', 'important');\n                    });\n                });\n                \n                if (title) {\n                    title.style.setProperty('text-shadow', '2px 2px 8px rgba(0,0,0,0.8)', 'important');\n                    \n                    const spans = title.querySelectorAll('span');\n                    spans.forEach((span, index) => {\n                        if (index === 1) {\n                            span.style.setProperty('color', '#F5EBD6', 'important');\n                        } else {\n                            span.style.setProperty('color', '#F4C542', 'important');\n                        }\n                    });\n                }\n\n                if (subtitle) {\n                    subtitle.style.setProperty('color', '#E3E3DC', 'important');\n                    subtitle.style.setProperty('opacity', '0.9', 'important');\n                }\n\n                const ctaButtons = document.querySelectorAll('.cta-button');\n                ctaButtons.forEach(button => {\n                    button.style.setProperty('background', 'linear-gradient(135deg, #4CAF50, #45a049)', 'important');\n                    button.style.setProperty('color', '#FFFFFF', 'important');\n                    button.style.setProperty('box-shadow', '0 4px 15px rgba(76, 175, 80, 0.3)', 'important');\n                });\n                \n                console.log('Applied dark theme CTA styling');\n                \n                if (toggleButton) {\n                    toggleButton.style.setProperty('background', 'rgba(0,0,0,0.8)', 'important');\n                    toggleButton.style.setProperty('border', '2px solid #4CAF50', 'important');\n                    toggleButton.style.setProperty('color', '#4CAF50', 'important');\n                }\n            }\n        }\n\n        \/\/ Initialize page\n        document.addEventListener('DOMContentLoaded', function() {\n            initializeAnimations();\n            toggleTheme();\n            \n            setTimeout(() => {\n                const ctaButtons = document.querySelectorAll('.cta-button');\n                ctaButtons.forEach(button => {\n                    button.style.setProperty('background', 'linear-gradient(135deg, #4CAF50, #45a049)', 'important');\n                    button.style.setProperty('color', '#FFFFFF', 'important');\n                    button.style.setProperty('box-shadow', '0 4px 15px rgba(76, 175, 80, 0.3)', 'important');\n                });\n            }, 100);\n        });\n\n        function initializeAnimations() {\n            setTimeout(() => {\n                const titleContainer = document.querySelector('.title-container');\n                if (titleContainer) {\n                    titleContainer.style.opacity = '1';\n                    titleContainer.style.transform = 'translateY(0)';\n                }\n            }, 200);\n\n            const observer = new IntersectionObserver((entries) => {\n                entries.forEach((entry, index) => {\n                    if (entry.isIntersecting) {\n                        setTimeout(() => {\n                            entry.target.classList.add('animate-in');\n                        }, index * 50);\n                        observer.unobserve(entry.target);\n                    }\n                });\n            }, {\n                threshold: 0.05,\n                rootMargin: '0px 0px -20px 0px'\n            });\n\n            const cards = document.querySelectorAll('.content-card');\n            cards.forEach(card => {\n                observer.observe(card);\n            });\n        }\n    <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Who&#8217;s Typing Da Words &#8211; Two Birds One Stoned | Meet James Loading&#8230; &times; WHO&#8217;S TYPING DA WORDS? Eat your vegtables \ud83c\udf19 Ah me neckkkkk. So here I am, Bangkok, 8:25pm on the 20th of October 2025, typing away in Google Docs. Bit of a full circle moment really. When I first decided to start [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7726","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/pages\/7726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/comments?post=7726"}],"version-history":[{"count":42,"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/pages\/7726\/revisions"}],"predecessor-version":[{"id":7779,"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/pages\/7726\/revisions\/7779"}],"wp:attachment":[{"href":"https:\/\/twobirdsonestoned.co\/fr\/wp-json\/wp\/v2\/media?parent=7726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}