"use strict"; /** * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */const nhcarriganHeadersVersion="4.1.0";console.log(`\n========================================\nLoading NHCarrigan library v4.1.0.\nCopyright (c) ${(new Date).getFullYear().toString()} NHCarrigan\nChangelog: https://git.nhcarrigan.com/nhcarrigan/website-headers/releases\nLicensed under our public license: https://docs.nhcarrigan.com/legal/license\nQuestions? Contact us at https://docs.nhcarrigan.com/about/contact\n========================================\n`);const nhcarriganHeadersHead=document.querySelector("head"),nhcarriganHeadersBody=document.querySelector("body"),nhcarriganHeadersTitle=document.querySelector("title"),nhcarriganHeadersDescription=document.querySelector('meta[name="description"]'),{href:nhcarriganHeadersUrl,hostname:nhcarriganHeadersHostname,pathname:nhcarriganHeadersPathname}=window.location,nhcarriganHeadersCharacterSet=document.createElement("meta");nhcarriganHeadersCharacterSet.setAttribute("charset","UTF-8");const nhcarriganHeadersViewport=document.createElement("meta");nhcarriganHeadersViewport.setAttribute("name","viewport"),nhcarriganHeadersViewport.setAttribute("content","width=device-width, initial-scale=1.0");const nhcarriganHeadersThemeColor=document.createElement("meta");nhcarriganHeadersThemeColor.setAttribute("name","theme-color"),nhcarriganHeadersThemeColor.setAttribute("content","#4A0E0E");const nhcarriganHeadersReferrer=document.createElement("meta");nhcarriganHeadersReferrer.setAttribute("name","referrer"),nhcarriganHeadersReferrer.setAttribute("content","strict-origin-when-cross-origin");const nhcarriganHeadersOpenGraphTitle=document.createElement("meta");nhcarriganHeadersOpenGraphTitle.setAttribute("property","og:title"),nhcarriganHeadersOpenGraphTitle.setAttribute("content",nhcarriganHeadersTitle?.innerText??"NHCarrigan");const nhcarriganHeadersOpenGraphDescription=document.createElement("meta");nhcarriganHeadersOpenGraphDescription.setAttribute("property","og:description"),nhcarriganHeadersOpenGraphDescription.setAttribute("content",nhcarriganHeadersDescription?.getAttribute("content")??"We are a software engineering and community management consulting firm.");const nhcarriganHeadersOpenGraphImage=document.createElement("meta");nhcarriganHeadersOpenGraphImage.setAttribute("property","og:image"),nhcarriganHeadersOpenGraphImage.setAttribute("content","https://cdn.nhcarrigan.com/og-image.png");const nhcarriganHeadersOpenGraphUrl=document.createElement("meta");nhcarriganHeadersOpenGraphUrl.setAttribute("property","og:url"),nhcarriganHeadersOpenGraphUrl.setAttribute("content",nhcarriganHeadersUrl);const nhcarriganHeadersOpenGraphType=document.createElement("meta");nhcarriganHeadersOpenGraphType.setAttribute("property","og:type"),nhcarriganHeadersOpenGraphType.setAttribute("content","website");const nhcarriganHeadersOpenGraphSiteName=document.createElement("meta");nhcarriganHeadersOpenGraphSiteName.setAttribute("property","og:site_name"),nhcarriganHeadersOpenGraphSiteName.setAttribute("content","NHCarrigan");const nhcarriganHeadersOpenGraphLocale=document.createElement("meta");nhcarriganHeadersOpenGraphLocale.setAttribute("property","og:locale"),nhcarriganHeadersOpenGraphLocale.setAttribute("content","en_US");const nhcarriganHeadersOpenGraphImageAlt=document.createElement("meta");nhcarriganHeadersOpenGraphImageAlt.setAttribute("property","og:image:alt"),nhcarriganHeadersOpenGraphImageAlt.setAttribute("content","NHCarrigan logo and branding");const nhcarriganHeadersOpenGraphImageWidth=document.createElement("meta");nhcarriganHeadersOpenGraphImageWidth.setAttribute("property","og:image:width"),nhcarriganHeadersOpenGraphImageWidth.setAttribute("content","1920");const nhcarriganHeadersOpenGraphImageHeight=document.createElement("meta");nhcarriganHeadersOpenGraphImageHeight.setAttribute("property","og:image:height"),nhcarriganHeadersOpenGraphImageHeight.setAttribute("content","1080");const nhcarriganHeadersTwitterCard=document.createElement("meta");nhcarriganHeadersTwitterCard.setAttribute("name","twitter:card"),nhcarriganHeadersTwitterCard.setAttribute("content","summary_large_image");const nhcarriganHeadersTwitterDomain=document.createElement("meta");nhcarriganHeadersTwitterDomain.setAttribute("name","twitter:domain"),nhcarriganHeadersTwitterDomain.setAttribute("content",nhcarriganHeadersHostname);const nhcarriganHeadersTwitterUrl=document.createElement("meta");nhcarriganHeadersTwitterUrl.setAttribute("name","twitter:url"),nhcarriganHeadersTwitterUrl.setAttribute("content",nhcarriganHeadersUrl);const nhcarriganHeadersTwitterTitle=document.createElement("meta");nhcarriganHeadersTwitterTitle.setAttribute("name","twitter:title"),nhcarriganHeadersTwitterTitle.setAttribute("content",nhcarriganHeadersTitle?.innerText??"NHCarrigan");const nhcarriganHeadersTwitterDescription=document.createElement("meta");nhcarriganHeadersTwitterDescription.setAttribute("name","twitter:description"),nhcarriganHeadersTwitterDescription.setAttribute("content",nhcarriganHeadersDescription?.getAttribute("content")??"We are a software engineering and community management consulting firm.");const nhcarriganHeadersTwitterImage=document.createElement("meta");nhcarriganHeadersTwitterImage.setAttribute("name","twitter:image"),nhcarriganHeadersTwitterImage.setAttribute("content","https://cdn.nhcarrigan.com/og-image.png");const nhcarriganHeadersTwitterSite=document.createElement("meta");nhcarriganHeadersTwitterSite.setAttribute("name","twitter:site"),nhcarriganHeadersTwitterSite.setAttribute("content","@nhcarrigan1");const nhcarriganHeadersTwitterCreator=document.createElement("meta");nhcarriganHeadersTwitterCreator.setAttribute("name","twitter:creator"),nhcarriganHeadersTwitterCreator.setAttribute("content","@nhcarrigan1");const nhcarriganHeadersFormatDetection=document.createElement("meta");nhcarriganHeadersFormatDetection.setAttribute("name","format-detection"),nhcarriganHeadersFormatDetection.setAttribute("content","telephone=no");const nhcarriganHeadersRobots=document.createElement("meta");nhcarriganHeadersRobots.setAttribute("name","robots"),nhcarriganHeadersRobots.setAttribute("content","index, follow");const nhcarriganHeadersAuthor=document.createElement("meta");nhcarriganHeadersAuthor.setAttribute("name","author"),nhcarriganHeadersAuthor.setAttribute("content","Naomi Carrigan");const nhcarriganHeadersFavicon=document.createElement("link");nhcarriganHeadersFavicon.rel="icon",nhcarriganHeadersFavicon.type="image/x-icon",nhcarriganHeadersFavicon.href="https://cdn.nhcarrigan.com/favicon/favicon.ico";const nhcarriganHeadersAppleTouchIcon=document.createElement("link");nhcarriganHeadersAppleTouchIcon.rel="apple-touch-icon",nhcarriganHeadersAppleTouchIcon.href="https://cdn.nhcarrigan.com/favicon/apple-touch-icon.png";const nhcarriganHeadersSmallIcon=document.createElement("link");nhcarriganHeadersSmallIcon.rel="icon",nhcarriganHeadersSmallIcon.href="https://cdn.nhcarrigan.com/favicon/favicon-16x16.png";const nhcarriganHeadersLargeIcon=document.createElement("link");nhcarriganHeadersLargeIcon.rel="icon",nhcarriganHeadersLargeIcon.href="https://cdn.nhcarrigan.com/favicon/favicon-32x32.png";const nhcarriganHeadersStyles=document.createElement("style");nhcarriganHeadersStyles.id="nhcarrigan-global-styles",nhcarriganHeadersStyles.innerHTML='\n/* Import fun and whimsical fonts! */\n@import url(\'https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Creepster&family=Griffy&family=Henny+Penny&display=swap\');\n\n\n:root {\n /* Witchy Purple Rose Palette */\n --witch-purple: #2B1B3D;\n --witch-plum: #44275A;\n --witch-rose: #A8577E;\n --witch-mauve: #D4A5C7;\n --witch-lavender: #E8D5E8;\n --witch-black: #0A0009;\n --witch-silver: #C0C0C0;\n --witch-moon: #F5F5F5;\n --witch-shadow: rgba(10, 0, 9, 0.7);\n\n /* Theme variables */\n --foreground: var(--witch-purple);\n --background: var(--witch-moon);\n --accent: var(--witch-rose);\n --border: var(--witch-plum);\n --highlight: var(--witch-mauve);\n\n font-size: 14pt;\n line-height: 1.6;\n}\n\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font-family: \'Kalam\', cursive, sans-serif;\n cursor: url(\'data:image/svg+xml;utf8,\') 0 0, url(\'https://cdn.nhcarrigan.com/cursors/cursor.cur\'), auto;\n min-height: 100vh;\n min-width: 100vw;\n}\n\nbody {\n min-height: 100vh;\n position: relative;\n}\n\n/* Witchy mystical background */\nbody::before {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: url(https://cdn.nhcarrigan.com/background.png);\n background-size: cover;\n background-position: center;\n z-index: -2;\n pointer-events: none;\n}\n\n/* Purple overlay for witchy effect */\nbody::after {\n content: "";\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background:\n radial-gradient(circle at 20% 50%, rgba(168, 87, 126, 0.35) 0%, transparent 60%),\n radial-gradient(circle at 80% 80%, rgba(68, 39, 90, 0.35) 0%, transparent 60%),\n linear-gradient(180deg,\n rgba(10, 0, 9, 0.5) 0%,\n rgba(43, 27, 61, 0.25) 50%,\n rgba(43, 27, 61, 0.4) 100%\n );\n z-index: -1;\n pointer-events: none;\n}\n\nmain {\n color: var(--foreground);\n background: linear-gradient(135deg,\n rgba(245, 245, 245, 0.95) 0%,\n rgba(232, 213, 232, 0.9) 100%\n );\n text-align: center;\n border-radius: 15px;\n width: 95%;\n max-width: 1080px;\n margin: 20px auto 85px auto;\n padding: 40px;\n position: relative;\n\n /* Simple elegant border */\n border: 2px solid var(--witch-plum);\n box-shadow:\n /* Magical purple glow */\n 0 0 60px rgba(168, 87, 126, 0.4),\n 0 0 100px rgba(68, 39, 90, 0.3),\n /* Standard shadow */\n 0 10px 40px var(--witch-shadow),\n /* Inner glow */\n inset 0 0 60px rgba(168, 87, 126, 0.05);\n}\n\nfooter {\n width: 100%;\n color: var(--witch-lavender);\n background: linear-gradient(to bottom,\n rgba(43, 27, 61, 0.95) 0%,\n var(--witch-black) 100%\n );\n position: fixed;\n bottom: 0;\n height: 75px;\n padding: 0 10px;\n border-top: 2px solid var(--witch-mauve);\n box-shadow:\n /* Purple glow from top border */\n 0 -10px 40px rgba(212, 165, 199, 0.3),\n 0 -5px 20px rgba(168, 87, 126, 0.4),\n /* Standard shadow */\n 0 -5px 20px var(--witch-shadow);\n}\n\n#footer-inner-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 75px;\n}\n\n#footer-inner-container a {\n color: var(--witch-lavender);\n transition: all 0.3s ease;\n}\n\n#footer-inner-container a:hover {\n color: var(--witch-mauve);\n text-shadow: 0 0 10px rgba(212, 165, 199, 0.5);\n}\n\n#footer-badge-container {\n display: grid;\n grid-template-columns: repeat(8, 1fr);\n align-items: center;\n justify-content: space-around;\n}\n\n#show-socials-button, #theme-select-button {\n background: none;\n border: 1px solid var(--witch-plum);\n border-radius: 20px;\n cursor: url(\'data:image/svg+xml;utf8,\') 0 0, url(\'https://cdn.nhcarrigan.com/cursors/pointer.cur\'), pointer;\n color: var(--witch-lavender);\n font-size: 1rem;\n font-family: \'Kalam\', cursive;\n font-weight: 700;\n padding: 8px 15px;\n transition: all 0.3s ease;\n}\n\n#show-socials-button:hover, #theme-select-button:hover {\n background: rgba(168, 87, 126, 0.2);\n border-color: var(--witch-mauve);\n transform: translateY(-2px);\n box-shadow: 0 4px 15px rgba(168, 87, 126, 0.3);\n}\n\n#show-socials-button > i, #theme-select-button > i {\n font-size: 1.2rem;\n margin-right: 5px;\n}\n\na {\n color: var(--accent);\n cursor: url(\'data:image/svg+xml;utf8,\') 0 0, url(\'https://cdn.nhcarrigan.com/cursors/pointer.cur\'), pointer;\n transition: all 0.3s ease;\n text-decoration: none;\n}\n\na:hover {\n color: var(--witch-plum);\n text-decoration: underline;\n text-decoration-color: var(--witch-mauve);\n text-underline-offset: 3px;\n cursor: url(\'data:image/svg+xml;utf8,\') 0 0, pointer;\n}\n\n#tree-nation-offset-website {\n display: flex;\n align-items: center;\n}\n\n#social-list {\n position: absolute;\n bottom: 75px;\n left: 50%;\n transform: translateX(-50%);\n width: 90vw;\n max-width: 400px;\n padding: 20px;\n background: linear-gradient(135deg,\n rgba(43, 27, 61, 0.98) 0%,\n rgba(10, 0, 9, 0.95) 100%\n );\n color: var(--witch-lavender);\n border-radius: 15px;\n border: 1px solid var(--witch-mauve);\n display: none;\n z-index: 1000;\n box-shadow:\n 0 10px 30px var(--witch-shadow),\n inset 0 0 20px rgba(168, 87, 126, 0.1);\n}\n\n.social-list-item {\n padding: 12px;\n transition: all 0.3s ease;\n border-radius: 8px;\n}\n\n.social-list-item > a {\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n color: var(--witch-lavender);\n}\n\n.social-list-item > a i {\n font-size: 1.2rem;\n margin-right: 12px;\n color: var(--witch-mauve);\n}\n\n.social-list-divider {\n border: none;\n height: 1px;\n background: linear-gradient(\n to right,\n transparent 20%,\n var(--witch-mauve) 50%,\n transparent 80%\n );\n margin: 8px 0;\n opacity: 0.5;\n}\n\n.social-list-item:hover {\n background: rgba(168, 87, 126, 0.2);\n transform: translateX(3px);\n}\n\n.social-list-item:hover > a {\n color: var(--witch-rose);\n}\n\n.is-dark {\n --foreground: var(--witch-lavender);\n --background: var(--witch-black);\n --accent: var(--witch-mauve);\n --border: var(--witch-rose);\n --highlight: var(--witch-plum);\n}\n\n/* Dark mode specific adjustments */\n.is-dark main {\n background: linear-gradient(135deg,\n rgba(10, 0, 9, 0.95) 0%,\n rgba(43, 27, 61, 0.9) 100%\n );\n color: var(--witch-lavender);\n border-color: var(--witch-rose);\n box-shadow:\n /* Mystical rose glow for dark mode */\n 0 0 80px rgba(168, 87, 126, 0.5),\n 0 0 120px rgba(212, 165, 199, 0.3),\n /* Standard shadow */\n 0 10px 40px rgba(0, 0, 0, 0.8),\n /* Inner glow */\n inset 0 0 60px rgba(168, 87, 126, 0.1);\n}\n\n.is-dark h1 { color: var(--witch-mauve); }\n.is-dark h2, .is-dark h3 { color: var(--witch-lavender); }\n\n.is-dark a {\n color: var(--witch-mauve);\n}\n\n.is-dark a:hover {\n color: var(--witch-rose);\n}\n/* Typography */\nh1, h2, h3, h4, h5, h6 {\n font-family: \'Griffy\', cursive;\n font-weight: 400;\n letter-spacing: 1px;\n}\n\n@keyframes wiggle {\n 0%, 100% { transform: rotate(-2deg); }\n 25% { transform: rotate(2deg); }\n 50% { transform: rotate(-1deg); }\n 75% { transform: rotate(1deg); }\n}\n\nh1 {\n color: var(--witch-plum);\n font-size: 2.8rem;\n text-shadow: 3px 3px 0px var(--witch-rose),\n 4px 4px 8px rgba(168, 87, 126, 0.4);\n transform: rotate(-2deg);\n display: inline-block;\n animation: wiggle 4s ease-in-out infinite;\n}\n\nh2 {\n color: var(--witch-purple);\n font-size: 2.2rem;\n text-shadow: 2px 2px 4px rgba(68, 39, 90, 0.3);\n}\n\nh3 {\n color: var(--witch-purple);\n font-size: 1.6rem;\n font-family: \'Kalam\', cursive;\n font-weight: 700;\n}\n\np {\n line-height: 1.8;\n margin-bottom: 1.2em;\n}\n\n/* Form elements */\ninput, textarea, select {\n font-family: \'Kalam\', cursive;\n font-weight: 400;\n font-size: 1rem;\n padding: 12px 16px;\n border: 2px solid var(--witch-plum);\n border-radius: 15px;\n background: rgba(245, 245, 245, 0.95);\n color: var(--witch-purple);\n transition: all 0.3s ease;\n outline: none;\n}\n\ninput[type="text"], input[type="email"], input[type="password"], textarea {\n cursor: url(\'data:image/svg+xml;utf8,\') 12 24, text;\n}\n\ninput:focus, textarea:focus, select:focus {\n border-color: var(--witch-rose);\n box-shadow: 0 0 0 3px rgba(168, 87, 126, 0.15);\n}\n\nbutton, input[type="submit"], input[type="button"] {\n font-family: \'Griffy\', cursive;\n font-weight: 400;\n padding: 14px 28px;\n background: linear-gradient(135deg,\n var(--witch-plum) 0%,\n var(--witch-purple) 100%\n );\n color: var(--witch-moon);\n border: 3px solid transparent;\n border-radius: 30px;\n cursor: url(\'data:image/svg+xml;utf8,\') 0 0, url(\'https://cdn.nhcarrigan.com/cursors/pointer.cur\'), pointer;\n transition: all 0.3s ease;\n text-transform: none;\n font-size: 1.1rem;\n letter-spacing: 1px;\n transform: rotate(-1deg);\n}\n\nbutton:hover, input[type="submit"]:hover, input[type="button"]:hover {\n transform: translateY(-3px) rotate(1deg) scale(1.05);\n box-shadow: 0 8px 25px rgba(68, 39, 90, 0.4),\n 0 0 30px rgba(168, 87, 126, 0.3);\n border-color: var(--witch-rose);\n}\n\n/* Lists */\nul, ol {\n margin-left: 1.5em;\n margin-bottom: 1em;\n}\n\nul li::marker {\n content: "✦ ";\n color: var(--witch-rose);\n}\n\n/* Tables */\ntable {\n width: 100%;\n border-collapse: collapse;\n margin: 1em 0;\n border-radius: 8px;\n overflow: hidden;\n}\n\nth, td {\n padding: 12px;\n text-align: left;\n}\n\nth {\n background: var(--witch-plum);\n color: var(--witch-moon);\n}\n\ntr:nth-child(even) {\n background: rgba(212, 165, 199, 0.05);\n}\n\ntr:hover {\n background: rgba(168, 87, 126, 0.1);\n}\n\n/* Blockquotes */\nblockquote {\n border-left: 5px wavy var(--witch-rose);\n padding-left: 20px;\n margin: 1em 0;\n font-family: \'Griffy\', cursive;\n font-style: normal;\n color: var(--witch-plum);\n font-size: 1.2rem;\n line-height: 1.8;\n background: linear-gradient(90deg,\n rgba(168, 87, 126, 0.05) 0%,\n transparent 50%);\n position: relative;\n}\n\n/* Code blocks */\ncode, pre {\n font-family: \'Courier New\', monospace;\n background: rgba(43, 27, 61, 0.05);\n color: var(--witch-purple);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\npre {\n padding: 15px;\n overflow-x: auto;\n border: 1px solid var(--witch-plum);\n}\n\n/* Scrollbar */\n::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n::-webkit-scrollbar-track {\n background: var(--witch-lavender);\n}\n\n::-webkit-scrollbar-thumb {\n background: var(--witch-plum);\n border-radius: 5px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: var(--witch-purple);\n}\n\n/* Selection */\n::selection {\n background: var(--witch-rose);\n color: var(--witch-moon);\n}\n\n::-moz-selection {\n background: var(--witch-rose);\n color: var(--witch-moon);\n}\n\n/* Draggable elements */\n[draggable="true"] {\n cursor: url(\'data:image/svg+xml;utf8,\') 12 12, move;\n}\n\n/* Special decorative text classes */\n.witchy-accent {\n font-family: \'Creepster\', cursive;\n letter-spacing: 3px;\n text-shadow: 3px 3px 0px var(--witch-rose),\n 4px 4px 8px rgba(168, 87, 126, 0.5);\n color: var(--witch-purple);\n transform: skew(-5deg);\n display: inline-block;\n}\n\n.mystical-text {\n font-family: \'Henny Penny\', cursive;\n letter-spacing: 2px;\n text-shadow: 2px 2px 4px rgba(68, 39, 90, 0.4);\n}\n\n.spooky-title {\n font-family: \'Creepster\', cursive;\n background: linear-gradient(45deg,\n var(--witch-purple) 0%,\n var(--witch-rose) 50%,\n var(--witch-mauve) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-shadow: none;\n}\n\n@media screen and (max-width: 1000px) {\n #tree-nation-tree-counter {\n display: none;\n }\n}\n\n@media screen and (max-width: 835px) {\n #theme-select-button {\n font-size: 10pt;\n padding: 8px 16px;\n }\n #show-socials-button {\n font-size: 10pt;\n padding: 8px 16px;\n }\n}\n\n@media screen and (max-width: 768px) {\n #tree-nation-offset-website {\n display: none;\n }\n}\n\n@media screen and (max-width: 625px) {\n footer, #footer-inner-container {\n height: 75px;\n justify-content: space-around;\n }\n main {\n margin-bottom: 85px;\n }\n #footer-copyright {\n font-size: 10pt;\n }\n}\n\n@media screen and (max-width: 560px) {\n #donate-badge {\n display: none;\n }\n}\n\n@media screen and (max-width: 350px) {\n footer, #show-socials-button, #theme-select-button, #show-socials-button > i, #theme-select-button > i {\n font-size: 10pt;\n }\n}\n';const nhcarriganHeadersFooter=document.createElement("footer");nhcarriganHeadersFooter.innerHTML='\n
\n
\n \n Join Naomi\'s personal Discord community to stay connected with her latest projects and activities!\n
\n
\n
\n
\n
\n
\n
\n
\n
\n