:root{--blueprint-ink: #173f5f;--blueprint-blue: #1666a8;--blueprint-muted: #5f7f96;--blueprint-line: #b7cedd;--blueprint-line-soft: rgba(69, 123, 157, .13);--blueprint-paper: #f4f8fa;--blueprint-panel: rgba(248, 251, 252, .82)}.style-lab{position:fixed;right:1rem;bottom:1rem;z-index:1000;display:flex;align-items:center;gap:.55rem;padding:.45rem .5rem .45rem .7rem;color:#334155;background:#fffffff0;border:1px solid #cbd5e1;border-radius:.5rem;box-shadow:0 8px 24px #0f172a1f;font:600 .7rem/1 system-ui,-apple-system,sans-serif;letter-spacing:.08em;text-transform:uppercase;backdrop-filter:blur(10px)}.style-lab select{min-height:30px;padding:0 1.8rem 0 .65rem;color:#0f172a;background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:.3rem;font:600 .75rem/1 system-ui,-apple-system,sans-serif;cursor:pointer}.style-lab select:focus-visible{outline:2px solid #2563eb;outline-offset:2px}html[data-style=blueprint] body{color:var(--blueprint-ink);background-color:var(--blueprint-paper);background-image:linear-gradient(var(--blueprint-line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--blueprint-line-soft) 1px,transparent 1px);background-size:24px 24px}html[data-style=blueprint] body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#f4f8fa59,#f4f8fad1)}html[data-style=blueprint] body .sidebar,html[data-style=blueprint] body .topbar,html[data-style=blueprint] body .sidebar-social{color:var(--blueprint-ink);background:#f4f8faf5;border-color:var(--blueprint-line);box-shadow:none}html[data-style=blueprint] body .sidebar{width:216px}@media(min-width:769px){html[data-style=blueprint] body .page{margin-left:216px}}html[data-style=blueprint] body .sidebar-header{min-height:104px;align-items:flex-start;border-color:var(--blueprint-line)}html[data-style=blueprint] body .sidebar-brand,html[data-style=blueprint] body .topbar-brand{color:var(--blueprint-ink);font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}html[data-style=blueprint] body .sidebar-subtitle{color:var(--blueprint-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.67rem;letter-spacing:.04em}html[data-style=blueprint] body .nav-link{margin:0 .7rem;padding:.68rem .55rem;color:var(--blueprint-muted);border-left:0;border-bottom:1px solid rgba(183,206,221,.72);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}html[data-style=blueprint] body .nav-link:hover,html[data-style=blueprint] body .nav-link.active{color:var(--blueprint-blue);background:transparent}html[data-style=blueprint] body .nav-link.active:before{content:"→ "}html[data-style=blueprint] body .social-link{color:var(--blueprint-muted);border:1px solid var(--blueprint-line);border-radius:0}html[data-style=blueprint] body .social-link:hover{color:var(--blueprint-blue);background:#ffffffb8}html[data-style=blueprint] body .content{width:min(100%,1180px);padding:clamp(2.25rem,5vw,5rem)}html[data-style=blueprint] body .content h1{color:var(--blueprint-ink);font-size:clamp(1.75rem,3.4vw,3rem);font-weight:500;letter-spacing:-.04em}html[data-style=blueprint] body .content h1:before{content:"// ";color:var(--blueprint-blue);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.48em;font-weight:600;letter-spacing:0;vertical-align:middle}html[data-style=blueprint] body .content h2,html[data-style=blueprint] body .content h3,html[data-style=blueprint] body .profile-name,html[data-style=blueprint] body .entry-title,html[data-style=blueprint] body .name{color:var(--blueprint-ink)}html[data-style=blueprint] body .content p,html[data-style=blueprint] body .intro,html[data-style=blueprint] body .lead,html[data-style=blueprint] body .post-summary,html[data-style=blueprint] body .pub-desc,html[data-style=blueprint] body .entry p,html[data-style=blueprint] body .skill-group p{color:#486b82}html[data-style=blueprint] body .about-card,html[data-style=blueprint] body .card,html[data-style=blueprint] body .form,html[data-style=blueprint] body .direct-contact,html[data-style=blueprint] body .skill-group,html[data-style=blueprint] body .board,html[data-style=blueprint] body .post,html[data-style=blueprint] body .project{background:var(--blueprint-panel);border-color:var(--blueprint-line);border-radius:0;box-shadow:none}html[data-style=blueprint] body .project-row,html[data-style=blueprint] body .post-item,html[data-style=blueprint] body .pub-item,html[data-style=blueprint] body .entry,html[data-style=blueprint] body .profile{background:#f8fbfca3;border-color:var(--blueprint-line)}html[data-style=blueprint] body .project-row:hover,html[data-style=blueprint] body .card:hover{background:#ffffffe0;border-color:var(--blueprint-blue);box-shadow:none;transform:none}html[data-style=blueprint] body .filter-bar{background:#dbe9f194;border:1px solid var(--blueprint-line);border-radius:0}html[data-style=blueprint] body .pill,html[data-style=blueprint] body .reset-btn,html[data-style=blueprint] body input,html[data-style=blueprint] body textarea{color:var(--blueprint-ink);background:#f8fbfce6;border-color:var(--blueprint-line);border-radius:0;box-shadow:none}html[data-style=blueprint] body .pill select{color:var(--blueprint-ink);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}html[data-style=blueprint] body .download-btn,html[data-style=blueprint] body .form button{color:var(--blueprint-paper);background:var(--blueprint-blue);border-radius:0}html[data-style=blueprint] body .linkedin-mark,html[data-style=blueprint] body .direct-link{color:var(--blueprint-blue);background:#f8fbfce6;border-color:var(--blueprint-line);border-radius:0}html[data-style=blueprint] body a,html[data-style=blueprint] body .post-title,html[data-style=blueprint] body .pub-title,html[data-style=blueprint] body .entry-sub,html[data-style=blueprint] body .website,html[data-style=blueprint] body .col-arrow,html[data-style=blueprint] body .col-year,html[data-style=blueprint] body .year{color:var(--blueprint-blue)}html[data-style=blueprint] body .post-category,html[data-style=blueprint] body .post-date,html[data-style=blueprint] body .pub-venue,html[data-style=blueprint] body .entry-date,html[data-style=blueprint] body .profile-role,html[data-style=blueprint] body .note,html[data-style=blueprint] body .group-header h2,html[data-style=blueprint] body .section h2{color:var(--blueprint-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase}html[data-style=blueprint] body .profile-photo,html[data-style=blueprint] body .col-image,html[data-style=blueprint] body .image-placeholder,html[data-style=blueprint] body .logo{border-color:var(--blueprint-line);border-radius:0;filter:grayscale(1) sepia(.2) hue-rotate(165deg) saturate(1.6)}html[data-style=blueprint] body .col-image{transition:filter .2s ease}html[data-style=blueprint] body .project-row:hover .col-image,html[data-style=blueprint] body .project-row:focus-visible .col-image{filter:none}html[data-style=blueprint] body .section h2,html[data-style=blueprint] body .project-list,html[data-style=blueprint] body .pub-list{border-color:var(--blueprint-line)}html[data-style=mono] body{color:#181818;background:#f7f7f5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.94rem}html[data-style=mono] body .sidebar,html[data-style=mono] body .topbar,html[data-style=mono] body .sidebar-social{color:#181818;background:#f7f7f5;border-color:#cfcfca;box-shadow:none}html[data-style=mono] body .sidebar-header{border-color:#cfcfca}html[data-style=mono] body .sidebar-brand,html[data-style=mono] body .topbar-brand{color:#181818;font-size:.9rem;font-weight:600;letter-spacing:-.02em}html[data-style=mono] body .sidebar-subtitle{color:#73736f;font-size:.7rem}html[data-style=mono] body .nav-link{margin:0 .8rem;padding:.65rem .45rem;color:#666662;border:0;border-bottom:1px solid #deded9;font-size:.76rem;letter-spacing:.01em}html[data-style=mono] body .nav-link:hover{color:#181818;background:transparent}html[data-style=mono] body .nav-link.active{color:#181818;background:transparent;border-left-color:transparent;font-weight:700}html[data-style=mono] body .nav-link.active:before{content:"> ";color:#06c}html[data-style=mono] body .social-link{color:#555552;border-radius:0}html[data-style=mono] body .social-link:hover{color:#181818;background:#ecece8}html[data-style=mono] body .content{width:min(100%,1120px);padding:clamp(2.5rem,5vw,4.75rem)}html[data-style=mono] body .content h1{color:#111;font-size:clamp(1.7rem,3vw,2.65rem);font-weight:600;letter-spacing:-.06em}html[data-style=mono] body .content h1:after{content:"_";margin-left:.08em;color:#06c;font-weight:400}html[data-style=mono] body .content h2,html[data-style=mono] body .content h3,html[data-style=mono] body .profile-name,html[data-style=mono] body .entry-title,html[data-style=mono] body .name{color:#181818;letter-spacing:-.025em}html[data-style=mono] body .content p,html[data-style=mono] body .intro,html[data-style=mono] body .lead,html[data-style=mono] body .post-summary,html[data-style=mono] body .pub-desc,html[data-style=mono] body .entry p,html[data-style=mono] body .skill-group p{color:#555552}html[data-style=mono] body .about-card,html[data-style=mono] body .card,html[data-style=mono] body .form,html[data-style=mono] body .direct-contact,html[data-style=mono] body .skill-group,html[data-style=mono] body .board,html[data-style=mono] body .post,html[data-style=mono] body .project{background:transparent;border-color:#cfcfca;border-radius:0;box-shadow:none}html[data-style=mono] body .project-row,html[data-style=mono] body .post-item,html[data-style=mono] body .pub-item,html[data-style=mono] body .entry,html[data-style=mono] body .profile{background:transparent;border-color:#cfcfca}html[data-style=mono] body .project-row:hover,html[data-style=mono] body .card:hover{background:#efefeb;border-color:#181818;box-shadow:none;transform:none}html[data-style=mono] body .filter-bar{background:transparent;border:1px solid #cfcfca;border-radius:0}html[data-style=mono] body .pill,html[data-style=mono] body .reset-btn,html[data-style=mono] body input,html[data-style=mono] body textarea{color:#181818;background:#fbfbf9;border-color:#cfcfca;border-radius:0;box-shadow:none;font-family:inherit}html[data-style=mono] body .pill select{color:#181818;font-family:inherit}html[data-style=mono] body .pill.active,html[data-style=mono] body input:focus,html[data-style=mono] body textarea:focus{border-color:#06c;box-shadow:0 0 0 1px #06c}html[data-style=mono] body .download-btn,html[data-style=mono] body .form button{color:#fff;background:#181818;border-radius:0;font-family:inherit}html[data-style=mono] body .linkedin-mark,html[data-style=mono] body .direct-link{color:#181818;background:transparent;border-color:#cfcfca;border-radius:0}html[data-style=mono] body .direct-link:hover{color:#fff;background:#06c;border-color:#06c}html[data-style=mono] body .download-btn:hover,html[data-style=mono] body .form button:hover{background:#06c}html[data-style=mono] body a,html[data-style=mono] body .post-title,html[data-style=mono] body .pub-title,html[data-style=mono] body .entry-sub,html[data-style=mono] body .website,html[data-style=mono] body .col-arrow,html[data-style=mono] body .col-year,html[data-style=mono] body .year{color:#005ebd}html[data-style=mono] body .post-category,html[data-style=mono] body .post-date,html[data-style=mono] body .pub-venue,html[data-style=mono] body .entry-date,html[data-style=mono] body .profile-role,html[data-style=mono] body .note,html[data-style=mono] body .group-header h2,html[data-style=mono] body .section h2{color:#73736f;font-family:inherit;letter-spacing:.06em}html[data-style=mono] body .profile-photo,html[data-style=mono] body .col-image,html[data-style=mono] body .image-placeholder,html[data-style=mono] body .logo{border-color:#cfcfca;border-radius:0;filter:grayscale(1)}html[data-style=mono] body .col-image{transition:filter .2s ease}html[data-style=mono] body .project-row:hover .col-image,html[data-style=mono] body .project-row:focus-visible .col-image{filter:none}html[data-style=mono] body .section h2,html[data-style=mono] body .project-list,html[data-style=mono] body .pub-list{border-color:#cfcfca}@media(max-width:768px){.style-lab{right:.75rem;bottom:.75rem}.style-lab label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}html[data-style=blueprint] body .sidebar{width:min(86vw,280px)}html[data-style=blueprint] body .content,html[data-style=mono] body .content{padding:calc(53px + 1.75rem) 1.15rem 5rem}}@media(prefers-reduced-motion:reduce){html[data-style=blueprint] *,html[data-style=blueprint] *:before,html[data-style=blueprint] *:after{scroll-behavior:auto!important;transition-duration:.01ms!important}html[data-style=mono] *,html[data-style=mono] *:before,html[data-style=mono] *:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}[data-astro-cid-ouamjn2i],[data-astro-cid-ouamjn2i]:before,[data-astro-cid-ouamjn2i]:after{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;background:#f5f5f5;color:#1a1a1a}body.menu-open{overflow:hidden}.sidebar[data-astro-cid-ouamjn2i]{position:fixed;top:0;left:0;width:240px;height:100vh;height:100svh;background:#fff;color:#1a1a1a;border-right:1px solid #e2e8f0;z-index:400;display:flex;flex-direction:column;overflow:hidden;transform:translate(-100%);transition:transform .25s ease}@media(min-width:769px){.sidebar[data-astro-cid-ouamjn2i]{transform:translate(0)}}.sidebar[data-astro-cid-ouamjn2i].open{transform:translate(0)}.sidebar-header[data-astro-cid-ouamjn2i]{display:flex;align-items:center;justify-content:space-between;padding:1.25rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.sidebar-title[data-astro-cid-ouamjn2i]{display:flex;flex-direction:column;gap:.15rem}.sidebar-brand[data-astro-cid-ouamjn2i]{font-size:1.2rem;font-weight:700;color:#1a1a1a;line-height:1.1}.sidebar-subtitle[data-astro-cid-ouamjn2i]{font-size:.8rem;color:#94a3b8}.close-btn[data-astro-cid-ouamjn2i]{background:none;border:none;color:#94a3b8;font-size:1.1rem;cursor:pointer;padding:.2rem .4rem;border-radius:4px;line-height:1}.close-btn[data-astro-cid-ouamjn2i]:hover{color:#1a1a1a;background:#f1f5f9}@media(min-width:769px){.close-btn[data-astro-cid-ouamjn2i]{display:none}}nav[data-astro-cid-ouamjn2i]{flex:1 1 auto;overflow-y:auto;min-height:0;padding-bottom:72px}nav[data-astro-cid-ouamjn2i] ul[data-astro-cid-ouamjn2i]{list-style:none;padding:.75rem 0}.nav-link[data-astro-cid-ouamjn2i]{display:block;padding:.7rem 1.25rem;color:#64748b;text-decoration:none;font-size:.95rem;border-left:3px solid transparent;transition:background .15s,color .15s,border-color .15s}.nav-link[data-astro-cid-ouamjn2i]:hover{background:#f8fafc;color:#1a1a1a}.nav-link[data-astro-cid-ouamjn2i].active{background:#f1f5f9;color:#1a1a1a;border-left-color:#6366f1}.sidebar-social[data-astro-cid-ouamjn2i]{position:absolute;left:0;right:0;bottom:0;display:flex;gap:.5rem;padding:1.25rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom));border-top:1px solid #e2e8f0;background:#fff;box-sizing:border-box}.social-link[data-astro-cid-ouamjn2i]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;color:#64748b;transition:background .15s,color .15s}.social-link[data-astro-cid-ouamjn2i]:hover{background:#f1f5f9;color:#1a1a1a}.backdrop[data-astro-cid-ouamjn2i]{display:none;position:fixed;inset:0;background:#00000073;z-index:300}.backdrop[data-astro-cid-ouamjn2i].visible{display:block}.page[data-astro-cid-ouamjn2i]{min-height:100vh;display:flex;flex-direction:column}@media(min-width:769px){.page[data-astro-cid-ouamjn2i]{margin-left:240px}}.topbar[data-astro-cid-ouamjn2i]{display:none;align-items:center;gap:.75rem;background:#fff;color:#1a1a1a;border-bottom:1px solid #e2e8f0;padding:.75rem 1rem;position:fixed;top:0;left:0;right:0;z-index:200}@media(max-width:768px){.topbar[data-astro-cid-ouamjn2i]{display:flex}}.topbar-brand[data-astro-cid-ouamjn2i]{font-size:1.05rem;font-weight:700}.hamburger[data-astro-cid-ouamjn2i]{display:flex;flex-direction:column;justify-content:center;gap:5px;width:28px;height:28px;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0}.hamburger[data-astro-cid-ouamjn2i] span[data-astro-cid-ouamjn2i]{display:block;height:2px;background:#1a1a1a;border-radius:2px}.content[data-astro-cid-ouamjn2i]{flex:1;padding:2.5rem 3rem}@media(max-width:768px){.content[data-astro-cid-ouamjn2i]{padding:calc(53px + 1.5rem) 1.25rem 1.5rem}}
