@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--bg:#0C1420;--panel:#1A2B40;--panel2:#21344B;--text:#E1EAF5;--muted:#AABBD0;--accent:#7899BE;--accent2:#6689B3;--stroke:#354A62;--max:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px}body{margin:0;background:var(--bg);color:var(--text);font-family:'DM Sans',system-ui,sans-serif;line-height:1.65}body:before{content:'';position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 90% 3%,#3D608033,transparent 45%);z-index:-1}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}img{max-width:100%;display:block}button{font:inherit}::selection{background:var(--accent);color:var(--bg)}.wrap{width:min(var(--max),calc(100% - 48px));margin:auto}.skip{position:absolute;left:-9999px;top:12px;z-index:100;background:var(--accent);color:#06110e;padding:12px}.skip:focus{left:12px}.header{position:sticky;top:0;z-index:30;border-bottom:1px solid #ffffff12;background:#0C1420e8;backdrop-filter:blur(16px)}.nav{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;letter-spacing:-.04em;white-space:nowrap}.brand span{color:var(--accent)}.navlinks{display:flex;gap:27px;align-items:center}.navlinks a{font-size:13px;font-weight:700;color:#C5D4E5}.navlinks a:hover{color:var(--accent)}.navend{display:flex;align-items:center;gap:12px}.lang,.smalllink{border:1px solid var(--stroke);background:#ffffff06;border-radius:40px;padding:9px 14px;font-size:12px;font-weight:700}.mobiletoggle{display:none;color:var(--text);background:none;border:1px solid var(--stroke);border-radius:9px;padding:8px 12px}.hero{padding:105px 0 108px;border-bottom:1px solid #ffffff0c;position:relative;overflow:hidden}.hero:after{content:'';width:520px;height:520px;position:absolute;right:-220px;top:0;background:#6689B313;filter:blur(80px);border-radius:100%;pointer-events:none}.herogrid{display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:64px}.eyebrow,.sectioneyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.17em;font-weight:700;color:var(--accent)}h1,h2,h3,h4{font-family:'Space Grotesk',sans-serif;line-height:1.13;letter-spacing:-.04em}h1{font-size:clamp(55px,7.4vw,108px);margin:22px 0 12px;line-height:1.01}h1 em{font-style:normal;color:var(--accent)}.hero-sub{font-family:'Space Grotesk';font-size:clamp(20px,2.6vw,29px);font-weight:500;line-height:1.35;margin:20px 0;color:#D9E5F1;max-width:770px}.hero-desc{color:var(--muted);font-size:17px;max-width:655px;margin:22px 0 30px}.buttons{display:flex;gap:13px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:11px;background:var(--accent);color:#101B2A;border-radius:8px;padding:15px 22px;font-weight:700;font-size:13px;min-height:48px;transition:.2s}.btn:hover{background:white;color:#101B2A;transform:translateY(-2px)}.btn-ghost{border:1px solid var(--stroke);background:transparent;color:var(--text)}.btn-ghost:hover{border-color:var(--accent);background:#7899BE10;color:var(--accent)}.portrait{max-width:385px;margin:auto;aspect-ratio:1;position:relative}.portrait:before{content:'';position:absolute;inset:-15px;border:1px solid #7899BE42;border-radius:28px;transform:rotate(5deg)}.portrait img{height:100%;width:100%;object-fit:cover;object-position:center;border-radius:24px;filter:grayscale(.4);background:#1B2C40}.portrait-label{position:absolute;bottom:-20px;right:-22px;border:1px solid var(--stroke);border-radius:12px;background:#16273Bf5;padding:13px 17px;font-size:12px;font-weight:700;color:var(--accent)}.meta{display:flex;gap:18px;align-items:center;color:#A9BBD1;font-size:12px;margin-top:30px}.meta span+span:before{content:'·';padding-right:18px;color:var(--accent)}.section{padding:105px 0}.section.alt{background:#101C2B}.section-header{max-width:740px;margin-bottom:39px}.section h2{font-size:clamp(37px,4.2vw,58px);margin:13px 0 15px}.section-intro{color:var(--muted);font-size:16px;max-width:700px}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.project-card{display:flex;flex-direction:column;border:1px solid var(--stroke);background:var(--panel);border-radius:15px;overflow:hidden;transition:transform .2s,border .2s}.project-card:hover{transform:translateY(-5px);border-color:#7899BE}.project-image{aspect-ratio:1.38;overflow:hidden;background:linear-gradient(145deg,#1A2C43,#304864)}.project-image img{width:100%;height:100%;object-fit:contain;padding:12px;transition:transform .35s}.project-card:hover img{transform:scale(1.04)}.project-content{padding:25px;display:flex;flex-direction:column;flex:1}.tagrow{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 13px}.tag{border:1px solid #4B6887;color:#CCDDF0;padding:4px 8px;border-radius:4px;font-size:10px;letter-spacing:.03em;font-weight:700}.project-card h3{font-size:23px;margin:3px 0 10px}.project-card p{font-size:14px;color:var(--muted);margin:0 0 19px;flex:1}.status{border-top:1px solid var(--stroke);padding-top:14px;color:#B9CADC;font-size:12px}.status strong{color:var(--accent)}.arrowlink{margin-top:15px;color:var(--accent);font-size:13px;font-weight:700}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.step{padding:25px;border:1px solid var(--stroke);border-radius:12px;background:var(--panel)}.step .number{font:700 33px 'Space Grotesk';color:var(--accent2)}.step h3{font-size:18px;margin:18px 0 8px}.step p{color:var(--muted);font-size:14px;margin:0}.aboutgrid{display:grid;grid-template-columns:1.1fr .9fr;gap:55px;align-items:start}.aboutgrid p{color:#C9D5E4;margin:0 0 19px}.aboutside{border:1px solid var(--stroke);border-radius:14px;background:var(--panel);padding:30px}.fact{padding:14px 0;border-bottom:1px solid var(--stroke)}.fact:last-child{border:0}.fact small{color:var(--accent);text-transform:uppercase;letter-spacing:.12em;font-size:11px}.fact p{margin:4px 0 0;font-size:15px;color:var(--text)}.timeline{border-left:1px solid var(--stroke);margin-left:8px;padding-left:29px;display:grid;gap:15px}.job{position:relative;padding:20px 24px;border:1px solid var(--stroke);border-radius:10px;background:var(--panel)}.job:before{content:'';position:absolute;left:-35px;top:27px;height:11px;width:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--bg)}.job h3{font-size:20px;margin:0}.job .company{color:var(--accent);font-weight:700;font-size:13px;margin:7px 0}.job .period{color:var(--muted);font-size:12px}.job p{color:#B7C8D9;font-size:14px;margin:9px 0 0}.skillgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.skill{border:1px solid var(--stroke);padding:26px;border-radius:12px;background:var(--panel)}.skill h3{font-size:20px;margin:0 0 11px}.skill p{color:var(--muted);font-size:14px;margin:0}.tool-note{color:#B0BED0;margin-top:21px;font-size:13px}.contactbox{background:linear-gradient(115deg,#1E344D,#101F30);border:1px solid #456383;border-radius:18px;padding:56px;display:flex;gap:40px;align-items:end;justify-content:space-between}.contactbox h2{margin:12px 0 15px}.contactbox p{max-width:650px;color:#BDCDE0}.socials{display:flex;gap:17px;flex-wrap:wrap;margin-top:26px;font-size:13px;font-weight:700}.footer{border-top:1px solid var(--stroke);padding:26px 0;color:var(--muted);font-size:12px}.footer .wrap{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}.detailhero{padding:100px 0 55px}.back{color:var(--accent);font-size:13px;font-weight:700}.detailhero h1{font-size:clamp(43px,6vw,78px);max-width:950px;margin:22px 0}.lead{font-size:20px;max-width:810px;color:#C9D6E7}.detail-image{border:1px solid var(--stroke);border-radius:16px;padding:22px;background:linear-gradient(135deg,#21364D,#2A4261);margin:32px 0 14px}.detail-image img{max-height:490px;width:100%;object-fit:contain}.detail-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:65px;padding:40px 0 95px}.side-index{position:sticky;top:110px;align-self:start;display:grid;gap:13px;border-left:1px solid var(--stroke);padding-left:18px}.side-index a{font-size:13px;color:#A9BCD1}.side-index a:hover{color:var(--accent)}.case-section{margin-bottom:66px;scroll-margin-top:105px}.case-section h2{font-size:32px;margin:0 0 16px}.case-section p,.case-section li{color:#BFCEDF}.case-section li{margin:8px 0}.case-section ul{padding-left:22px}.case-section strong{color:var(--text)}.callout{border-left:3px solid var(--accent);background:#1B2C40;padding:21px 24px;border-radius:0 9px 9px 0;color:#D5E1EF}.specs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.spec{padding:15px 17px;border:1px solid var(--stroke);border-radius:9px;background:var(--panel)}.spec small{display:block;color:var(--accent);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.1em}.spec span{font-size:14px}.proof{display:flex;gap:12px;flex-wrap:wrap}.proof a{display:inline-block;border:1px solid #567BA4;padding:12px 17px;border-radius:8px;color:var(--accent);font-size:13px;font-weight:700}.notice{border:1px solid #7a6441;background:#4f3c1b31;color:#F1D8A9;border-radius:8px;padding:17px;font-size:14px}.small{font-size:13px;color:var(--muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
@media(max-width:1000px){.navlinks{gap:13px}.navlinks a{font-size:12px}.herogrid{gap:35px}.projects-grid{grid-template-columns:repeat(2,1fr)}.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.wrap{width:min(var(--max),calc(100% - 34px))}.nav{min-height:68px}.mobiletoggle{display:block}.navlinks{display:none;position:absolute;top:68px;left:0;right:0;padding:24px;background:#111E30;flex-direction:column;align-items:flex-start;border-bottom:1px solid var(--stroke);gap:20px}.navlinks.open{display:flex}.smalllink{display:none}.hero{padding:67px 0 83px}.herogrid,.aboutgrid{grid-template-columns:1fr}.portrait{max-width:270px;margin:35px auto 0}.portrait-label{right:-8px}.hero-desc{font-size:15px}.section{padding:72px 0}.projects-grid,.skillgrid{grid-template-columns:1fr}.steps{grid-template-columns:1fr 1fr}.contactbox{padding:32px;display:block}.contactbox .btn{margin-top:12px}.detailhero{padding:60px 0 25px}.detail-layout{grid-template-columns:1fr;gap:20px}.side-index{position:static;display:flex;overflow:auto;white-space:nowrap;border-left:0;border-bottom:1px solid var(--stroke);padding:0 0 15px}.case-section{margin-bottom:46px}.case-section h2{font-size:27px}}
@media(max-width:470px){.steps,.specs{grid-template-columns:1fr}.brand{font-size:15px}.lang{padding:8px 10px}.portrait{max-width:245px}.contactbox{padding:23px}.job{padding:18px}.section h2{font-size:36px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Portfolio 2.1 — steel blue, compact experience, interactive portraits */
:root{color-scheme:dark}
body:before{background:radial-gradient(ellipse at 90% 3%,#42628a26,transparent 46%)}
.hero:after{background:#7899BE15}
.portrait img{filter:grayscale(1);transition:filter .48s ease,transform .48s ease}
.portrait:hover img,.portrait:focus-within img{filter:grayscale(0);transform:scale(1.015)}
@media(hover:none){.portrait img{filter:grayscale(0)}}
.timeline{max-width:950px;gap:10px}
.job{padding:0;border-radius:12px;overflow:visible}
.job:before{top:23px}
.job summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 19px;min-height:68px}
.job summary::-webkit-details-marker{display:none}
.job summary:hover{background:#7899BE10}
.job .job-heading{min-width:0}
.job .job-heading h3{font-size:17px;margin:0 0 3px}
.job .job-heading .company{margin:0;font-size:12px}
.job .job-heading .period{font-size:12px}
.job .job-chevron{font-size:21px;color:var(--accent);line-height:1;transition:transform .2s}
.job[open] .job-chevron{transform:rotate(180deg)}
.job .job-body{padding:0 19px 16px;border-top:1px solid var(--stroke)}
.job .job-body p{margin-top:13px;line-height:1.7}
.job[open]{border-color:#56779A}
.socials{gap:10px}
.social-link{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--stroke);border-radius:9px;padding:10px 12px;background:#ffffff04;color:var(--text);font-size:13px;transition:background .2s,border-color .2s}
.social-link:hover{background:#7899BE14;border-color:var(--accent);color:var(--text)}
.social-link svg{width:18px;height:18px;fill:currentColor;flex-shrink:0}
.footer-socials{display:flex;align-items:center;gap:12px}
.footer-socials .social-link{padding:9px;justify-content:center}
.footer-socials .social-link svg{width:18px;height:18px}
@media(max-width:470px){.job summary{padding:13px}.job .job-body{padding:0 13px 13px}.job .job-heading h3{font-size:15px}}

/* Portfolio 2.2 — steel blue refinement */
.portrait img,.portrait:hover img,.portrait:focus-within img{filter:none;transform:none}
.job .job-heading{flex:1;min-width:0}
.job .job-right{display:flex;align-items:center;gap:20px;flex-shrink:0;margin-left:auto}
.job .job-period-right{font-size:12px;color:#C0D0E4;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.job summary{gap:18px}
.hero{isolation:isolate}
.hero-tech-pattern{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;opacity:.45;background-image:radial-gradient(circle,#8EAAD0 1px,transparent 1.6px);background-size:43px 43px;mask-image:linear-gradient(90deg,transparent 6%,#000 70%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 6%,#000 70%,transparent 100%);animation:tech-drift 34s linear infinite}
.hero .herogrid{position:relative;z-index:1}
@keyframes tech-drift{from{background-position:0 0}to{background-position:43px 86px}}
.social-link svg{display:block}
.proof .repo-link{display:inline-flex;align-items:center;gap:10px}
.github-cta-icon{height:19px;width:19px;fill:currentColor;flex:none}
@media(max-width:470px){.job .job-right{gap:10px}.job .job-period-right{font-size:11px}.job summary{gap:8px}}
@media(prefers-reduced-motion:reduce){.hero-tech-pattern{animation:none}}

/* 2.3: full-bleed engineering renders, retain legibility of PCB details */
.project-image{aspect-ratio:1.5;background:#263b54}
.project-image img{width:100%;height:100%;padding:0;object-fit:cover;object-position:center;transition:transform .4s ease}
.project-card:hover .project-image img{transform:scale(1.035)}
.detail-image{padding:0;overflow:hidden;background:#243a52;line-height:0}
.detail-image img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;margin:0 auto}
/* Footer uses the same accessible social icon language as the homepage */
.footer-socials{gap:10px}
.footer-socials .social-link{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center}
.job-body ul{margin:8px 0 1px;padding-left:19px;color:#C3D2E4;font-size:14px}
.job-body li{margin:8px 0;line-height:1.65}
.job-body li::marker{color:#8CAACD}
@media(max-width:700px){.project-image{aspect-ratio:1.48}.detail-image{border-radius:12px}.job-body ul{padding-left:18px}}
