3 Commits 06d989a684 ... 9904b3c55f

Author SHA1 Message Date
  windhamdavid 9904b3c55f Wire in davo-bot tag + index cleanups 2 weeks ago
  windhamdavid b04a59becc Use relative font/image paths in CSS 2 weeks ago
  windhamdavid 654c640f0f Add davo-bot 2000 widget loader 2 weeks ago
6 changed files with 164 additions and 108 deletions
  1. 96 96
      css/style.css
  2. 1 1
      css/styles.css
  3. 1 1
      css/styles.scss
  4. 9 6
      index.html
  5. 7 4
      js/_init.js
  6. 50 0
      js/ask-widget.js

+ 96 - 96
css/style.css

@@ -38,7 +38,7 @@ body {
 }
 }
      
      
 #backgroundsvg {
 #backgroundsvg {
-  background-image: url('/img/background.svg');
+  background-image: url('../img/background.svg');
   background-repeat: no-repeat;
   background-repeat: no-repeat;
   background-position: 0% 0%;
   background-position: 0% 0%;
   background-size: cover;
   background-size: cover;
@@ -50,7 +50,7 @@ body {
   opacity: .75;
   opacity: .75;
 }
 }
 #backgroundsvg2 {
 #backgroundsvg2 {
-  background-image: url('/img/background2.svg');
+  background-image: url('../img/background2.svg');
   background-repeat: no-repeat;
   background-repeat: no-repeat;
   background-position: 0% 0%;
   background-position: 0% 0%;
   background-size: cover;
   background-size: cover;
@@ -62,7 +62,7 @@ body {
   opacity: .75;
   opacity: .75;
 }
 }
 #backgroundsvg3 {
 #backgroundsvg3 {
-  background-image: url('/img/background3.svg');
+  background-image: url('../img/background3.svg');
   background-repeat: no-repeat;
   background-repeat: no-repeat;
   background-position: 0% 0%;
   background-position: 0% 0%;
   background-size: cover;
   background-size: cover;
@@ -715,17 +715,17 @@ ul.work {
 
 
 /***************************************************
 /***************************************************
 .hello {
 .hello {
-  background-image: url('/img/hello.svg') !important;
+  background-image: url('../img/hello.svg') !important;
   background-size:cover  !important;
   background-size:cover  !important;
   background-position: 50% 50%  !important;
   background-position: 50% 50%  !important;
 }
 }
 .who {
 .who {
-  background-image: url('/img/who.svg') !important;
+  background-image: url('../img/who.svg') !important;
   background-size:cover  !important;
   background-size:cover  !important;
   background-position: 50% 50%  !important;
   background-position: 50% 50%  !important;
 }
 }
 #dw-footer {
 #dw-footer {
-  background-image: url('/img/footer.svg');
+  background-image: url('../img/footer.svg');
   background-size:100% 100%;
   background-size:100% 100%;
   background-size:cover;
   background-size:cover;
   background-repeat: no-repeat;
   background-repeat: no-repeat;
@@ -1438,8 +1438,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 400;
   font-weight: 400;
-  src: url("/fonts/Inter-Regular.woff2") format("woff2"),
-    url("/fonts/Inter-Regular.woff") format("woff");
+  src: url("../fonts/Inter-Regular.woff2") format("woff2"),
+    url("../fonts/Inter-Regular.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1447,8 +1447,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 400;
   font-weight: 400;
-  src: url("/fonts/Inter-Italic.woff2") format("woff2"),
-    url("/fonts/Inter-Italic.woff") format("woff");
+  src: url("../fonts/Inter-Italic.woff2") format("woff2"),
+    url("../fonts/Inter-Italic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1456,8 +1456,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 500;
   font-weight: 500;
-  src: url("/fonts/Inter-Medium.woff2") format("woff2"),
-    url("/fonts/Inter-Medium.woff") format("woff");
+  src: url("../fonts/Inter-Medium.woff2") format("woff2"),
+    url("../fonts/Inter-Medium.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1465,8 +1465,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 500;
   font-weight: 500;
-  src: url("/fonts/Inter-MediumItalic.woff2") format("woff2"),
-    url("/fonts/Inter-MediumItalic.woff") format("woff");
+  src: url("../fonts/Inter-MediumItalic.woff2") format("woff2"),
+    url("../fonts/Inter-MediumItalic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1474,8 +1474,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 600;
   font-weight: 600;
-  src: url("/fonts/Inter-SemiBold.woff2") format("woff2"),
-    url("/fonts/Inter-SemiBold.woff") format("woff");
+  src: url("../fonts/Inter-SemiBold.woff2") format("woff2"),
+    url("../fonts/Inter-SemiBold.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1483,8 +1483,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 600;
   font-weight: 600;
-  src: url("/fonts/Inter-SemiBoldItalic.woff2") format("woff2"),
-    url("/fonts/Inter-SemiBoldItalic.woff") format("woff");
+  src: url("../fonts/Inter-SemiBoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-SemiBoldItalic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1492,8 +1492,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 700;
   font-weight: 700;
-  src: url("/fonts/Inter-Bold.woff2") format("woff2"),
-    url("/fonts/Inter-Bold.woff") format("woff");
+  src: url("../fonts/Inter-Bold.woff2") format("woff2"),
+    url("../fonts/Inter-Bold.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1501,8 +1501,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 700;
   font-weight: 700;
-  src: url("/fonts/Inter-BoldItalic.woff2") format("woff2"),
-    url("/fonts/Inter-BoldItalic.woff") format("woff");
+  src: url("../fonts/Inter-BoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-BoldItalic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1510,8 +1510,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 800;
   font-weight: 800;
-  src: url("/fonts/Inter-ExtraBold.woff2") format("woff2"),
-    url("/fonts/Inter-ExtraBold.woff") format("woff");
+  src: url("../fonts/Inter-ExtraBold.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraBold.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1519,8 +1519,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 800;
   font-weight: 800;
-  src: url("/fonts/Inter-ExtraBoldItalic.woff2") format("woff2"),
-    url("/fonts/Inter-ExtraBoldItalic.woff") format("woff");
+  src: url("../fonts/Inter-ExtraBoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraBoldItalic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1528,8 +1528,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: normal;
   font-style: normal;
   font-weight: 900;
   font-weight: 900;
-  src: url("/fonts/Inter-Black.woff2") format("woff2"),
-    url("/fonts/Inter-Black.woff") format("woff");
+  src: url("../fonts/Inter-Black.woff2") format("woff2"),
+    url("../fonts/Inter-Black.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1537,8 +1537,8 @@ blockquote {
   font-family: 'Inter';
   font-family: 'Inter';
   font-style: italic;
   font-style: italic;
   font-weight: 900;
   font-weight: 900;
-  src: url("/fonts/Inter-BlackItalic.woff2") format("woff2"),
-    url("/fonts/Inter-BlackItalic.woff") format("woff");
+  src: url("../fonts/Inter-BlackItalic.woff2") format("woff2"),
+    url("../fonts/Inter-BlackItalic.woff") format("woff");
   font-display: swap;
   font-display: swap;
 }
 }
 
 
@@ -1546,18 +1546,18 @@ blockquote {
   font-family: 'Montserrat';
   font-family: 'Montserrat';
   font-style: italic;
   font-style: italic;
   font-weight: 400;
   font-weight: 400;
-  src: url('/fonts/montserrat-v14-latin-italic.eot');
+  src: url('../fonts/montserrat-v14-latin-italic.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local('Montserrat Italic'), local('Montserrat-Italic'),
   src: local('Montserrat Italic'), local('Montserrat-Italic'),
-    url('/fonts/montserrat-v14-latin-italic.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/montserrat-v14-latin-italic.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/montserrat-v14-latin-italic.woff2') format('woff2'),
+    url('../fonts/montserrat-v14-latin-italic.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/montserrat-v14-latin-italic.woff') format('woff'),
+    url('../fonts/montserrat-v14-latin-italic.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/montserrat-v14-latin-italic.ttf') format('truetype'),
+    url('../fonts/montserrat-v14-latin-italic.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/montserrat-v14-latin-italic.svg#Montserrat') format('svg');
+    url('../fonts/montserrat-v14-latin-italic.svg#Montserrat') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1566,18 +1566,18 @@ blockquote {
   font-family: 'Montserrat';
   font-family: 'Montserrat';
   font-style: normal;
   font-style: normal;
   font-weight: 400;
   font-weight: 400;
-  src: url('/fonts/montserrat-v14-latin-regular.eot');
+  src: url('../fonts/montserrat-v14-latin-regular.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local('Montserrat Regular'), local('Montserrat-Regular'),
   src: local('Montserrat Regular'), local('Montserrat-Regular'),
-    url('/fonts/montserrat-v14-latin-regular.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/montserrat-v14-latin-regular.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/montserrat-v14-latin-regular.woff2') format('woff2'),
+    url('../fonts/montserrat-v14-latin-regular.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/montserrat-v14-latin-regular.woff') format('woff'),
+    url('../fonts/montserrat-v14-latin-regular.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/montserrat-v14-latin-regular.ttf') format('truetype'),
+    url('../fonts/montserrat-v14-latin-regular.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/montserrat-v14-latin-regular.svg#Montserrat') format('svg');
+    url('../fonts/montserrat-v14-latin-regular.svg#Montserrat') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1586,18 +1586,18 @@ blockquote {
   font-family: 'Montserrat';
   font-family: 'Montserrat';
   font-style: normal;
   font-style: normal;
   font-weight: 500;
   font-weight: 500;
-  src: url('/fonts/montserrat-v14-latin-500.eot');
+  src: url('../fonts/montserrat-v14-latin-500.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local('Montserrat Medium'), local('Montserrat-Medium'),
   src: local('Montserrat Medium'), local('Montserrat-Medium'),
-    url('/fonts/montserrat-v14-latin-500.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/montserrat-v14-latin-500.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/montserrat-v14-latin-500.woff2') format('woff2'),
+    url('../fonts/montserrat-v14-latin-500.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/montserrat-v14-latin-500.woff') format('woff'),
+    url('../fonts/montserrat-v14-latin-500.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/montserrat-v14-latin-500.ttf') format('truetype'),
+    url('../fonts/montserrat-v14-latin-500.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/montserrat-v14-latin-500.svg#Montserrat') format('svg');
+    url('../fonts/montserrat-v14-latin-500.svg#Montserrat') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1606,18 +1606,18 @@ blockquote {
   font-family: 'Montserrat';
   font-family: 'Montserrat';
   font-style: italic;
   font-style: italic;
   font-weight: 500;
   font-weight: 500;
-  src: url('/fonts/montserrat-v14-latin-500italic.eot');
+  src: url('../fonts/montserrat-v14-latin-500italic.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local('Montserrat Medium Italic'), local('Montserrat-MediumItalic'),
   src: local('Montserrat Medium Italic'), local('Montserrat-MediumItalic'),
-    url('/fonts/montserrat-v14-latin-500italic.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/montserrat-v14-latin-500italic.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/montserrat-v14-latin-500italic.woff2') format('woff2'),
+    url('../fonts/montserrat-v14-latin-500italic.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/montserrat-v14-latin-500italic.woff') format('woff'),
+    url('../fonts/montserrat-v14-latin-500italic.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/montserrat-v14-latin-500italic.ttf') format('truetype'),
+    url('../fonts/montserrat-v14-latin-500italic.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/montserrat-v14-latin-500italic.svg#Montserrat') format('svg');
+    url('../fonts/montserrat-v14-latin-500italic.svg#Montserrat') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1626,18 +1626,18 @@ blockquote {
   font-family: 'Montserrat';
   font-family: 'Montserrat';
   font-style: normal;
   font-style: normal;
   font-weight: 900;
   font-weight: 900;
-  src: url('/fonts/montserrat-v14-latin-900.eot');
+  src: url('../fonts/montserrat-v14-latin-900.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local('Montserrat Black'), local('Montserrat-Black'),
   src: local('Montserrat Black'), local('Montserrat-Black'),
-    url('/fonts/montserrat-v14-latin-900.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/montserrat-v14-latin-900.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/montserrat-v14-latin-900.woff2') format('woff2'),
+    url('../fonts/montserrat-v14-latin-900.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/montserrat-v14-latin-900.woff') format('woff'),
+    url('../fonts/montserrat-v14-latin-900.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/montserrat-v14-latin-900.ttf') format('truetype'),
+    url('../fonts/montserrat-v14-latin-900.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/montserrat-v14-latin-900.svg#Montserrat') format('svg');
+    url('../fonts/montserrat-v14-latin-900.svg#Montserrat') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1646,18 +1646,18 @@ blockquote {
   font-family: 'Playfair Display';
   font-family: 'Playfair Display';
   font-style: normal;
   font-style: normal;
   font-weight: 400;
   font-weight: 400;
-  src: url('/fonts/playfair-display-v20-latin-regular.eot');
+  src: url('../fonts/playfair-display-v20-latin-regular.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-    url('/fonts/playfair-display-v20-latin-regular.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/playfair-display-v20-latin-regular.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/playfair-display-v20-latin-regular.woff2') format('woff2'),
+    url('../fonts/playfair-display-v20-latin-regular.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-regular.woff') format('woff'),
+    url('../fonts/playfair-display-v20-latin-regular.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-regular.ttf') format('truetype'),
+    url('../fonts/playfair-display-v20-latin-regular.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/playfair-display-v20-latin-regular.svg#PlayfairDisplay') format('svg');
+    url('../fonts/playfair-display-v20-latin-regular.svg#PlayfairDisplay') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1666,18 +1666,18 @@ blockquote {
   font-family: 'Playfair Display';
   font-family: 'Playfair Display';
   font-style: normal;
   font-style: normal;
   font-weight: 700;
   font-weight: 700;
-  src: url('/fonts/playfair-display-v20-latin-700.eot');
+  src: url('../fonts/playfair-display-v20-latin-700.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-    url('/fonts/playfair-display-v20-latin-700.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/playfair-display-v20-latin-700.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/playfair-display-v20-latin-700.woff2') format('woff2'),
+    url('../fonts/playfair-display-v20-latin-700.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-700.woff') format('woff'),
+    url('../fonts/playfair-display-v20-latin-700.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-700.ttf') format('truetype'),
+    url('../fonts/playfair-display-v20-latin-700.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/playfair-display-v20-latin-700.svg#PlayfairDisplay') format('svg');
+    url('../fonts/playfair-display-v20-latin-700.svg#PlayfairDisplay') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1686,18 +1686,18 @@ blockquote {
   font-family: 'Playfair Display';
   font-family: 'Playfair Display';
   font-style: normal;
   font-style: normal;
   font-weight: 900;
   font-weight: 900;
-  src: url('/fonts/playfair-display-v20-latin-900.eot');
+  src: url('../fonts/playfair-display-v20-latin-900.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-    url('/fonts/playfair-display-v20-latin-900.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/playfair-display-v20-latin-900.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/playfair-display-v20-latin-900.woff2') format('woff2'),
+    url('../fonts/playfair-display-v20-latin-900.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-900.woff') format('woff'),
+    url('../fonts/playfair-display-v20-latin-900.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-900.ttf') format('truetype'),
+    url('../fonts/playfair-display-v20-latin-900.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/playfair-display-v20-latin-900.svg#PlayfairDisplay') format('svg');
+    url('../fonts/playfair-display-v20-latin-900.svg#PlayfairDisplay') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1706,18 +1706,18 @@ blockquote {
   font-family: 'Playfair Display';
   font-family: 'Playfair Display';
   font-style: italic;
   font-style: italic;
   font-weight: 400;
   font-weight: 400;
-  src: url('/fonts/playfair-display-v20-latin-italic.eot');
+  src: url('../fonts/playfair-display-v20-latin-italic.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-    url('/fonts/playfair-display-v20-latin-italic.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/playfair-display-v20-latin-italic.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/playfair-display-v20-latin-italic.woff2') format('woff2'),
+    url('../fonts/playfair-display-v20-latin-italic.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-italic.woff') format('woff'),
+    url('../fonts/playfair-display-v20-latin-italic.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-italic.ttf') format('truetype'),
+    url('../fonts/playfair-display-v20-latin-italic.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/playfair-display-v20-latin-italic.svg#PlayfairDisplay') format('svg');
+    url('../fonts/playfair-display-v20-latin-italic.svg#PlayfairDisplay') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1726,18 +1726,18 @@ blockquote {
   font-family: 'Playfair Display';
   font-family: 'Playfair Display';
   font-style: italic;
   font-style: italic;
   font-weight: 700;
   font-weight: 700;
-  src: url('/fonts/playfair-display-v20-latin-700italic.eot');
+  src: url('../fonts/playfair-display-v20-latin-700italic.eot');
   /* IE9 Compat Modes */
   /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-    url('/fonts/playfair-display-v20-latin-700italic.eot?#iefix') format('embedded-opentype'),
+    url('../fonts/playfair-display-v20-latin-700italic.eot?#iefix') format('embedded-opentype'),
     /* IE6-IE8 */
     /* IE6-IE8 */
-    url('/fonts/playfair-display-v20-latin-700italic.woff2') format('woff2'),
+    url('../fonts/playfair-display-v20-latin-700italic.woff2') format('woff2'),
     /* Super Modern Browsers */
     /* Super Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-700italic.woff') format('woff'),
+    url('../fonts/playfair-display-v20-latin-700italic.woff') format('woff'),
     /* Modern Browsers */
     /* Modern Browsers */
-    url('/fonts/playfair-display-v20-latin-700italic.ttf') format('truetype'),
+    url('../fonts/playfair-display-v20-latin-700italic.ttf') format('truetype'),
     /* Safari, Android, iOS */
     /* Safari, Android, iOS */
-    url('/fonts/playfair-display-v20-latin-700italic.svg#PlayfairDisplay') format('svg');
+    url('../fonts/playfair-display-v20-latin-700italic.svg#PlayfairDisplay') format('svg');
   /* Legacy iOS */
   /* Legacy iOS */
   font-display: swap;
   font-display: swap;
 }
 }
@@ -1746,11 +1746,11 @@ blockquote {
   font-family: 'Gaegu';
   font-family: 'Gaegu';
   font-style: normal;
   font-style: normal;
   font-weight: 300;
   font-weight: 300;
-  src: url('/fonts/gaegu-v15-latin-300.eot'); /* IE9 Compat Modes */
+  src: url('../fonts/gaegu-v15-latin-300.eot'); /* IE9 Compat Modes */
   src: local(''),
   src: local(''),
-       url('/fonts/gaegu-v15-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
-       url('/fonts/gaegu-v15-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
-       url('/fonts/gaegu-v15-latin-300.woff') format('woff'), /* Modern Browsers */
-       url('/fonts/gaegu-v15-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
-       url('/fonts/gaegu-v15-latin-300.svg#Gaegu') format('svg'); /* Legacy iOS */
+       url('../fonts/gaegu-v15-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/gaegu-v15-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/gaegu-v15-latin-300.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/gaegu-v15-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/gaegu-v15-latin-300.svg#Gaegu') format('svg'); /* Legacy iOS */
 }
 }

+ 1 - 1
css/styles.css

@@ -11307,7 +11307,7 @@ textarea.form-control-lg {
 @font-face {
 @font-face {
   font-display: block;
   font-display: block;
   font-family: "bootstrap-icons";
   font-family: "bootstrap-icons";
-  src: url("/fonts/bootstrap-icons.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"), url("/fonts/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff");
+  src: url("../fonts/bootstrap-icons.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"), url("../fonts/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff");
 }
 }
 .bi::before,
 .bi::before,
 [class^=bi-]::before,
 [class^=bi-]::before,

+ 1 - 1
css/styles.scss

@@ -98,5 +98,5 @@ $enable-negative-margins: true;
 ################### Bootstrap Icons ########################
 ################### Bootstrap Icons ########################
 ************************************************************/
 ************************************************************/
 
 
-$bootstrap-icons-font-dir: "/fonts";
+$bootstrap-icons-font-dir: "../fonts";
 @import '../node_modules/bootstrap-icons/font/bootstrap-icons.scss';
 @import '../node_modules/bootstrap-icons/font/bootstrap-icons.scss';

+ 9 - 6
index.html

@@ -12,6 +12,7 @@
 <meta name="description" content="David Windham">
 <meta name="description" content="David Windham">
 <meta name="author" content="David Windham">
 <meta name="author" content="David Windham">
 <title>David Windham</title>
 <title>David Windham</title>
+<link rel="canonical" href="https://davidwindham.com/">
 <meta property="og:title" content="David Windham">
 <meta property="og:title" content="David Windham">
 <meta property="og:description" content="Something Else">
 <meta property="og:description" content="Something Else">
 <meta property="og:type" content="website"><meta property="og:url" content="https://davidwindham.com"><meta property="og:site_name" content="David Windham"><meta property="og:image" content="img/og_image.jpg"><meta property="fb:app_id" content="203136806559589"><meta name="twitter:site" content="@windhamdavid"><meta name="twitter:creator" content="@windhamdavid"><meta name="twitter:title" content="David Windham"><meta name="twitter:description" content="Something Else"><meta name="twitter:image" content="img/ogt_image.jpg"><meta name="twitter:card" content="summary_large_image"><link rel="apple-touch-icon" sizes="180x180" href="img/icons/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="img/icons/site.webmanifest"><!--<link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#3f3f3f">--><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" content="#ffffff">
 <meta property="og:type" content="website"><meta property="og:url" content="https://davidwindham.com"><meta property="og:site_name" content="David Windham"><meta property="og:image" content="img/og_image.jpg"><meta property="fb:app_id" content="203136806559589"><meta name="twitter:site" content="@windhamdavid"><meta name="twitter:creator" content="@windhamdavid"><meta name="twitter:title" content="David Windham"><meta name="twitter:description" content="Something Else"><meta name="twitter:image" content="img/ogt_image.jpg"><meta name="twitter:card" content="summary_large_image"><link rel="apple-touch-icon" sizes="180x180" href="img/icons/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="img/icons/site.webmanifest"><!--<link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#3f3f3f">--><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" content="#ffffff">
@@ -25,7 +26,7 @@
     "@context": "https://schema.org",
     "@context": "https://schema.org",
     "@type": "LocalBusiness",
     "@type": "LocalBusiness",
     "name": "David Windham",
     "name": "David Windham",
-    "image": "https://davidwindham.com/ogt_image.jpg",
+    "image": "https://davidwindham.com/img/ogt_image.jpg",
     "@id": "https://davidwindham.com/#who",
     "@id": "https://davidwindham.com/#who",
     "url": "https://davidwindham.com",
     "url": "https://davidwindham.com",
     "telephone": "803-712-3283",
     "telephone": "803-712-3283",
@@ -428,7 +429,7 @@
                 <li>Jerry Moran</li>
                 <li>Jerry Moran</li>
                 <li>Holy City Farms</li>
                 <li>Holy City Farms</li>
                 <li>Harvard Kennedy School</li>
                 <li>Harvard Kennedy School</li>
-                <li>Clemson University;</li>
+                <li>Clemson University</li>
                 <li>The Chelcum Family Foundation</li>
                 <li>The Chelcum Family Foundation</li>
                 <li>Morris Publishing</li>
                 <li>Morris Publishing</li>
                 <li>The State Newspaper </li>
                 <li>The State Newspaper </li>
@@ -537,7 +538,7 @@
               <p class="mb-n2">I keep accounts with these seven vendors and between them, I can purchase and accomplish almost anything. In most cases, I prefer to cut myself out of the middle and register it to your company.</p>
               <p class="mb-n2">I keep accounts with these seven vendors and between them, I can purchase and accomplish almost anything. In most cases, I prefer to cut myself out of the middle and register it to your company.</p>
               <div class="btn-group btn-group-toggle" data-toggle="buttons">
               <div class="btn-group btn-group-toggle" data-toggle="buttons">
                 <a href="https://www.apple.com/business/" target="_blank" rel="noopener">
                 <a href="https://www.apple.com/business/" target="_blank" rel="noopener">
-                  <img class="vendor-image" alt="Google Cloud" src="img/vendor-apple.svg">
+                  <img class="vendor-image" alt="Apple Business" src="img/vendor-apple.svg">
                 </a>
                 </a>
                 <a href="https://azure.microsoft.com/" target="_blank" rel="noopener">
                 <a href="https://azure.microsoft.com/" target="_blank" rel="noopener">
                   <img class="vendor-image" alt="Microsoft Azure" src="img/vendor-microsoft.svg">
                   <img class="vendor-image" alt="Microsoft Azure" src="img/vendor-microsoft.svg">
@@ -551,13 +552,13 @@
                   <img class="vendor-image" alt="Amazon Web Services" src="img/vendor-amazon.svg">
                   <img class="vendor-image" alt="Amazon Web Services" src="img/vendor-amazon.svg">
                 </a>
                 </a>
                 <a href="https://vercel.com" target="_blank" rel="noopener">
                 <a href="https://vercel.com" target="_blank" rel="noopener">
-                  <img class="vendor-image" alt="Linode" src="img/vendor-vercel.svg">
+                  <img class="vendor-image" alt="Vercel" src="img/vendor-vercel.svg">
                 </a>
                 </a>
                 <a href="https://linode.com" target="_blank" rel="noopener">
                 <a href="https://linode.com" target="_blank" rel="noopener">
                   <img class="vendor-image" alt="Linode" src="img/vendor-linode.svg">
                   <img class="vendor-image" alt="Linode" src="img/vendor-linode.svg">
                 </a>
                 </a>
                 <a href="https://www.akamai.com/" target="_blank" rel="noopener">
                 <a href="https://www.akamai.com/" target="_blank" rel="noopener">
-                  <img class="vendor-image" alt="Google Cloud" src="img/vendor-akamai.svg">
+                  <img class="vendor-image" alt="Akamai" src="img/vendor-akamai.svg">
                 </a>
                 </a>
               </div>
               </div>
             </div>
             </div>
@@ -658,7 +659,7 @@
       <div class="row">
       <div class="row">
         <div class="col-md-6 text-md-left">
         <div class="col-md-6 text-md-left">
           &copy; 2004-2026<br>
           &copy; 2004-2026<br>
-          <small>Updated: 01/19/26</small>
+          <small>Updated: 06/11/26</small>
         </div>
         </div>
         <div class="col-md-6 text-end">
         <div class="col-md-6 text-end">
           <p class="gaegu mb-n1">I'm not really active on some of these:</p>
           <p class="gaegu mb-n1">I'm not really active on some of these:</p>
@@ -688,6 +689,8 @@
 <script src="js/waypoints-inview.js"></script>
 <script src="js/waypoints-inview.js"></script>
 <script src="js/_init.js"></script>
 <script src="js/_init.js"></script>
 <!-- endbuild -->
 <!-- endbuild -->
+<!-- davo-bot 2000 — floating AI assistant, served cross-origin from davidawindham.com/ask -->
+<script src="js/ask-widget.js" defer></script>
 <!--
 <!--
 <script>
 <script>
   var _paq = window._paq = window._paq || [];
   var _paq = window._paq = window._paq || [];

+ 7 - 4
js/_init.js

@@ -21,10 +21,13 @@ document.addEventListener('DOMContentLoaded', function() {
     eventDataTransform: function(event) { event.url = ""; return event; },
     eventDataTransform: function(event) { event.url = ""; return event; },
     eventClick: function(info) { info.jsEvent.preventDefault(); }
     eventClick: function(info) { info.jsEvent.preventDefault(); }
   });
   });
-  calendar.render();  
-  document.getElementById('opendate').addEventListener('click', function(){
-    calendar.gotoDate('2023-05-01')
-  });
+  calendar.render();
+  var openDate = document.getElementById('opendate');
+  if (openDate) {
+    openDate.addEventListener('click', function(){
+      calendar.gotoDate('2023-05-01')
+    });
+  }
 });
 });
 
 
 window.onload = function () {
 window.onload = function () {

+ 50 - 0
js/ask-widget.js

@@ -0,0 +1,50 @@
+/**
+ * Loads "davo-bot 2000" (the floating launcher) on davidwindham.com.
+ *
+ * Unlike the daw (WordPress) and daw_til (Docusaurus) consumers — which live on
+ * davidawindham.com and load the widget SAME-ORIGIN through that site's Apache
+ * /ask proxy — this single-page portfolio is on a DIFFERENT origin
+ * (davidwindham.com). So it loads the bundle and calls the API CROSS-ORIGIN
+ * against the absolute davidawindham.com/ask/ URLs. The widget bundle has open
+ * CORS, so the button always loads; for it to *answer*, the ralph server's
+ * ALLOWED_ORIGINS must include https://davidwindham.com (see ralph README).
+ * Local dev (browserSync/localhost) points at the ralph dev server on :3001.
+ *
+ * We probe the widget URL first and only inject it when the response is really
+ * JavaScript: when ralph is down, davidawindham.com falls through to WordPress
+ * and returns HTML, and injecting that would throw "Unexpected token '<'". The
+ * content-type probe makes this a silent no-op until the backend is actually
+ * serving the widget. The widget sets window.__dawaskLoaded to guard against a
+ * double instance.
+ */
+( function () {
+	if ( typeof document === 'undefined' || typeof fetch === 'undefined' ) {
+		return;
+	}
+
+	var local = /^(localhost|127\.0\.0\.1|0\.0\.0\.0)$/.test( window.location.hostname );
+	var ORIGIN = local ? 'http://localhost:3001' : 'https://davidawindham.com';
+	var WIDGET_URL = ORIGIN + '/ask/widget.js';
+	var API_URL = local ? ORIGIN + '/api/ask' : ORIGIN + '/ask/api/ask';
+
+	function inject() {
+		if ( document.getElementById( 'dawask-script' ) ) {
+			return; // already injected
+		}
+		var s = document.createElement( 'script' );
+		s.id = 'dawask-script';
+		s.src = WIDGET_URL;
+		s.setAttribute( 'data-api-url', API_URL );
+		s.setAttribute( 'data-mode', 'launcher' );
+		document.body.appendChild( s );
+	}
+
+	fetch( WIDGET_URL, { method: 'GET', cache: 'no-store' } )
+		.then( function ( r ) {
+			var ct = ( r.headers.get( 'content-type' ) || '' ).toLowerCase();
+			if ( r.ok && ct.indexOf( 'javascript' ) !== -1 ) {
+				inject();
+			}
+		} )
+		.catch( function () {} ); // backend unreachable → no widget, no error
+} )();