diff --git a/deno.jsonc b/deno.jsonc index 37a53e6..dd3a102 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -8,8 +8,8 @@ "compile:check": "deno check", "deploy": "deno task build && deno run --allow-net --allow-read --allow-env --env tools/deploy.ts", "deploy:check": "deno run --allow-net --allow-env tools/deploy-check.ts", - "dev": "deno run --allow-net --allow-read jsr:@std/http/file-server src/", - "dev:dist": "deno task build && deno run --allow-net --allow-read jsr:@std/http/file-server dist/", + "dev": "deno run --allow-net --allow-read jsr:@std/http/file-server --host 127.0.0.1 src/", + "dev:dist": "deno task build && deno run --allow-net --allow-read jsr:@std/http/file-server --host 127.0.0.1 dist/", "dist": "deno run --allow-read --allow-write --allow-env tools/dist.ts", "fmt:check": "deno fmt --check", "lint:check": "deno lint" diff --git a/src/_css/main.css b/src/_css/main.css index 0deb358..8ef29e9 100644 --- a/src/_css/main.css +++ b/src/_css/main.css @@ -1,386 +1,408 @@ /* ----------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////////////// -CORE STYLES (low resolution, old devices) +MODERN CSS RESET //////////////////////////////////////////////////////////////////////////////// ----------------------------------------------------------------------------- */ -/* --------------------------------- */ -/* General */ -/* --------------------------------- */ +/* 1. Use a more-intuitive box-sizing model. */ +*, +*::before, +*::after { + box-sizing: border-box; +} +/* 2. Remove default margin */ +* { + margin: 0; +} + +/* 3. Allow percentage-based heights in the application */ html, body { height: 100%; } +/* 4. Improve the line height and add accessible line-height */ body { - font-family: "source-sans-pro", sans-serif; - font-size: 100%; /* Use device defaults, typically 16px. */ + line-height: 1.5; + -webkit-font-smoothing: antialiased; } -a { - color: #bce784; - font-weight: bold; - text-decoration: none; +/* 5. Improve media defaults */ +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; } -header { - color: #513b56; - font-size: larger; - text-align: center; +/* 6. Remove built-in form typography styles */ +input, +button, +textarea, +select { + font: inherit; } -p { - color: #513b56; +/* 7. Avoid text overflows */ +p, +h1, +h2, +h3, +h4, +h5, +h6 { + overflow-wrap: break-word; } -h1 { - color: #513b56; - font-family: "bebas-neue", sans-serif; - text-align: center; +/* 8. Create a root stacking context */ +#root, +#__next { + isolation: isolate; } -/* --------------------------------- */ -/* Content */ -/* --------------------------------- */ - -article { - font-size: 6vw; - padding: 1rem; -} - -.emote-winky-face { - display: inline-block; - - -webkit-transform: translateX(1vw) translateY(-2vw) rotate(45deg); - -ms-transform: translateX(1vw) translateY(-2vw) rotate(45deg); - transform: translateX(1vw) translateY(-2vw) rotate(45deg); -} - -.glow-green { - color: #bce784; -} +/* ----------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////// +PROJECT STYLES +//////////////////////////////////////////////////////////////////////////////// +----------------------------------------------------------------------------- */ -.company-flyer-qrcode { - display: none; +:root { + --color-primary: #348aa7; /* Blue */ + --color-secondary: #bce784; /* Green */ + --color-accent: #513b56; /* Dark Purple */ + --color-bg: #ffffff; + --color-bg-alt: #f4f7f8; + --color-text: #513b56; + --container-width: 1000px; + --spacing: 1.5rem; } /* --------------------------------- */ -/* Sections */ +/* General */ /* --------------------------------- */ -#dont-speak-geek { - background-color: #bce784; - font-family: "verveine", sans-serif; - font-size: 10vw; - padding: 10vw 0; - text-align: center; +html { + scroll-behavior: smooth; } -#dont-speak-geek > header { - color: #513b56; +body { + font-family: "source-sans-pro", sans-serif; + color: var(--color-text); + background-color: var(--color-bg); } -#dont-speak-geek > p { - color: #348aa7; - margin: 0; +h1, +h2, +h3 { + font-family: "bebas-neue", sans-serif; + color: var(--color-accent); + margin-top: 0; + text-transform: uppercase; + letter-spacing: 1px; } -/* --------------------------------- */ - -#nbs-your-lifesaver { - background-color: #ffffff; - color: #513b56; - font-family: "source-sans-pro", sans-serif; - - background-image: url("../_images/nbs-lifesaver-empty-faded-500px.png"); - background-position: center center; - background-repeat: no-repeat; - background-size: 50vw; +h1 { + font-size: clamp(2.5rem, 8vw, 4rem); } -#nbs-your-lifesaver > div { +h2 { + font-size: clamp(2rem, 5vw, 2.5rem); text-align: center; + margin-bottom: 2rem; } -#nbs-your-lifesaver p { - display: inline-block; - margin: 0; - text-align: left; +h3 { + font-size: 1.5rem; + color: var(--color-primary); } -#nbs-your-lifesaver #call-to-action { - margin: 1rem 0; +p { + margin-bottom: 1rem; } -#nbs-your-lifesaver #call-to-action > span:first-of-type { - margin: 0; +a { + color: var(--color-primary); + text-decoration: none; + transition: opacity 0.2s; } -#nbs-your-lifesaver #call-to-action > span { - display: block; - margin: 0; - margin-left: 15vw; +a:hover { + opacity: 0.8; +} + +ul { + padding-left: 1.5rem; } -#nbs-your-lifesaver #call-to-action > span:last-of-type { - margin-left: 45vw; +.container { + max-width: var(--container-width); + margin: 0 auto; + padding: 0 var(--spacing); } +/* --------------------------------- */ +/* Hero */ /* --------------------------------- */ -#nbs-can-help { - background-color: #348aa7; - font-family: "verveine", sans-serif; - font-size: 8vw; - padding: 8vw 0; +.hero { + background: linear-gradient(135deg, var(--color-accent) 10%, var(--color-primary) 100%); + color: #fff; + padding: 100px 0; text-align: center; - - background-image: url("../_images/nbs-bubbles-250px.png"); - background-position: right 1rem bottom; - background-repeat: no-repeat; - background-size: 30vw; } -#nbs-can-help .company-acronym { - color: #513b56; +.hero h1 { + color: var(--color-secondary); + margin-bottom: 0.5rem; + white-space: nowrap; + font-size: clamp(1.8rem, 8.5vw, 4rem); + letter-spacing: 0.05em; } -#nbs-can-help > header { - color: #a4bab7; +.brand-letter { + color: var(--color-primary); } -#nbs-can-help > p { - color: #513b56; - margin: 0; +.tagline { + font-size: clamp(1.1rem, 5vw, 1.5rem); + font-weight: bold; + margin-bottom: 2rem; + letter-spacing: 1px; + white-space: nowrap; } -/* --------------------------------- */ +.intro { + font-size: 1.2rem; + max-width: 600px; + margin: 0 auto 2.5rem; + font-family: "verveine", sans-serif; + color: #e0e0e0; +} -#how-nbs-helps { - background-color: #ffffff; - overflow: auto; +@media (min-width: 580px) { + .intro { + max-width: 800px; + } + .intro-line { + display: block; + margin-top: 0.5rem; + } } -#how-nbs-helps h1 { - margin-bottom: 0.5rem; +.btn { + display: inline-block; + background-color: var(--color-secondary); + color: var(--color-accent); + padding: 0.8rem 2rem; + border-radius: 50px; + font-weight: bold; + font-size: 1.1rem; + transition: transform 0.2s, box-shadow 0.2s; } -#how-nbs-helps p { - margin-top: 0; - text-align: justify; +.btn:hover { + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } /* --------------------------------- */ -/* Company Info */ +/* Sections */ /* --------------------------------- */ -.company-name-word::first-letter, -.company-acronym { - color: #348aa7; - font-weight: bold; +.section { + padding: 80px 0; } -.company-number { - color: #513b56; +.alt-bg { + background-color: var(--color-bg-alt); } -/* ----------------------------------------------------------------------------- -//////////////////////////////////////////////////////////////////////////////// -BREAKPOINTS -//////////////////////////////////////////////////////////////////////////////// ------------------------------------------------------------------------------ */ - -/* 500px @ 16px */ -@media all and (min-width: 31.25rem) { - #nbs-your-lifesaver { - background-image: url("../_images/nbs-lifesaver-empty-faded-800px.png"); - } - - #nbs-can-help { - background-size: 25vw; - } - - #how-nbs-helps { - text-align: center; - } - - #how-nbs-helps > section { - display: inline-block; - font-size: large; - margin: auto 0.5rem; - vertical-align: top; - width: 43vw; - } +.grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; } -/* 600px @ 16px */ -@media all and (min-width: 37.5rem) { - article { - font-size: 4vw; - } - - #nbs-your-lifesaver, - #nbs-can-help { - background-size: 20vw; - background-position: right 1rem center; - } +.card { + background: #fff; + padding: 2rem; + border-radius: 12px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); + border-top: 5px solid var(--color-secondary); +} - #nbs-your-lifesaver #call-to-action { - display: block; - text-align: center; - } +/* --------------------------------- */ +/* Platforms */ +/* --------------------------------- */ - #nbs-your-lifesaver #call-to-action > span, - #nbs-your-lifesaver #call-to-action > span:last-of-type { - display: inline-block; - margin: 0; - } +.flex-row { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + gap: 2rem; } -/* 800px @ 16px */ -@media all and (min-width: 50rem) { - #how-nbs-helps > section { - margin: auto 0.5rem; - width: 29vw; - } +.platform-group { + flex: 1; + min-width: 250px; + text-align: center; } -/* 1000px @ 16px */ -@media all and (min-width: 62.5rem) { - article, - header { - text-align: left; - } - - .emote-winky-face { - -webkit-transform: translateX(1vw) translateY(-2vw) rotate(45deg); - -ms-transform: translateX(1vw) translateY(-2vw) rotate(45deg); - transform: translateX(0.25vw) translateY(-0.5vw) rotate(45deg); - } - - #dont-speak-geek, - #nbs-can-help { - font-size: 4vw; - padding: 4rem; - text-align: left; - } +.platform-group h3 { + margin-bottom: 1.5rem; +} - #dont-speak-geek > p { - margin-top: -1vw; - margin-left: 12vw; - } +.platform-group ul { + list-style: none; + padding: 0; + display: grid; + grid-template-columns: repeat(2, auto); + justify-content: center; + gap: 1rem; +} - #nbs-your-lifesaver { - background-position: right 15vw center; - background-size: 15vw; - } +.platform-group li { + background: var(--color-accent); + color: #fff; + padding: 0.5rem 0; + border-radius: 20px; + font-weight: bold; + width: 120px; + text-align: center; +} - #nbs-can-help > header, - #nbs-can-help > p { - text-align: right; - } +/* --------------------------------- */ +/* Pricing */ +/* --------------------------------- */ - #nbs-can-help { - background-position: right 10vw center; - background-size: 10vw; - } +.pricing-info { + display: flex; + flex-direction: column; + align-items: center; + gap: 3rem; + text-align: center; +} - #nbs-can-help > p { - margin-top: -1vw; - margin-right: 8vw; - } +.price-box { + background: var(--color-primary); + color: #fff; + padding: 2rem; + border-radius: 50%; + width: 250px; + height: 250px; + display: flex; + flex-direction: column; + justify-content: center; + box-shadow: 0 10px 20px rgba(52, 138, 167, 0.3); + flex-shrink: 0; +} - #nbs-your-lifesaver, - #how-nbs-helps { - font-size: 3vw; - } +.price-box p { + white-space: nowrap; + font-size: 0.9rem; + margin-bottom: 0; +} - #nbs-your-lifesaver > header, - #how-nbs-helps > header { - text-align: center; - } +.price { + font-size: 3rem; + font-family: "bebas-neue", sans-serif; + line-height: 1; } -/* 1200px @ 16px */ -@media all and (min-width: 75rem) { - #dont-speak-geek, - #nbs-can-help { - padding-top: 3rem; - padding-bottom: 3rem; - } +.referral-box { + max-width: 600px; + background: var(--color-secondary); + padding: 2rem; + border-radius: 12px; + color: var(--color-accent); + text-align: left; +} - #dont-speak-geek > header, - #dont-speak-geek > p { - font-size: 3vw; - } +/* --------------------------------- */ +/* About */ +/* --------------------------------- */ - #dont-speak-geek > p { - margin-top: -0.5vw; - margin-left: 7vw; - } +.about-content { + display: flex; + flex-direction: column; + gap: 1.5rem; + align-items: center; +} - #nbs-your-lifesaver { - background-size: 9vw; - background-position: right 27vw center; - } +.about-image { + border-radius: 12px; + max-width: 300px; + width: 100%; + flex-shrink: 0; +} - #nbs-your-lifesaver > header, - #nbs-your-lifesaver p { - font-size: 2vw; +@media (min-width: 768px) { + .about-content { + flex-direction: row; + align-items: flex-start; + text-align: left; } +} - #nbs-your-lifesaver #call-to-action { - margin-bottom: 0; - } +/* --------------------------------- */ +/* Contact */ +/* --------------------------------- */ - #nbs-can-help { - background-size: 8vw; - background-position: right 6vw center; - } +.contact-section { + text-align: center; + padding-top: 0; +} - #nbs-can-help > header, - #nbs-can-help > p { - font-size: 3vw; - } +.contact-methods { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.5rem; + margin-top: 2rem; +} - #nbs-can-help > p { - margin-top: -0.5vw; - margin-right: 2vw; - } +.contact-link { + background: var(--color-accent); + color: #fff; + padding: 1rem 2rem; + border-radius: 8px; + font-weight: bold; + flex: 1; + min-width: 200px; +} - #how-nbs-helps > header { - font-size: 2vw; - } +.contact-link:hover { + background: var(--color-primary); + color: #fff; } -/* ----------------------------------------------------------------------------- -//////////////////////////////////////////////////////////////////////////////// -PRINT -//////////////////////////////////////////////////////////////////////////////// ------------------------------------------------------------------------------ */ +/* --------------------------------- */ +/* Footer */ +/* --------------------------------- */ -@media print { - body { - print-color-adjust: exact; - } +.footer { + background-color: var(--color-accent); + color: #fff; + padding: 1rem 0; + text-align: center; +} - .company-flyer-qrcode { - display: block !important; - position: fixed; - bottom: 0; - left: 50%; - transform: translate(-50%); - margin-bottom: 1rem; - width: 6.25rem; - } +.footer p { + font-size: clamp(0.7rem, 3.5vw, 0.9rem); + white-space: nowrap; + margin-bottom: 0; +} - #dont-speak-geek { - padding-top: 1.75rem; - padding-bottom: 1.75rem; - } +/* --------------------------------- */ +/* Responsive */ +/* --------------------------------- */ - #how-nbs-helps h1 { - margin-top: 0.25em; +@media (min-width: 768px) { + .pricing-info { + flex-direction: row; + justify-content: center; } } diff --git a/src/_css/normalize.css b/src/_css/normalize.css deleted file mode 100644 index a0dc5c1..0000000 --- a/src/_css/normalize.css +++ /dev/null @@ -1,450 +0,0 @@ -/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers (opinionated). - */ - -body { - margin: 0; -} - -/** - * Add the correct display in IE 9-. - */ - -article, -aside, -footer, -header, -nav, -section { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * Add the correct display in IE 9-. - * 1. Add the correct display in IE. - */ - -figcaption, -figure, -main { - /* 1 */ - display: block; -} - -/** - * Add the correct margin in IE 8. - */ - -figure { - margin: 1em 40px; -} - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * 1. Remove the gray background on active links in IE 10. - * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. - */ - -a { - background-color: transparent; /* 1 */ - -webkit-text-decoration-skip: objects; /* 2 */ -} - -/** - * 1. Remove the bottom border in Chrome 57- and Firefox 39-. - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Prevent the duplicate application of `bolder` by the next rule in Safari 6. - */ - -b, -strong { - font-weight: inherit; -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font style in Android 4.3-. - */ - -dfn { - font-style: italic; -} - -/** - * Add the correct background and color in IE 9-. - */ - -mark { - background-color: #ff0; - color: #000; -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Add the correct display in IE 9-. - */ - -audio, -video { - display: inline-block; -} - -/** - * Add the correct display in iOS 4-7. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Remove the border on images inside links in IE 10-. - */ - -img { - border-style: none; -} - -/** - * Hide the overflow in IE. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers (opinionated). - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: sans-serif; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` - * controls in Android 4. - * 2. Correct the inability to style clickable types in iOS and Safari. - */ - -button, -html [type="button"], /* 1 */ -[type="reset"], -[type="submit"] { - -webkit-appearance: button; /* 2 */ -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * 1. Add the correct display in IE 9-. - * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Remove the default vertical scrollbar in IE. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10-. - * 2. Remove the padding in IE 10-. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-cancel-button, -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in IE 9-. - * 1. Add the correct display in Edge, IE, and Firefox. - */ - -details, /* 1 */ -menu { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Scripting - ========================================================================== */ - -/** - * Add the correct display in IE 9-. - */ - -canvas { - display: inline-block; -} - -/** - * Add the correct display in IE. - */ - -template { - display: none; -} - -/* Hidden - ========================================================================== */ - -/** - * Add the correct display in IE 10-. - */ - -[hidden] { - display: none; -} diff --git a/src/_images/nbs-bubbles-250px.png b/src/_images/nbs-bubbles-250px.png deleted file mode 100644 index e547bcd..0000000 Binary files a/src/_images/nbs-bubbles-250px.png and /dev/null differ diff --git a/src/_images/nbs-flyer-qrcode.svg b/src/_images/nbs-flyer-qrcode.svg deleted file mode 100644 index 2456b76..0000000 --- a/src/_images/nbs-flyer-qrcode.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/src/_images/nbs-lifesaver-empty-faded-250px.png b/src/_images/nbs-lifesaver-empty-faded-250px.png deleted file mode 100644 index 587d9c1..0000000 Binary files a/src/_images/nbs-lifesaver-empty-faded-250px.png and /dev/null differ diff --git a/src/_images/nbs-lifesaver-empty-faded-500px.png b/src/_images/nbs-lifesaver-empty-faded-500px.png deleted file mode 100644 index ba7884e..0000000 Binary files a/src/_images/nbs-lifesaver-empty-faded-500px.png and /dev/null differ diff --git a/src/_images/nbs-lifesaver-empty-faded-800px.png b/src/_images/nbs-lifesaver-empty-faded-800px.png deleted file mode 100644 index 3439c4c..0000000 Binary files a/src/_images/nbs-lifesaver-empty-faded-800px.png and /dev/null differ diff --git a/src/_images/nick-profile-outdoors.jpg b/src/_images/nick-profile-outdoors.jpg new file mode 100644 index 0000000..5e2f687 Binary files /dev/null and b/src/_images/nick-profile-outdoors.jpg differ diff --git a/src/index.html b/src/index.html index 170bbc9..6afd422 100644 --- a/src/index.html +++ b/src/index.html @@ -1,5 +1,5 @@ - + - - Support, App & Web Design and Training | Network Based Solutions, LLC - + Support, App & Web Design and Training | Network Based Solutions, LLC - - @@ -52,7 +48,6 @@ } - - - + +
+
+

+ Network + Based + Solutions +

+

+ Your No-BS Computer Dude +

+

+ Technology should be a tool that empowers you, not a source of frustration. + I provide friendly, patient, and expert help to make your digital life run smoothly. +

+ Let's Talk +
+
+
-
-
Don't speak geek?
-

Neither do we ;-)

-
- -
-
Technology is tough.
-
-

- Let - Network - Based - Solutions - be your lifesaver. -

- -

- Give us a call or text: - 503-606-6508 -

+
+
+

How I Can Help You

+
+
+

Software Support

+

+ Whether it's a quick fix or a complex issue, I'm here to help you get your software working perfectly. +

+
+
+

App & Web Design

+

+ Together, we can create a beautiful and functional digital presence that truly reflects who you are. +

+
+
+

Learning & Training

+

I offer patient, one-on-one guidance to help you feel confident and capable with your technology.

+
+
-
- -
-
Feeling under water?
-

- NBS can - help you back to shore. -

-
- -
-
- Here's how #NBShelps: -
- -
-

Support

-

- NBS has an ocean of solutions to put out your toughest technological - fires. Hardware, software, and even phone issues, we've got your back. -

-
- -
-

App & Web Design

-

- Allow us to create something beautiful and fun for you. - NBS promises to keep you afloat. -

-
- -
-

Training

-

- Software can be scary. NBS will swim with you. We provide hands-on - training, step by step guides and tutorials. -

-
- -
 
-
- + + +
+
+

All Your Devices

+
+
+

Mobile Support

+
    +
  • Android
  • +
  • iOS
  • +
+
+
+

Computer Support

+
    +
  • macOS
  • +
  • Windows
  • +
  • ChromeOS
  • +
  • Linux
  • +
+
+
+
+
+ +
+
+

Practical Solutions

+
+
+

System Refresh

+

I'll tidy up your devices to ensure they're running as fast and efficiently as possible.

+
+
+

Data Safety

+

Let's make sure your precious photos and important files are backed up and secure.

+
+
+

Peace of Mind

+

I provide thorough security checks and malware removal to keep your information safe.

+
+
+
+
+ +
+
+

Pricing & Community

+
+
+ $100/h +

Most jobs take 1-2 hours.

+
+
+

Share the Love

+

+ My business grows through happy clients like you. To show my appreciation, I'll give you a + $20 credit for every friend or colleague you send my way! +

+
+
+
+
+ +
+
+

Nice to Meet You

+
+ Nick, Network Based Solutions +

+ I'm Nick, and my passion for technology started in the early 90s, building and optimizing gaming PCs. With + over 25 years of professional software development experience, I still love digging into complex problems + and won't give up until they're solved. Whether I'm teaching you one-on-one or streamlining your home + setup, I combine a lifetime of tinkering with a genuine drive to help you feel confident and stress-free + in our digital world. +

+
+
+
+ +
+
+

Get In Touch

+ +
+
+ + diff --git a/tools/dist.ts b/tools/dist.ts index fc087ff..46781db 100644 --- a/tools/dist.ts +++ b/tools/dist.ts @@ -32,7 +32,7 @@ async function main() { console.log(`Injecting version ${version} into index.html.`); const indexPath = resolve(distDir, "index.html"); let indexHtml = await Deno.readTextFile(indexPath); - indexHtml = indexHtml.replace("{version}", version); + indexHtml = indexHtml.replace(/{version}/g, version); await Deno.writeTextFile(indexPath, indexHtml); console.log(`Build complete. Version: ${version}`);