diff --git a/css/styles.css b/css/styles.css
index dbf415d..e97f3ba 100644
--- a/css/styles.css
+++ b/css/styles.css
@@ -74,14 +74,14 @@ code {
padding: 0 24px;
}
-section { padding: 64px 0; }
+section { padding: 46px 0; }
.section-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 16px;
- margin-bottom: 32px;
+ margin-bottom: 24px;
padding-bottom: 12px;
border-bottom: 2px solid var(--steel);
position: relative;
@@ -188,17 +188,17 @@ section { padding: 64px 0; }
}
/* ---------- Hero ---------- */
-.hero { padding: 44px 0 56px; }
+.hero { padding: 34px 0 42px; }
.hero-grid {
background: var(--panel);
border: 1px solid var(--rule);
border-top: 3px solid var(--steel);
border-radius: 4px;
box-shadow: 0 2px 6px rgba(16, 38, 61, 0.06);
- padding: 40px;
+ padding: 36px;
display: grid;
- grid-template-columns: 1fr;
- gap: 24px;
+ grid-template-columns: minmax(0, 1.12fr) minmax(340px, .88fr);
+ gap: 34px;
align-items: center;
}
.hero h1 { font-size: 34px; margin-bottom: 18px; line-height: 1.2; }
@@ -240,6 +240,29 @@ section { padding: 64px 0; }
font-weight: 600;
}
+.hero-proof {
+ margin: 0;
+ background: #10283d;
+ border: 1px solid #29455f;
+ border-radius: 4px;
+ padding: 14px;
+ box-shadow: 0 6px 18px rgba(16, 38, 61, .12);
+}
+
+.hero-proof img {
+ width: 100%;
+ aspect-ratio: 4 / 3;
+ object-fit: contain;
+ background: #10283d;
+}
+
+.hero-proof figcaption {
+ color: #c4d3df;
+ font-size: 12px;
+ line-height: 1.45;
+ margin-top: 10px;
+}
+
.btn {
display: inline-flex;
align-items: center;
@@ -315,8 +338,8 @@ section { padding: 64px 0; }
/* ---------- Projects ---------- */
.projects-grid {
display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 20px;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 24px;
}
.project-card {
background: var(--panel);
@@ -334,13 +357,13 @@ section { padding: 64px 0; }
}
.project-card .thumb {
background: #e9edf1;
- aspect-ratio: 16 / 10;
+ aspect-ratio: 16 / 9;
border-bottom: 1px solid var(--rule);
overflow: hidden;
}
.project-card .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.project-card .thumb .image-placeholder { font-size: 12px; }
-.project-card .body { padding: 18px 18px 20px; display: flex; flex-direction: column; flex: 1; }
+.project-card .body { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.project-card h3 { font-size: 18px; margin-bottom: 10px; color: var(--navy-2); }
.project-card:hover h3 { color: var(--steel-dark); }
.project-card p {
@@ -437,6 +460,10 @@ section { padding: 64px 0; }
display: block;
}
+.credential-badge-google img {
+ transform: scale(1.08);
+}
+
.credential-copy h3 {
font-size: 18px;
margin-bottom: 6px;
@@ -605,6 +632,18 @@ section { padding: 64px 0; }
}
.panel li { padding: 2px 0; }
+.panel-costco {
+ grid-column: 1 / -1;
+}
+
+.prior-experience {
+ margin: 18px 0 0;
+ padding-top: 14px;
+ border-top: 1px solid var(--rule-soft);
+ color: var(--muted-2);
+ font-size: 13.5px;
+}
+
/* ---------- Contact banner ---------- */
.contact-cta {
background: var(--navy);
@@ -618,7 +657,9 @@ section { padding: 64px 0; }
gap: 20px;
}
.contact-cta h2 { color: #fff; margin: 0 0 6px; font-size: 22px; }
-.contact-cta p { margin: 0; color: #a9b8c7; font-size: 14.5px; }
+.contact-cta p { margin: 0; color: #c7d3df; font-size: 14.5px; }
+.contact-cta p a { color: #f4f8fb; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
+.contact-cta p a:hover { color: #ffffff; }
/* ---------- Footer ---------- */
.site-footer {
@@ -649,7 +690,8 @@ section { padding: 64px 0; }
/* ---------- Responsive ---------- */
@media (max-width: 980px) {
- .hero-grid { grid-template-columns: 1fr; padding: 32px; }
+ .hero-grid { grid-template-columns: 1fr; padding: 30px; }
+ .hero-proof { max-width: 680px; }
.projects-grid { grid-template-columns: repeat(2, 1fr); }
.skills-grid { grid-template-columns: repeat(2, 1fr); }
.about-grid { grid-template-columns: 1fr; }
@@ -660,7 +702,7 @@ section { padding: 64px 0; }
@media (max-width: 640px) {
body { font-size: 15.5px; }
- section { padding: 44px 0; }
+ section { padding: 36px 0; }
.hero { padding: 28px 0 36px; }
.hero-grid { padding: 22px; }
.hero h1 { font-size: 27px; }
@@ -866,42 +908,6 @@ section { padding: 64px 0; }
.skills-grid-focused .skill-card h3 { font-size:17px; font-family:Georgia,"Times New Roman",serif; margin:0; }
.skills-grid-focused .skill-card p { color:var(--muted-2); font-size:14px; margin:0; flex:1; }
.skills-grid-focused .view-link, .case-card .view-link { font-size:13.5px; font-weight:600; }
-.proof-strip {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 14px;
- margin-bottom: 22px;
-}
-
-.proof-callout {
- background: #eef2f6;
- border: 1px solid var(--rule);
- border-left: 3px solid var(--steel);
- border-radius: 4px;
-}
-
-.proof-callout summary {
- cursor: pointer;
- padding: 14px 16px;
- font-size: 14px;
- font-weight: 700;
- color: var(--navy-2);
-}
-
-.proof-body {
- padding: 0 16px 14px;
- border-top: 1px solid var(--rule-soft);
-}
-
-.proof-body p {
- margin: 10px 0 0;
- color: var(--muted-2);
- font-size: 13.5px;
- line-height: 1.55;
-}
-
-.proof-body strong { color: var(--navy-2); }
-
.screenshot-frame {
background: #101820;
padding: 18px 8px 8px;
@@ -925,15 +931,42 @@ section { padding: 64px 0; }
border: 1px solid rgba(255,255,255,.10);
}
+#troubleshooting {
+ background: #e8edf2;
+ border-top: 1px solid #d8e0e8;
+ border-bottom: 1px solid #d8e0e8;
+}
+
+.case-grid {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0,1fr));
+ gap: 22px;
+}
+
+.case-card {
+ background: #10263d;
+ border: 1px solid #29455f;
+ border-top: 3px solid #5ca3d2;
+ padding: 26px;
+ border-radius: 4px;
+ box-shadow: 0 6px 18px rgba(16, 38, 61, .10);
+}
+
.case-meta {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
- margin-bottom: 8px;
+ margin-bottom: 10px;
}
-.case-meta .case-label {
+.case-label {
+ display: block;
+ font-size: 12px;
+ text-transform: uppercase;
+ font-weight: 700;
+ color: #8fc4e6;
+ letter-spacing: .4px;
margin-bottom: 0;
}
@@ -949,19 +982,58 @@ section { padding: 64px 0; }
}
.status-pill.verified {
- background: #e8f3ec;
- border: 1px solid #a7c9b2;
- color: #275d3a;
+ background: #163c2a;
+ border: 1px solid #4f936a;
+ color: #c9f1d7;
+}
+
+.case-card h3 {
+ font-size: 20px;
+ color: #ffffff;
+}
+
+.case-card p {
+ font-size: 14px;
+ color: #c9d5df;
+}
+
+.case-card p strong {
+ color: #ffffff;
+}
+
+.case-card code {
+ background: #0a1a29;
+ border-color: #35536d;
+ color: #d8edf9;
+}
+
+.case-terminal {
+ margin: 18px 0;
+ padding: 14px 16px;
+ overflow-x: auto;
+ background: #081521;
+ border: 1px solid #35536d;
+ border-radius: 3px;
+ color: #bde3c7;
+ font: 13px/1.55 "Consolas", "Menlo", monospace;
+ white-space: pre-wrap;
+}
+
+.case-terminal span {
+ color: #8fc4e6;
+}
+
+.case-card .view-link {
+ color: #9ed4f3;
+}
+
+.case-card .view-link:hover {
+ color: #ffffff;
}
-.case-grid { display:grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap:22px; }
-.case-card { background:var(--panel); border:1px solid var(--rule); border-top:3px solid var(--steel); padding:26px; border-radius:4px; }
-.case-label { display:block; font-size:12px; text-transform:uppercase; font-weight:700; color:var(--steel); letter-spacing:.4px; margin-bottom:8px; }
-.case-card h3 { font-size:20px; }
-.case-card p { font-size:14px; color:var(--muted-2); }
-.case-card p strong { color:var(--navy-2); }
@media (max-width: 700px) {
- .skills-grid-focused, .case-grid, .proof-strip { grid-template-columns:1fr; }
+ .skills-grid-focused, .case-grid { grid-template-columns: 1fr; }
+ .case-meta { align-items: flex-start; flex-direction: column; }
}
/* ---------- Homelab dark project treatment ---------- */
diff --git a/index.html b/index.html
index bdd8966..c8c3403 100644
--- a/index.html
+++ b/index.html
@@ -57,12 +57,6 @@
infrastructure, and build AWS applications. My project write-ups document
troubleshooting steps, fixes, and verification—not just installations.
-
- Currently completing a B.S. in Software Engineering at Western Governors
- University while building practical infrastructure and support experience
- through a dedicated homelab, AWS projects, and ongoing study of systems
- administration and cloud operations.
-
+
+
+
+ Windows Server lab topology — real environment, documented and tested.
+
@@ -98,12 +98,8 @@
ByteGeist Windows Server Lab
- Windows Server 2022 Active Directory lab in VMware: domain
- controller with AD DS and DNS, member file server with
- role-based SMB share access, a Windows 11 domain client, and
- an OPNsense firewall/router used for segmentation practice.
- The current client and servers remain on VMnet8 while the
- VMnet2 segmented client layout is the next networking exercise.
+ Windows Server 2022 Active Directory lab with AD DS, DNS, SMB permissions,
+ a Windows 11 domain client, and OPNsense segmentation practice.
View Lab Details
@@ -117,10 +113,8 @@
ByteGeist Support Lab
- An interactive IT troubleshooting application on AWS (Amplify,
- Lambda, API Gateway, DynamoDB) with React. Realistic support
- incidents, command-line workflows, diagnosis, resolution, and
- scoring.
+ Interactive AWS troubleshooting lab with realistic incidents,
+ command-line workflows, diagnosis, resolution, and scoring.
View Live Site
@@ -135,11 +129,8 @@
ByteGeist Infrastructure Lab
- A self-hosted Hetzner Ubuntu environment running Docker-based
- services with Prometheus, node_exporter, cAdvisor, Grafana, Loki,
- Authentik, Gitea, Woodpecker CI, TLS routing, and a sanitized live
- status API. Built to practice deployment, monitoring, identity,
- security, recovery, and day-to-day infrastructure operations.
+ Self-hosted Ubuntu infrastructure with Docker, Grafana, Prometheus,
+ Loki, Authentik, Gitea, CI/CD, TLS routing, and live service telemetry.
View Live Control Plane
@@ -153,10 +144,8 @@
AWS Cloud Study Tracker
- A multi-user serverless AWS study tracker using Cognito, API Gateway,
- Lambda, DynamoDB, and Amplify. Public demo topics remain readable
- without an account, while signed-in users get private CRUD access
- protected by JWT authorization and per-record ownership checks.
+ Multi-user serverless AWS tracker using Cognito, API Gateway, Lambda,
+ DynamoDB, Amplify, JWT authorization, and per-record ownership checks.
View Live Site
@@ -173,23 +162,6 @@
Troubleshooting Case Studies
Observed issues, diagnostic work, and verified outcomes
-
-
- Verified Fix: Domain trust failure
-
-
Test-ComputerSecureChannel failed while WIN11-01 was on the wrong VMware network.
-
Fix: Returned the client to VMnet8, restored DC01 as DNS, repaired the secure channel, then verified with Test-ComputerSecureChannel and nltest.
-
-
-
- Verified Fix: PDC time source
-
-
w32tm /query /source reported Local CMOS Clock on the PDC Emulator.
-
Fix: Configured external NTP peers, resynchronized Windows Time, then verified time.windows.com as the active source.
-
-
-
-
@@ -271,7 +247,7 @@
-
-
+
Costco Wholesale — Baker
June 2015 – Present
@@ -372,16 +348,7 @@
Day-to-day troubleshooting of equipment and workflow problems
Training coworkers, customer service, and clear communication under time pressure
-
-
-
-
Earlier Grocery & Bakery Experience
-
Prior to Costco
-
- Additional long-term experience in bakery and grocery environments,
- contributing to roughly three decades of customer service, production,
- teamwork, training, and operational problem-solving.
-
+
Earlier experience: Bakery and grocery roles before Costco, building a long-term background in customer service, production, teamwork, and operational problem-solving.