diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 85242b70a..6bde0fe0a 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -7,7 +7,7 @@ community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
-and orientation.
+and orientation (Additional information can be found in the [Title II and VII Policy](https://atproducts.xyz/titleiiandvii)).
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
diff --git a/LICENSE b/LICENSE
index 1b932b207..cc09bca25 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2023 AT Products LLC
+Copyright (c) 2025 AT Products LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 1cde97c22..c588dff51 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
-
-
-
+
+
+
@@ -32,4 +32,4 @@ AT Products LLC, otherwise known as AT Products, is an informative technology co
The "AT" in AT Products does stand for Alex Toucan.
atproducts.xyz is under a MIT license. View more information.
-Last Recorded Version: 2.20.2
+Last Recorded Version: 2.21
diff --git a/package-lock.json b/package-lock.json
index 47f918ab9..8c720650c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "atproducts.xyz",
- "version": "2.20.2",
+ "version": "2.21",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "atproducts.xyz",
- "version": "2.20.2",
+ "version": "2.21",
"dependencies": {
"@astrojs/react": "^4.1.5",
"astro": "^5.1.7",
diff --git a/package.json b/package.json
index 45068da19..9c0276336 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "atproducts.xyz",
- "version": "2.20.2",
+ "version": "2.21",
"config": {
- "version_short": "2.20"
+ "version_short": "2.21"
},
"scripts": {
"dev": "astro dev",
diff --git a/public/media/images/CSS.webp b/public/media/images/CSS.webp
new file mode 100644
index 000000000..1a2b6b338
Binary files /dev/null and b/public/media/images/CSS.webp differ
diff --git a/public/media/images/CleanArchitecture.webp b/public/media/images/CleanArchitecture.webp
new file mode 100644
index 000000000..568bb0200
Binary files /dev/null and b/public/media/images/CleanArchitecture.webp differ
diff --git a/public/media/images/HTML.webp b/public/media/images/HTML.webp
new file mode 100644
index 000000000..53cb840b6
Binary files /dev/null and b/public/media/images/HTML.webp differ
diff --git a/public/media/images/IDA.webp b/public/media/images/IDA.webp
deleted file mode 100644
index 4ba612c7b..000000000
Binary files a/public/media/images/IDA.webp and /dev/null differ
diff --git a/public/media/images/RSA.webp b/public/media/images/RSA.webp
new file mode 100644
index 000000000..624472832
Binary files /dev/null and b/public/media/images/RSA.webp differ
diff --git a/public/media/images/hero.webp b/public/media/images/hero.webp
index 2e4a0ff57..ecda9bb40 100644
Binary files a/public/media/images/hero.webp and b/public/media/images/hero.webp differ
diff --git a/public/media/pdf/CCTV Interception.pdf b/public/media/pdf/CCTV Interception.pdf
index 9eeb3330d..abbe21472 100644
Binary files a/public/media/pdf/CCTV Interception.pdf and b/public/media/pdf/CCTV Interception.pdf differ
diff --git a/public/media/pdf/How to Center a _div_.pdf b/public/media/pdf/How to Center a _div_.pdf
index b3cf04367..e914b70da 100644
Binary files a/public/media/pdf/How to Center a _div_.pdf and b/public/media/pdf/How to Center a _div_.pdf differ
diff --git a/public/media/pdf/Sci-Fi Stories Reflect Reality.pdf b/public/media/pdf/Sci-Fi Stories Reflect Reality.pdf
index 7b3214dbf..1862e5229 100644
Binary files a/public/media/pdf/Sci-Fi Stories Reflect Reality.pdf and b/public/media/pdf/Sci-Fi Stories Reflect Reality.pdf differ
diff --git a/public/media/pdf/Technology Influences Young Audiences.pdf b/public/media/pdf/Technology Influences Young Audiences.pdf
index 9e1cc313b..563f5161f 100644
Binary files a/public/media/pdf/Technology Influences Young Audiences.pdf and b/public/media/pdf/Technology Influences Young Audiences.pdf differ
diff --git a/public/media/pdf/The Internet Now is Dull and Gray.pdf b/public/media/pdf/The Internet Now is Dull and Gray.pdf
index c9bb907f1..7d062ab87 100644
Binary files a/public/media/pdf/The Internet Now is Dull and Gray.pdf and b/public/media/pdf/The Internet Now is Dull and Gray.pdf differ
diff --git a/public/static/other.css b/public/static/other.css
index c2e2ab031..2be1c29fb 100644
--- a/public/static/other.css
+++ b/public/static/other.css
@@ -3028,6 +3028,594 @@ a:not(p a), p, code:not(p code), b:not(p b), i:not(p i) { /* Custom */
text-align: center !important;
}
}
+@media (max-width: 991.98px) {
+ .w-mxl-25 {
+ width: 25%;
+ }
+
+ .w-mxl-33 {
+ width: 33%;
+ }
+ .w-mxl-50 {
+ width: 50% !important;
+ }
+ .w-mxl-75 {
+ width: 75% !important;
+ }
+ .w-mxl-100 {
+ width: 100% !important;
+ }
+ .w-mxl-auto {
+ width: auto !important;
+ }
+ .float-mxl-start {
+ float: left !important;
+ }
+ .float-mxl-end {
+ float: right !important;
+ }
+ .float-mxl-none {
+ float: none !important;
+ }
+ .object-fit-mxl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-mxl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-mxl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-mxl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-mxl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-mxl-inline {
+ display: inline !important;
+ }
+ .d-mxl-inline-block {
+ display: inline-block !important;
+ }
+ .d-mxl-block {
+ display: block !important;
+ }
+ .d-mxl-grid {
+ display: grid !important;
+ }
+ .d-mxl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-mxl-table {
+ display: table !important;
+ }
+ .d-mxl-table-row {
+ display: table-row !important;
+ }
+ .d-mxl-table-cell {
+ display: table-cell !important;
+ }
+ .d-mxl-flex {
+ display: flex !important;
+ }
+ .d-mxl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-mxl-none {
+ display: none !important;
+ }
+ .flex-mxl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-mxl-row {
+ flex-direction: row !important;
+ }
+ .flex-mxl-column {
+ flex-direction: column !important;
+ }
+ .flex-mxl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-mxl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-mxl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-mxl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-mxl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-mxl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-mxl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-mxl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-mxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-mxl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-mxl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-mxl-center {
+ justify-content: center !important;
+ }
+ .justify-content-mxl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-mxl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-mxl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-mxl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-mxl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-mxl-center {
+ align-items: center !important;
+ }
+ .align-items-mxl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-mxl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-mxl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-mxl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-mxl-center {
+ align-content: center !important;
+ }
+ .align-content-mxl-between {
+ align-content: space-between !important;
+ }
+ .align-content-mxl-around {
+ align-content: space-around !important;
+ }
+ .align-content-mxl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-mxl-auto {
+ align-self: auto !important;
+ }
+ .align-self-mxl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-mxl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-mxl-center {
+ align-self: center !important;
+ }
+ .align-self-mxl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-mxl-stretch {
+ align-self: stretch !important;
+ }
+ .order-mxl-first {
+ order: -1 !important;
+ }
+ .order-mxl-0 {
+ order: 0 !important;
+ }
+ .order-mxl-1 {
+ order: 1 !important;
+ }
+ .order-mxl-2 {
+ order: 2 !important;
+ }
+ .order-mxl-3 {
+ order: 3 !important;
+ }
+ .order-mxl-4 {
+ order: 4 !important;
+ }
+ .order-mxl-5 {
+ order: 5 !important;
+ }
+ .order-mxl-last {
+ order: 6 !important;
+ }
+ .m-mxl-0 {
+ margin: 0 !important;
+ }
+ .m-mxl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-mxl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-mxl-3 {
+ margin: 1rem !important;
+ }
+ .m-mxl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-mxl-5 {
+ margin: 3rem !important;
+ }
+ .m-mxl-auto {
+ margin: auto !important;
+ }
+ .mx-mxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-mxl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-mxl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-mxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-mxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-mxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-mxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-mxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-mxl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-mxl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-mxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-mxl-433 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-mxl-466 {
+ margin-top: 2rem !important;
+ margin-bottom: 2rem !important;
+ }
+ .my-mxl-4 {
+ margin-top: 2.5rem !important;
+ margin-bottom: 2.5rem !important;
+ }
+ .my-mxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-mxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-mxl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-mxl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-mxl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-mxl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-mxl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-mxl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-mxl-auto {
+ margin-top: auto !important;
+ }
+ .me-mxl-0 {
+ margin-right: 0 !important;
+ }
+ .me-mxl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-mxl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-mxl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-mxl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-mxl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-mxl-auto {
+ margin-right: auto !important;
+ }
+ .mb-mxl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-mxl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-mxl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-mxl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-mxl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-mxl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-mxl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-mxl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-mxl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-mxl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-mxl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-mxl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-mxl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-mxl-auto {
+ margin-left: auto !important;
+ }
+ .p-mxl-0 {
+ padding: 0 !important;
+ }
+ .p-mxl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-mxl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-mxl-3 {
+ padding: 1rem !important;
+ }
+ .p-mxl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-mxl-5 {
+ padding: 3rem !important;
+ }
+ .px-mxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-mxl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-mxl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-mxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-mxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-mxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-mxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-mxl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-mxl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-mxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-mxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-mxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-mxl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-mxl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-mxl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-mxl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-mxl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-mxl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-mxl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-mxl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-mxl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-mxl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-mxl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-mxl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-mxl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-mxl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-mxl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-mxl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-mxl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-mxl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-mxl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-mxl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-mxl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-mxl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-mxl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-mxl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-mxl-0 {
+ gap: 0 !important;
+ }
+ .gap-mxl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-mxl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-mxl-3 {
+ gap: 1rem !important;
+ }
+ .gap-mxl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-mxl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-mxl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-mxl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-mxl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-mxl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-mxl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-mxl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-mxl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-mxl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-mxl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-mxl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-mxl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-mxl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-mxl-start {
+ text-align: left !important;
+ }
+ .text-mxl-end {
+ text-align: right !important;
+ }
+ .text-mxl-center {
+ text-align: center !important;
+ }
+}
@media (min-width: 781.98px) {
.w-custom-25 {
width: 25%;
@@ -4214,7 +4802,7 @@ a:not(p a), p, code:not(p code), b:not(p b), i:not(p i) { /* Custom */
text-align: center !important;
}
}
-@media (max-width: 1200px) and (min-width: 768px) {
+@media (max-width: 1200px) and (min-width: 991.98px) {
.float-xesm-start {
float: left !important;
}
@@ -5906,15 +6494,24 @@ a:not(p a), p, code:not(p code), b:not(p b), i:not(p i) { /* Custom */
}
@media (min-width:767.98px) {
- .text-centertostart {
+ .text-centertostart-md {
+ text-align: left !important;
+ }
+ .text-centertoend-md {
+ text-align: right !important;
+ }
+}
+
+@media (min-width:991.98px) {
+ .text-centertostart-lg {
text-align: left !important;
}
- .text-centertoend {
+ .text-centertoend-lg {
text-align: right !important;
}
}
-.text-centertostart, .text-centertoend {
+.text-centertostart-md, .text-centertoend-md, .text-centertostart-lg, .text-centertoend-lg {
text-align: center;
}
@@ -5947,7 +6544,7 @@ a:not(p a), p, code:not(p code), b:not(p b), i:not(p i) { /* Custom */
}
@media (max-width:767.98px) {
- .basics-scroll {
+ .basics-scroll, .dmsize {
margin-top: 0.5rem;
}
}
@@ -5971,13 +6568,22 @@ a:not(p a), p, code:not(p code), b:not(p b), i:not(p i) { /* Custom */
.disbr {
display: none;
}
+}
+
+@media (max-width:991.98px) {
.imgdiv {
- width: 30%;
+ width: 25%;
margin-left: auto;
margin-right: auto;
}
}
+@media (max-width:767.98px) {
+ .imgdiv {
+ width: 30%;
+ }
+}
+
@media (max-width:1000px) {
.pdont {
display:none;
diff --git a/public/static/version.js b/public/static/version.js
index 36db39116..e9ba6cf50 100644
--- a/public/static/version.js
+++ b/public/static/version.js
@@ -1 +1 @@
-document.write("2.20.2");
+document.write("2.21");
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
index e396e9ca6..09eecfbae 100644
--- a/src/components/Footer.astro
+++ b/src/components/Footer.astro
@@ -3,17 +3,17 @@ const { author, hr, marginTop } = Astro.props;
---