@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#0c1517;--surface:#142124;--line:#2c4142;--text:#edf5f2;--muted:#a9bdb7;--highlight:#8bddc0;--accent:#8bddc0}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--text);font-family:'DM Sans',Arial,sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline:3px solid var(--highlight);outline-offset:6px}::selection{background:#8bddc0;color:#102b22}.wrap{max-width:1280px;width:calc(100% - 112px);margin:auto}.site-header{display:flex;justify-content:space-between;align-items:center;padding:28px 0;border-bottom:1px solid var(--line)}.brand{font-family:'Manrope',sans-serif;font-weight:800;font-size:34px;letter-spacing:-3px;line-height:1}.brand span{font-size:12px;letter-spacing:0;vertical-align:top;margin-left:6px}nav{display:flex;gap:34px;align-items:center;font-size:14px}nav a:hover{color:var(--highlight)}.nav-contact{border-left:1px solid var(--line);padding-left:32px}.nav-contact span{margin-left:16px}.hero{padding-top:44px}.hero-top{display:flex;justify-content:space-between;gap:25px}.eyebrow,.edition,.small-label,.project-label,.panel-head,.panel-foot,.skill-number{font-family:'DM Sans',sans-serif;font-size:12px;letter-spacing:1.7px;font-weight:500}.eyebrow{color:var(--highlight);margin:0 0 24px}.edition{color:var(--muted);margin:0}.hero h1{font-family:'Manrope',sans-serif;font-size:clamp(56px,7.2vw,104px);line-height:1.06;font-weight:500;letter-spacing:-5px;margin:36px 0 36px}.hero h1 span{color:var(--highlight)}.hero-bottom{display:flex;align-items:center;justify-content:space-between;gap:40px}.hero-bottom p{max-width:565px;font-size:19px;color:var(--muted);line-height:1.65}.button{display:inline-flex;gap:48px;background:var(--accent);border:1px solid #8bddc0;padding:16px 22px;white-space:nowrap;font-weight:500}.button:hover{background:#b0ecd6}.credentials{display:flex;gap:35px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:25px 0;margin-top:48px;font-size:14px;color:#c4d6d0}.credentials span+span{border-left:1px solid var(--line);padding-left:35px}.section{padding-top:105px;padding-bottom:105px}h2,h3{font-family:'Manrope',sans-serif;font-weight:500}h2{font-size:clamp(30px,3.4vw,46px);line-height:1.22;letter-spacing:-1.5px;margin:0}h3{font-size:24px;line-height:1.35;letter-spacing:-.6px;margin:0 0 18px}p{margin-top:0}.about{display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-copy p{color:var(--muted)}.about-copy .lead{font-size:23px;line-height:1.5;color:var(--text)}.fact{display:flex;align-items:center;gap:26px;border-top:1px solid var(--line);margin-top:32px;padding-top:26px}.fact strong{font-family:'Manrope';font-size:49px;font-weight:500;letter-spacing:-2px;white-space:nowrap}.fact strong span{color:var(--highlight)}.fact p{font-size:14px;margin:0}.expertise{background:var(--surface);border-top:1px solid #223638;border-bottom:1px solid #223638}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:48px}.section-heading>p{color:var(--muted);font-size:15px;margin:0}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.skill{border-top:1px solid #3c5550;padding-top:24px}.skill-number{color:var(--highlight);display:block;margin-bottom:28px}.skill p{color:var(--muted);font-size:16px}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.tags span{font-size:12px;line-height:1.4;color:#c5d8d1;padding:6px 9px;border:1px solid #344d48;border-radius:3px}.small-label{color:var(--muted);font-size:12px;max-width:210px}.project{border:1px solid #35564d;display:grid;grid-template-columns:1.2fr 1fr;background:#122123}.project-main{padding:42px}.project-label{font-size:12px;color:var(--highlight);display:block;margin-bottom:24px}.project h3{font-size:32px;letter-spacing:-1px}.project p{color:var(--muted)}details{margin-top:35px;border-top:1px solid #344d48}summary{cursor:pointer;list-style:none;padding:19px 0 0;display:flex;justify-content:space-between;font-size:14px}summary::-webkit-details-marker{display:none}summary span{font-size:22px;line-height:1}details[open] summary span{transform:rotate(45deg)}.details-body{padding-top:24px;font-size:15px}.details-body strong{color:var(--text)}.detection-panel{margin:28px;background:#0c191b;border:1px solid #2d4641;padding:24px 28px;align-self:center}.panel-head{display:flex;justify-content:space-between;color:#a1c1b5;border-bottom:1px solid #2f4942;padding-bottom:18px;font-size:12px}.detection-panel ol{list-style:none;margin:20px 0;padding:0}.detection-panel li{border-left:2px solid #4a8b74;margin-left:6px;padding:0 0 22px 22px}.detection-panel li:last-child{padding-bottom:0;border-color:var(--highlight)}.detection-panel li>span{display:block;font-size:12px;letter-spacing:1.4px;color:var(--highlight);margin-bottom:5px}.detection-panel strong{font-size:18px;font-weight:500}.detection-panel li p{font-size:14px;margin:5px 0 0}.panel-foot{font-size:12px;letter-spacing:1px;margin:24px 0 0;padding-top:16px;border-top:1px solid #2f4942}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:42px;margin-top:44px}.work-grid article{border-top:1px solid var(--line);padding-top:28px}.work-grid p:not(.eyebrow){color:var(--muted);margin:0;max-width:510px}.work-grid .eyebrow{font-size:12px;margin-bottom:16px}.experience{border-top:1px solid var(--line);display:grid;grid-template-columns:.8fr 1.2fr;gap:75px}.timeline article{padding:0 0 30px;margin-bottom:30px;border-bottom:1px solid var(--line)}.timeline article:last-child{margin:0;padding:0;border:0}.role-heading{display:flex;justify-content:space-between;gap:15px;align-items:baseline}.role-heading h3{font-size:21px;margin-bottom:8px}.role-heading span{font-size:12px;color:var(--muted);white-space:nowrap}.timeline p{color:var(--muted);font-size:15px;margin:0}.timeline .role{color:#d9e8e0;margin-bottom:12px}.contact{background:#173c32;padding:80px 0}.contact .eyebrow{color:#d8f1e7}.contact h2{font-size:clamp(36px,4.6vw,64px);letter-spacing:-2px}.contact-row{display:flex;align-items:center;justify-content:space-between;gap:30px;border-top:1px solid #4a7767;margin-top:40px;padding-top:30px}.email{font-size:clamp(18px,2.3vw,30px);letter-spacing:-.6px}.email span{margin-left:20px}.linkedin{font-size:14px}.linkedin:hover,.email:hover{text-decoration:underline;text-underline-offset:6px}footer{display:flex;justify-content:space-between;gap:20px;padding-top:28px;padding-bottom:28px;font-size:12px;color:var(--muted)}footer>span:first-child{color:var(--text)}.skip{position:fixed;top:-100px;left:20px;background:white;color:black;padding:12px;z-index:10}.skip:focus{top:20px}@media(min-width:1500px){.hero h1{font-size:112px}}@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.edition{display:none}.hero h1{letter-spacing:-3px}.about,.experience{gap:40px}.skill-grid{gap:22px}.project-main{padding:28px}.detection-panel{margin:18px;padding:20px}.role-heading{display:block}.credentials{gap:20px}.credentials span+span{padding-left:20px}.fact{display:block}.section-heading>.small-label{display:none}}@media(max-width:700px){.wrap{width:calc(100% - 40px)}.site-header{padding:23px 0}.brand{font-size:30px}nav{gap:20px;font-size:14px}.nav-contact{display:none}.hero{padding-top:30px}.hero h1{font-size:clamp(44px,10.5vw,72px);letter-spacing:-2px;margin:24px 0}.hero-bottom{display:block}.hero-bottom p{font-size:17px}.button{margin-top:10px}.credentials{flex-wrap:wrap;gap:14px 20px;margin-top:32px;padding:22px 0}.credentials span{font-size:12px}.credentials span+span{padding:0;border:0}.section{padding-top:65px;padding-bottom:65px}.about,.experience,.project,.skill-grid,.work-grid{grid-template-columns:1fr}.about,.experience{gap:30px}.about-copy .lead{font-size:21px}.fact{display:flex;gap:20px}.fact strong{font-size:44px}.fact p{font-size:12px}.section-heading{display:block;margin-bottom:32px}.section-heading>p{margin-top:22px}.skill-grid{gap:34px}.skill-number{margin-bottom:18px}.skill p{max-width:480px}.project-main{padding:25px}.project h3{font-size:27px}.detection-panel{margin:0 18px 18px}.work-grid{gap:30px;margin-top:30px}.role-heading{display:flex;flex-wrap:wrap;gap:0 15px;margin-bottom:10px}.role-heading h3{margin:0}.contact{padding:58px 0}.contact-row{display:block}.linkedin{display:inline-block;margin-top:25px}.email{font-size:19px}.email span{margin-left:5px}footer{flex-wrap:wrap;font-size:12px}footer>span:nth-child(2){display:none}.eyebrow{font-size:12px;letter-spacing:1.4px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.crm-project{margin-bottom:32px}.project-launch{margin-top:30px;font-size:15px;gap:24px}.project .demo-note{font-size:13px;line-height:1.6;margin:16px 0 0;max-width:440px}.crm-overview{border-color:#355e50}
.iot-project{margin-top:32px;border-color:#3d6559}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 20px;margin:28px 0}.result-grid>div{display:flex;flex-direction:column-reverse;gap:6px}.result-grid dt{font-size:14px;color:var(--muted)}.result-grid dd{margin:0;font-family:Manrope,Arial,sans-serif;font-size:40px;line-height:1.25;letter-spacing:-1.5px;color:#9be3c7}.result-grid dd span{font-size:22px;margin-left:4px}.work-grid .project-result{border-left:2px solid var(--highlight);padding-left:16px;margin-top:24px}.project-result strong,.project-result span{display:block}.project-result strong{color:var(--text);font-weight:500}.project-result span{font-size:14px;margin-top:4px}.experience-intro{color:var(--muted);margin-top:24px;max-width:350px}.timeline .role-highlight{color:#9be3c7;margin-top:14px;font-size:14px}.software-projects details{color:var(--text)}@media(max-width:700px){.result-grid dd{font-size:34px}.iot-results .panel-foot{letter-spacing:.5px}.experience-intro{max-width:none}}

.profile-links{display:flex;gap:26px;margin-top:24px;font-size:15px}.profile-links a{color:#cce0d7}.profile-links a:hover{color:var(--highlight)}.profile-links span,.contact-profiles span{margin-left:8px}.contact-profiles{display:flex;gap:26px;font-size:15px}.contact-profiles a:hover{color:white;text-decoration:underline;text-underline-offset:5px}@media(max-width:700px){.contact-profiles{margin-top:24px}}

.hero-feature{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:center;gap:40px;margin:36px 0}.hero-feature h1{font-size:clamp(44px,5.6vw,80px);letter-spacing:-3px;margin:0;line-height:1.1}.hero-portrait{margin:0;align-self:center}.hero-portrait img{display:block;width:100%;height:auto;border-radius:12px;background:#fafafa;border:1px solid #344d48}.hero-portrait figcaption{font-size:15px;margin-top:14px;font-weight:500}.hero-portrait figcaption span{display:block;color:var(--muted);font-size:12px;font-weight:400;margin-top:2px}@media(max-width:1000px) and (min-width:701px){.hero-feature{grid-template-columns:minmax(0,1fr) 200px;gap:24px}.hero-feature h1{font-size:48px;letter-spacing:-2px}}@media(max-width:700px){.hero-feature{grid-template-columns:1fr;gap:28px;margin:24px 0}.hero-feature h1{font-size:clamp(42px,10vw,64px);letter-spacing:-2px}.hero-portrait{width:220px;max-width:100%}}
.page-nav{gap:28px;flex-wrap:wrap}.page-nav a{padding:8px 0;border-bottom:2px solid transparent}.page-nav a[aria-current=page]{color:var(--highlight);border-color:var(--highlight)}.page-title{font-family:Manrope,Arial,sans-serif;font-weight:500;font-size:clamp(36px,4.8vw,64px);line-height:1.14;letter-spacing:-2px;margin:0}.page-intro{max-width:610px;color:var(--muted);font-size:18px;margin:24px 0 0}.education-heading{margin-bottom:55px}.degree-card{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:40px;background:var(--surface);border:1px solid var(--line)}.degree-card p:not(.eyebrow){color:var(--muted)}.education-project-link{color:var(--highlight);font-size:15px;display:inline-block;margin-top:12px}.education-project-link:hover{text-decoration:underline}.certifications{margin-top:70px}.cert-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:32px}.cert-card{border-top:1px solid #3c5550;padding:30px 0}.cert-card>p:last-child{color:var(--muted);max-width:440px}.cert-mark{display:inline-flex;align-items:center;justify-content:center;border:1px solid #426c5b;background:#19352d;color:#9be3c7;border-radius:8px;height:58px;min-width:64px;padding:12px;font-weight:700;letter-spacing:1px;margin-bottom:26px}.cert-card .eyebrow{margin-bottom:10px}.projects-page{padding-top:80px}.experience .page-title{font-size:clamp(36px,4vw,54px)}@media(max-width:850px){.site-header{align-items:flex-start;gap:24px}.page-nav{gap:12px 20px;justify-content:flex-end;font-size:13px}.degree-card{grid-template-columns:1fr}}@media(max-width:600px){.site-header{display:block}.site-header .brand{display:inline-block;margin-bottom:22px}.page-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;font-size:14px}.page-nav a{width:fit-content}.cert-grid{grid-template-columns:1fr;gap:10px}.degree-card{padding:25px;gap:20px}.page-title{letter-spacing:-1.3px}.projects-page{padding-top:55px}.education-heading{margin-bottom:35px}}

.hobby-tags{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 32px}.hobby-tags span{font-size:14px;border:1px solid #344d48;padding:8px 12px;border-radius:4px;color:#cce0d7}.iot-gallery{border:1px solid #35564d;border-top:0;padding:32px;background:#122123}.gallery-heading{margin-bottom:26px}.gallery-heading h3{margin-bottom:10px}.gallery-heading>p:last-child{color:var(--muted);font-size:15px;max-width:640px}.iot-gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.iot-gallery figure{margin:0;min-width:0}.iot-gallery figure>a{display:block;background:#081211;border:1px solid #2c4841;border-radius:6px;overflow:hidden}.iot-gallery img{display:block;width:100%;height:280px;object-fit:contain}.iot-gallery a:hover{border-color:var(--highlight)}.iot-gallery figcaption{margin-top:14px;font-size:14px;line-height:1.6}.iot-gallery figcaption strong{display:block;font-weight:500;color:var(--text);margin-bottom:5px}.iot-gallery figcaption span{color:var(--muted);font-size:13px}@media(max-width:1000px){.iot-gallery-grid{grid-template-columns:1fr 1fr}.iot-gallery img{height:320px}}@media(max-width:600px){.iot-gallery{padding:22px}.iot-gallery-grid{grid-template-columns:1fr}.iot-gallery img{height:350px}}

.iot-gallery .iot-video{margin:0 0 32px;display:grid;grid-template-columns:minmax(0,420px) 1fr;gap:28px;align-items:center}.iot-video video{display:block;width:100%;max-height:560px;background:#081211;border:1px solid #2c4841;border-radius:6px}.iot-video figcaption a{display:inline-block;margin-top:12px;color:var(--highlight)}@media(max-width:600px){.iot-gallery .iot-video{grid-template-columns:1fr;gap:8px}}

.resume-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-top:22px}.button-secondary{background:transparent;border-color:#557669}.resume-actions>a:last-child,.case-text-link,.back-link{color:var(--highlight)}.case-page{padding-top:38px;padding-bottom:70px}.back-link{display:inline-block;margin-bottom:48px;font-size:14px}.case-hero{max-width:960px}.case-hero .page-title{margin-bottom:24px}.case-lead{font-size:21px;color:var(--muted);max-width:800px}.case-text-link{display:inline-block;margin-top:28px}.case-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:25px;padding:36px 0;margin:55px 0 0;border-block:1px solid var(--line)}.case-metrics>div{display:flex;flex-direction:column-reverse;gap:10px}.case-metrics dd{margin:0;font-family:Manrope,Arial,sans-serif;font-size:clamp(28px,3vw,42px);color:#9be3c7;letter-spacing:-1px}.case-metrics dd span{font-size:24px;margin-left:4px}.case-metrics dt{font-size:14px;color:var(--muted)}.case-section{padding:65px 0;border-bottom:1px solid var(--line)}.case-columns{display:grid;grid-template-columns:.8fr 1.2fr;gap:65px}.case-section p{color:var(--muted)}.case-section p:last-child{margin-bottom:0}.case-section strong{color:var(--text);font-weight:500}.case-section-intro{max-width:800px;margin:24px 0 32px}.case-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:0;list-style:none;margin:30px 0 40px}.case-flow li{padding:26px;border:1px solid #35564d;background:#122123}.case-flow span{display:block;color:var(--highlight);font-size:12px;letter-spacing:1.5px;margin-bottom:20px}.case-flow h3{font-size:21px}.case-decisions{padding-top:15px}.case-table-wrap{overflow-x:auto}.case-table{width:100%;border-collapse:collapse;text-align:left;font-size:15px}.case-table caption{text-align:left;color:var(--muted);font-size:13px;margin-bottom:16px}.case-table th,.case-table td{padding:20px 18px;vertical-align:top;border-bottom:1px solid var(--line)}.case-table thead th{background:#1c342d;color:#d7f0e5;font-weight:500}.case-table tbody th{font-weight:500;width:22%}.case-table td{color:var(--muted)}.case-source{font-size:13px;margin-top:20px;max-width:850px}.case-page .iot-gallery{border:1px solid #35564d;margin-top:65px}.case-footer-actions{display:flex;gap:30px;align-items:center;flex-wrap:wrap;margin-top:45px}@media(max-width:800px){.case-columns{grid-template-columns:1fr;gap:25px}.case-metrics{grid-template-columns:1fr 1fr}.case-flow{grid-template-columns:1fr}.case-lead{font-size:18px}.case-section{padding:44px 0}.case-table th,.case-table td{padding:14px 10px;overflow-wrap:anywhere}.case-table{font-size:13px}.case-page .iot-gallery{margin-top:44px}}@media(max-width:400px){.case-metrics{gap:20px 12px}.case-metrics dd{font-size:26px}}
.community-project-actions{display:flex;flex-wrap:wrap;gap:12px}
.category-nav{flex-wrap:wrap;gap:12px;margin:0 0 56px}.category-nav a{border:1px solid var(--line);padding:12px 18px;border-radius:5px}.category-nav span{color:var(--highlight);margin-left:10px}.project-category{margin-top:70px;scroll-margin-top:30px}.category-heading{border-top:1px solid var(--line);padding-top:28px;margin-bottom:32px}.category-heading p{color:var(--muted);margin:16px 0 0}.sophos-case{padding-top:36px;padding-bottom:60px}.sophos-case .case-lead{font-size:24px;color:var(--text)}.sophos-case p,.sophos-case li{color:var(--muted)}.sophos-case code{overflow-wrap:anywhere;font-size:.9em;color:#bce8d5}.sophos-case pre{overflow:auto;background:var(--surface);border:1px solid var(--line);padding:20px;line-height:1.7}.sophos-case pre code{overflow-wrap:normal}.case-table-wrap{overflow:auto;margin:24px 0}.field-map{width:100%;border-collapse:collapse;text-align:left}.field-map caption{text-align:left;color:var(--muted);font-size:13px;padding-bottom:12px}.field-map th,.field-map td{padding:12px;border:1px solid var(--line)}.case-disclosure{font-size:13px;border-left:2px solid var(--highlight);padding-left:18px}.detection-families{padding-left:20px}.sophos-case li{margin-bottom:10px}@media(max-width:700px){.category-nav{gap:8px}.category-nav a{padding:10px 12px}.sophos-case .page-title{overflow-wrap:anywhere}}
.project-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-preview{display:flex;flex-direction:column;padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.project-preview:hover{border-color:#639b87}.project-preview .eyebrow{font-size:11px;margin-bottom:18px}.project-preview h3{font-size:24px}.project-preview h3 a:hover{color:var(--highlight)}.project-preview>p:not(.eyebrow){color:var(--muted);font-size:15px}.preview-link{margin-top:auto;padding-top:22px;color:var(--highlight);font-size:14px;display:flex;justify-content:space-between}.project-detail{padding-top:36px;padding-bottom:70px}.detail-back{display:inline-block;margin-bottom:36px;color:var(--highlight)}.project-detail-title{font-family:Manrope,Arial,sans-serif;font-size:clamp(32px,4vw,52px);line-height:1.15;letter-spacing:-1.4px;margin:0 0 26px}.project-detail-copy{max-width:850px;padding:36px;border:1px solid var(--line);background:var(--surface)}.project-detail-copy>p:not(.eyebrow),.project-detail-copy .details-body{color:var(--muted)}.project-detail-copy .project-result{border-left:2px solid var(--highlight);padding-left:18px;margin-top:28px}@media(max-width:1000px){.project-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.project-preview-grid{grid-template-columns:1fr}.project-detail-copy{padding:24px}.project-preview{padding:24px}}

/* Shared green palette and interaction refinements. */
body{background-image:radial-gradient(ellipse at 12% 0%,rgba(139,221,192,.055),transparent 48%);background-repeat:no-repeat}
.brand span{color:var(--highlight)}
.button{color:#102b22;border-radius:8px;font-weight:600;min-height:48px;align-items:center;justify-content:center;transition:background .18s ease,border-color .18s ease}
.button-secondary{color:var(--highlight);border-color:#557669;background:transparent}
.button-secondary:hover{color:#102b22}
.page-nav{gap:8px}
.page-nav a{padding:10px 15px;border:1px solid transparent;border-radius:7px;min-height:44px;display:inline-flex;align-items:center}
.page-nav a:hover{background:#1b302b;color:var(--text)}
.page-nav a[aria-current=page]{background:#1b382f;border-color:#426b5a;color:var(--highlight)}
.project,.project-detail-copy,.degree-card,.case-flow li{border-radius:12px}
.hero-portrait img{border-radius:18px;border-color:#54776a;box-shadow:10px 10px 0 #1b382f}
.hero-portrait figcaption{margin-top:22px}
.tags span,.hobby-tags span{background:#172a26;border-color:#355248;border-radius:6px}
.project-preview{position:relative;border-radius:12px;transition:background .18s ease,border-color .18s ease;min-height:260px}
.project-preview:hover,.project-preview:focus-within{border-color:#8bddc0;background:#1a302b}
.project-preview:focus-within{outline:2px solid #8bddc0;outline-offset:4px}
.preview-link{min-height:44px;align-items:end;font-weight:600}
.preview-link::after{content:"";position:absolute;inset:0;border-radius:12px}
.project-preview .eyebrow{text-transform:uppercase;letter-spacing:1.4px}
.category-nav a{background:#142522;min-height:44px;border-radius:8px;transition:background .18s ease,border-color .18s ease}
.category-nav a:hover{background:#203c32;border-color:#649b85}
.category-nav span{display:inline-flex;justify-content:center;align-items:center;min-width:24px;height:24px;background:#27463a;border-radius:5px;font-size:12px}
.projects-page{padding-top:56px}.project-category{margin-top:48px}.category-nav{margin-bottom:40px}
summary{min-height:48px}summary:hover{color:var(--highlight)}
a:focus-visible,summary:focus-visible{outline-color:#b2f0d7}
.contact-profiles a:hover{color:var(--highlight)}
@media(max-width:600px){.page-nav{gap:8px}.page-nav a{width:100%;padding:10px 12px}.project-preview{min-height:230px}.category-nav{gap:8px}.category-nav a{padding:10px 12px}.projects-page{padding-top:38px}.button{white-space:normal;text-align:center}.hero-portrait img{box-shadow:7px 7px 0 #1b382f}}
@media(prefers-reduced-motion:reduce){.button,.project-preview,.category-nav a{transition:none}}

/* Original senior design evidence: preserve entire diagrams and readable captions. */
.engineering-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:32px}.engineering-gallery figure{margin:0;min-width:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface,#142124)}.engineering-gallery figure:first-child,.engineering-gallery figure:last-child{grid-column:1/-1}.engineering-gallery a{display:block;background:#fff}.engineering-gallery a:focus-visible{outline:4px solid var(--highlight);outline-offset:-4px}.engineering-gallery img{display:block;width:100%;height:320px;object-fit:contain}.engineering-gallery figure:first-child img,.engineering-gallery figure:last-child img{height:auto}.engineering-gallery figcaption{padding:22px}.engineering-gallery figcaption strong{font-size:19px}.engineering-gallery figcaption p{margin:10px 0}.engineering-gallery figcaption span{font-size:13px;color:var(--muted)}@media(max-width:650px){.engineering-gallery{grid-template-columns:1fr;gap:20px}.engineering-gallery img{height:auto}.engineering-gallery figcaption{padding:18px}}

.risk-matrix{min-width:650px;table-layout:fixed}.risk-matrix td{text-align:center;color:#152321;border:2px solid #142124}.risk-matrix td strong{color:#152321;display:block;font-weight:700}.risk-matrix td span{display:block;font-size:12px;margin-top:8px}.risk-matrix .risk-low{background:#b5d9bd}.risk-matrix .risk-medium{background:#f4e4a3}.risk-matrix .risk-high{background:#efbd91}.risk-matrix .risk-very-high{background:#ed9990}.risk-matrix tbody th{width:auto}

.lab-command{white-space:pre-wrap;overflow-wrap:anywhere;padding:20px;background:#0c1517;border:1px solid var(--line);border-radius:8px;color:var(--highlight);font-size:14px}.case-columns>div{min-width:0}
