:root{color-scheme:light;--bg: #f7f8fb;--bg-elevated: #ffffff;--bg-soft: #eef2f7;--text: #141820;--text-muted: #596274;--text-soft: #7a8496;--border: #dbe2ec;--accent: #087f6f;--accent-strong: #086c61;--accent-soft: #dff5ef;--warning-soft: #fff2cc;--warning-text: #766118;--shadow: 0 22px 60px rgba(31, 44, 71, .11);--radius: 8px;--radius-sm: 6px;--max-width: 1160px;--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}:root[data-theme=dark]{color-scheme:dark;--bg: #0f1218;--bg-elevated: #171b23;--bg-soft: #202632;--text: #f1f4f8;--text-muted: #b3bdcc;--text-soft: #8f9aaa;--border: #2c3442;--accent: #75e0c3;--accent-strong: #99f0d8;--accent-soft: rgba(117, 224, 195, .12);--warning-soft: rgba(255, 209, 102, .14);--warning-text: #ffe09a;--shadow: 0 22px 70px rgba(0, 0, 0, .34)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.6;text-rendering:optimizeLegibility;transition:background-color .18s ease,color .18s ease}body.nav-open,body.modal-open{overflow:hidden}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}img{max-width:100%;display:block}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:16px;top:16px;z-index:1000;transform:translateY(-160%);border-radius:var(--radius-sm);background:var(--text);color:var(--bg);padding:.7rem .9rem;transition:transform .16s ease}.skip-link:focus{transform:translateY(0)}.site-header{position:sticky;top:0;z-index:50;border-bottom:1px solid color-mix(in srgb,var(--border),transparent 16%);background:color-mix(in srgb,var(--bg),transparent 8%);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.navbar{width:min(var(--max-width),calc(100% - 32px));min-height:76px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{font-weight:800;font-size:1.05rem;letter-spacing:0}.nav-panel{display:flex;align-items:center;justify-content:flex-end;gap:1rem;flex:1}.nav-links,.nav-actions,.social-actions,.hero-actions,.hero-links,.project-actions,.modal-actions,.contact-actions,.footer-links{display:flex;align-items:center}.nav-links{gap:.15rem;list-style:none;margin:0;padding:0}.nav-links a{display:inline-flex;border-radius:var(--radius-sm);padding:.55rem .72rem;color:var(--text-muted);font-size:.95rem;font-weight:650;transition:color .16s ease,background-color .16s ease}.nav-links a:hover{background:var(--bg-soft);color:var(--text)}.nav-actions{gap:.7rem}.social-actions{gap:.35rem}.menu-toggle{display:none}.icon-button,.icon-link{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);box-shadow:none;cursor:pointer;transition:transform .16s ease,border-color .16s ease,color .16s ease,background-color .16s ease}.icon-button:hover,.icon-link:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%);color:var(--accent-strong);transform:translateY(-1px)}.icon-link.disabled{cursor:not-allowed;opacity:.52}.button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;border:1px solid transparent;border-radius:var(--radius-sm);padding:.72rem 1rem;font-weight:720;line-height:1;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background-color .16s ease,color .16s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button-primary{background:var(--text);color:var(--bg)}.button-primary:hover{background:var(--accent-strong);color:#fff}.button-secondary{border-color:var(--border);background:var(--bg-elevated);color:var(--text)}.button-secondary:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%);color:var(--accent-strong)}.button-muted{border-color:var(--border);background:var(--bg-soft);color:var(--text-soft);cursor:not-allowed}.section{padding:96px 0}.section-inner,.hero{width:min(var(--max-width),calc(100% - 32px));margin:0 auto}.hero{min-height:calc(100vh - 76px);display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.82fr);align-items:center;gap:clamp(2rem,6vw,5rem)}.hero-content{max-width:740px}.eyebrow{margin:0 0 .8rem;color:var(--accent-strong);font-size:.84rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{line-height:1.12;letter-spacing:0}h1{margin-bottom:.85rem;font-size:clamp(3rem,9vw,5.9rem);letter-spacing:0}.hero h2{margin-bottom:1rem;color:var(--text-muted);font-size:clamp(1.25rem,2.3vw,2rem);font-weight:720}.hero p{max-width:680px;color:var(--text-muted);font-size:1.08rem}.hero-actions{flex-wrap:wrap;gap:.8rem;margin:2rem 0 1.2rem}.hero-links{gap:.55rem}.hero-visual{justify-self:end;width:min(100%,420px)}.visual-card{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);padding:clamp(1.1rem,3vw,1.6rem)}.visual-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent),transparent 90%) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--accent),transparent 90%) 1px,transparent 1px);background-size:28px 28px;-webkit-mask-image:linear-gradient(to bottom,black,transparent 72%);mask-image:linear-gradient(to bottom,black,transparent 72%);opacity:.62;pointer-events:none}.visual-header,.visual-list{position:relative;z-index:1}.visual-header{display:flex;align-items:center;gap:.65rem;color:var(--text);font-weight:760}.signal-map{position:relative;z-index:1;height:230px;margin:1.2rem 0}.node,.line{position:absolute;display:block}.node{width:16px;height:16px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 8px var(--accent-soft)}.node-main{width:36px;height:36px;left:calc(50% - 18px);top:calc(50% - 18px)}.node-one{left:18%;top:20%}.node-two{right:18%;top:24%}.node-three{left:28%;bottom:16%}.line{height:2px;transform-origin:left center;background:color-mix(in srgb,var(--accent),transparent 24%)}.line-one{width:132px;left:23%;top:31%;transform:rotate(28deg)}.line-two{width:118px;right:21%;top:35%;transform:rotate(145deg)}.line-three{width:120px;left:32%;bottom:30%;transform:rotate(-35deg)}.visual-list{display:grid;gap:.6rem;margin:0;padding:0;list-style:none}.visual-list li{border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--bg-elevated),transparent 9%);padding:.72rem .8rem;color:var(--text-muted);font-weight:650}.section-heading{max-width:720px;margin-bottom:2rem}.section-heading h2{margin-bottom:.7rem;font-size:clamp(2rem,4vw,3.1rem)}.section-heading p:not(.eyebrow){color:var(--text-muted);font-size:1.02rem}.two-column{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:clamp(2rem,6vw,5rem);align-items:start}.prose{display:grid;gap:1rem;color:var(--text-muted);font-size:1.03rem}.prose p{margin:0}.profile-card,.skill-card,.education-card,.experience-card,.language-card,.contact-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 14px 40px #1f2c470f}.profile-card{display:grid;gap:1.1rem;padding:1rem}.profile-card img,.photo-placeholder{width:100%;aspect-ratio:4 / 5;border-radius:var(--radius-sm);object-fit:cover}.photo-placeholder{display:grid;place-items:center;border:1px dashed color-mix(in srgb,var(--accent),var(--border) 50%);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 84%),transparent),var(--bg-soft);color:var(--text-muted);text-align:center;padding:1rem;font-weight:720}.profile-card h3{margin-bottom:.15rem;font-size:1.35rem}.profile-card p{color:var(--text-muted)}.profile-facts{display:grid;gap:.65rem;margin:1rem 0 0}.profile-facts div{display:grid;grid-template-columns:96px 1fr;gap:.7rem}.profile-facts dt{color:var(--text-soft);font-size:.88rem}.profile-facts dd{margin:0;color:var(--text);font-weight:650}.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.skill-card{padding:1.1rem}.skill-card h3{margin-bottom:.9rem;color:var(--text);font-size:1rem;text-transform:uppercase}.tag-list,.tech-list,.modal-list{list-style:none;margin:0;padding:0}.tag-list,.tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.tag-list li,.tech-list li{border:1px solid var(--border);border-radius:999px;background:var(--bg-soft);color:var(--text-muted);padding:.4rem .65rem;font-size:.9rem;font-weight:650}.compact-tags li{font-size:.84rem;padding:.32rem .55rem}.projects-section{background:color-mix(in srgb,var(--bg-soft),transparent 48%)}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.project-card{display:grid;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 14px 40px #1f2c470f}.project-card-featured{grid-column:1 / -1;grid-template-columns:minmax(280px,.9fr) minmax(0,1fr);border-color:color-mix(in srgb,var(--accent),var(--border) 45%);box-shadow:var(--shadow)}.project-card-featured .project-card-content{background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 94%),transparent 48%),var(--bg-elevated)}.project-image,.project-image-placeholder{width:100%;aspect-ratio:16 / 10}.project-card-featured .project-image,.project-card-featured .project-image-placeholder{height:100%;min-height:360px}.project-image{object-fit:cover;background:var(--bg-soft)}.project-image.fit-contain{object-fit:contain;background:#fff}.wildfire-cover{position:relative;display:grid;place-items:center;overflow:hidden;width:100%;aspect-ratio:16 / 10;border-bottom:1px solid var(--border);background:var(--bg-soft);padding:1rem}.wildfire-cover-inner{position:relative;z-index:1;width:min(100%,520px);display:grid;gap:.8rem}.wildfire-cover-inner p,.wildfire-cover-inner>span{margin:0;text-align:center;text-transform:uppercase}.wildfire-cover-inner p{color:var(--accent-strong);font-size:.78rem;font-weight:820}.wildfire-cover-inner>span{color:var(--text-muted);font-size:.78rem;font-weight:760}.wildfire-cover-samples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.wildfire-cover-samples figure{margin:0;display:grid;gap:.45rem}.wildfire-cover-samples img{width:100%;aspect-ratio:4 / 3;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);object-fit:cover}.wildfire-cover-samples figcaption{color:var(--text-muted);font-size:.78rem;font-weight:740;text-align:center}.security-cover{position:relative;display:grid;place-items:center;overflow:hidden;width:100%;aspect-ratio:16 / 10;border-bottom:1px solid var(--border);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 88%),transparent 48%),var(--bg-soft);padding:clamp(1rem,3vw,1.35rem)}.project-card-featured .security-cover{height:100%;min-height:360px;border-right:1px solid var(--border);border-bottom:0;aspect-ratio:auto}.security-cover-inner{position:relative;z-index:1;width:min(100%,520px);display:grid;gap:.8rem;border:1px solid color-mix(in srgb,var(--accent),var(--border) 35%);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-elevated),transparent 8%);padding:clamp(.9rem,3vw,1.2rem);box-shadow:0 16px 42px #1f2c4714}.security-cover-inner p,.security-cover-inner>span{margin:0;text-align:center;text-transform:uppercase}.security-cover-inner p{color:var(--accent-strong);font-size:.78rem;font-weight:820}.security-cover-inner>span{color:var(--text-muted);font-size:.78rem;font-weight:760}.security-cover-flow{display:grid;gap:.35rem}.security-cover-node-group{display:grid;gap:.25rem;justify-items:center}.security-cover-node{width:100%;min-height:44px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);padding:.62rem .7rem;font-size:.86rem;font-weight:760;text-align:center}.security-cover-arrow{color:var(--accent-strong);font-weight:820;transform:rotate(90deg)}.project-image-placeholder{position:relative;display:grid;place-items:center;overflow:hidden;border-bottom:1px solid var(--border);background:var(--bg-soft);color:var(--text-muted);text-align:center;font-weight:760;padding:1rem}.project-image-placeholder.workflow{place-items:stretch;align-items:center}.project-card-featured .project-image-placeholder{border-right:1px solid var(--border);border-bottom:0}.placeholder-grid{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent),transparent 90%) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--accent),transparent 90%) 1px,transparent 1px);background-size:24px 24px;opacity:.55}.project-image-placeholder>span{position:relative;z-index:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--bg-elevated),transparent 12%);padding:.55rem .75rem}.workflow-placeholder-card{position:relative;z-index:1;width:min(100%,540px);margin:0 auto;display:grid;gap:.9rem;border:1px solid color-mix(in srgb,var(--accent),var(--border) 36%);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-elevated),transparent 8%);padding:clamp(.9rem,3vw,1.25rem);text-align:left;box-shadow:0 16px 42px #1f2c4714}.workflow-placeholder-label{color:var(--accent-strong);font-size:.82rem;font-weight:820;text-transform:uppercase}.workflow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.workflow-steps span,.workflow-output span{display:block;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-soft);color:var(--text-muted);padding:.62rem .7rem;font-size:.88rem;font-weight:700}.workflow-output{display:grid;gap:.45rem;border:1px solid color-mix(in srgb,var(--accent),var(--border) 48%);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text),transparent 94%);padding:.7rem;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace}.workflow-output span{border:0;background:transparent;padding:0;font-size:.82rem;font-weight:650}.project-card-content{display:flex;flex-direction:column;gap:.95rem;padding:clamp(1rem,3vw,1.5rem)}.project-title-row{display:flex;justify-content:space-between;gap:1rem}.project-status{margin-bottom:.35rem;color:var(--accent-strong);font-size:.82rem;font-weight:820;text-transform:uppercase}.project-title-row h3,.project-card h3{margin-bottom:0;font-size:clamp(1.35rem,2.6vw,2rem)}.project-badge{align-self:start;flex:0 0 auto;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent),var(--border) 40%);background:var(--accent-soft);color:var(--accent-strong);padding:.35rem .6rem;font-size:.78rem;font-weight:800;white-space:nowrap}.featured-pill{background:var(--accent-soft)}.project-subtitle{margin:-.45rem 0 0;color:var(--text-muted);font-weight:690}.project-description{color:var(--text-muted)}.project-actions{flex-wrap:wrap;gap:.7rem;margin-top:auto}.education-card{display:grid;grid-template-columns:minmax(260px,.65fr) minmax(0,1fr);gap:clamp(1rem,4vw,2rem);padding:clamp(1.2rem,3vw,1.6rem)}.degree{margin-bottom:.35rem;color:var(--text-muted);font-weight:740}.education-main h3{margin-bottom:1rem;font-size:1.45rem}.education-meta{display:grid;gap:.45rem;color:var(--text-muted)}.coursework h4{margin-bottom:.8rem}.experience-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.experience-card{display:flex;flex-direction:column;gap:.85rem;padding:1.1rem}.experience-heading{display:flex;justify-content:space-between;gap:.9rem}.experience-heading h3{margin-bottom:.2rem;font-size:1.1rem}.experience-heading p,.experience-heading span,.experience-card>p{color:var(--text-muted)}.experience-heading span{flex:0 0 auto;font-size:.9rem;font-weight:720}.experience-card>p{margin-bottom:0}.languages-section{padding-top:24px}.language-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.language-card{padding:1.1rem}.language-card h3{margin-bottom:.3rem}.language-card p{margin:0;color:var(--text-muted)}.contact-section{padding-top:72px}.contact-card{display:grid;gap:1.4rem;padding:clamp(1.2rem,4vw,2rem)}.contact-card h2{margin-bottom:.7rem;font-size:clamp(2rem,4vw,3rem)}.contact-card p{max-width:760px;color:var(--text-muted)}.contact-actions{flex-wrap:wrap;gap:.8rem}.contact-links{display:grid;gap:.45rem;color:var(--text-muted)}.contact-links a{width:fit-content;color:var(--text);font-weight:650;overflow-wrap:anywhere}.contact-links span{overflow-wrap:anywhere}.contact-icon-links{margin-top:.2rem}.site-footer{width:min(var(--max-width),calc(100% - 32px));margin:0 auto;padding:2rem 0;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-top:1px solid var(--border);color:var(--text-muted)}.site-footer p{margin:0}.footer-links{gap:1rem;flex-wrap:wrap;justify-content:flex-end}.footer-links a:hover{color:var(--accent-strong)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;overflow:auto;background:#050910a3;padding:1rem}.project-modal{position:relative;width:min(920px,100%);max-height:min(880px,calc(100vh - 32px));overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);padding:clamp(1rem,3vw,1.5rem)}.project-modal-wide{width:min(1120px,100%)}.modal-close{position:absolute;right:1rem;top:1rem}.modal-header{padding-right:3.5rem}.modal-header h3{margin-bottom:.45rem;font-size:clamp(1.8rem,4vw,2.7rem)}.modal-header p:last-child{color:var(--text-muted)}.modal-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.4rem 0}.modal-section{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:1rem}.modal-section h4{margin-bottom:.6rem}.modal-section p{margin-bottom:0;color:var(--text-muted)}.modal-list{display:grid;gap:.45rem;color:var(--text-muted)}.modal-list li{position:relative;padding-left:1.05rem}.modal-list li:before{content:"";position:absolute;left:0;top:.7em;width:5px;height:5px;border-radius:999px;background:var(--accent)}.modal-screenshots{grid-column:1 / -1}.screenshot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.screenshot-grid .project-image-placeholder,.screenshot-grid .project-image{border:1px solid var(--border);border-radius:var(--radius-sm)}.modal-actions{flex-wrap:wrap;gap:.7rem}.bounce-case-study{display:grid;gap:1rem;margin:1.4rem 0}.bounce-detail-section{display:grid;gap:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:clamp(1rem,3vw,1.2rem)}.bounce-detail-section h4,.bounce-detail-section h5,.bounce-detail-section p{margin:0}.bounce-detail-section p,.bounce-screenshot-card figcaption span,.bounce-feature-card p{color:var(--text-muted)}.bounce-overview-section{border-color:color-mix(in srgb,var(--accent),var(--border) 52%);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 94%),transparent 52%),var(--bg)}.bounce-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.bounce-flow-step-group{display:inline-flex;align-items:center;gap:.55rem}.bounce-flow-step{min-width:148px;min-height:64px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.7rem;color:var(--text);font-size:.9rem;font-weight:740;text-align:center}.bounce-flow-step-group>span{color:var(--accent-strong);font-weight:800}.bounce-screenshot-card{margin:0;display:grid;gap:.65rem}.bounce-screenshot-button{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.75rem;cursor:zoom-in}.bounce-screenshot-button:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%)}.bounce-screenshot-button img{width:100%;max-height:520px;object-fit:contain}.bounce-screenshot-card.large .bounce-screenshot-button img{max-height:680px}.bounce-screenshot-card figcaption{display:grid;gap:.25rem}.bounce-screenshot-card figcaption strong{color:var(--text)}.bounce-highlight-section{border-color:color-mix(in srgb,var(--warning-text),var(--border) 62%);background:linear-gradient(135deg,color-mix(in srgb,var(--warning-soft),transparent 48%),transparent 50%),var(--bg)}.bounce-detail-list{display:grid;gap:.6rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.bounce-detail-list h5,.bounce-feature-card h5,.bounce-tech-group h5{color:var(--text);font-size:.95rem}.bounce-feature-grid,.bounce-tech-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.bounce-feature-card,.bounce-tech-group{display:grid;gap:.55rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.bounce-feature-card p{font-size:.92rem}.bounce-architecture{display:grid;gap:.9rem}.bounce-architecture-main{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.bounce-architecture-node-group{display:inline-flex;align-items:center;gap:.55rem}.bounce-architecture-node{min-width:148px;min-height:64px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.7rem;color:var(--text);font-weight:740;text-align:center}.bounce-architecture-node-group>span{color:var(--accent-strong);font-weight:800}.bounce-architecture-integrations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.bounce-architecture-node.integration{border-color:color-mix(in srgb,var(--accent),var(--border) 45%);background:var(--accent-soft);color:var(--accent-strong)}.jet-case-study{display:grid;gap:1rem;margin:1.4rem 0}.jet-detail-section{display:grid;gap:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:clamp(1rem,3vw,1.2rem)}.jet-detail-section h4,.jet-detail-section h5,.jet-detail-section p{margin:0}.jet-detail-section p,.jet-graph-card figcaption span{color:var(--text-muted)}.jet-overview-section{border-color:color-mix(in srgb,var(--accent),var(--border) 52%);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 94%),transparent 52%),var(--bg)}.jet-section-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.jet-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.jet-flow-step-group{display:inline-flex;align-items:center;gap:.55rem}.jet-flow-step{min-width:142px;min-height:64px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.7rem;color:var(--text);font-size:.9rem;font-weight:740;text-align:center}.jet-flow-step-group>span{color:var(--accent-strong);font-weight:800}.jet-graph-card{margin:0;display:grid;gap:.65rem}.jet-graph-button{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.8rem;cursor:zoom-in}.jet-graph-button:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%)}.jet-graph-button img{width:100%;max-height:540px;object-fit:contain}.jet-graph-card.large .jet-graph-button img{max-height:660px}.jet-graph-card figcaption{display:grid;gap:.25rem}.jet-graph-card figcaption strong{color:var(--text)}.jet-highlight-section{border-color:color-mix(in srgb,var(--warning-text),var(--border) 62%);background:linear-gradient(135deg,color-mix(in srgb,var(--warning-soft),transparent 48%),transparent 50%),var(--bg)}.jet-detail-list{display:grid;gap:.6rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.jet-tech-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.jet-tech-group{display:grid;gap:.55rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.jet-tech-group h5,.jet-detail-list h5{color:var(--text);font-size:.95rem}.wildfire-case-study{display:grid;gap:1rem;margin:1.4rem 0}.wildfire-detail-section{display:grid;gap:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:clamp(1rem,3vw,1.2rem)}.wildfire-detail-section h4,.wildfire-detail-section p{margin:0}.wildfire-detail-section p,.wildfire-graph-card figcaption span,.wildfire-section-intro p{color:var(--text-muted)}.wildfire-overview-section{border-color:color-mix(in srgb,var(--accent),var(--border) 52%);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 94%),transparent 52%),var(--bg)}.wildfire-dataset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}.wildfire-sample-card,.wildfire-graph-card{margin:0;display:grid;gap:.65rem}.wildfire-sample-card img{width:100%;height:clamp(220px,30vw,320px);border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;object-fit:contain}.wildfire-sample-card figcaption,.wildfire-graph-card figcaption{color:var(--text-muted);font-size:.9rem;font-weight:700}.cnn-pipeline{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.cnn-step-group{display:inline-flex;align-items:center;gap:.55rem}.cnn-step{min-width:112px;max-width:164px;min-height:74px;display:grid;align-content:center;gap:.25rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.65rem}.cnn-step strong{color:var(--text);font-size:.88rem}.cnn-step span{color:var(--text-muted);font-size:.78rem;line-height:1.35}.cnn-arrow{color:var(--accent-strong);font-weight:800}.classification-results-section{border-color:color-mix(in srgb,var(--accent),var(--border) 48%)}.accuracy-result-card{width:fit-content;min-width:172px;display:grid;gap:.25rem;border:1px solid color-mix(in srgb,var(--accent),var(--border) 38%);border-radius:var(--radius-sm);background:var(--accent-soft);padding:.95rem}.accuracy-result-card strong{color:var(--accent-strong);font-size:2rem;line-height:1}.accuracy-result-card span{color:var(--text);font-weight:780}.accuracy-result-card p{color:var(--text-muted);font-size:.86rem}.wildfire-graph-button{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.8rem;cursor:zoom-in}.wildfire-graph-button:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%)}.wildfire-graph-button img{width:100%;max-height:520px;object-fit:contain}.wildfire-graph-card figcaption{display:grid;gap:.25rem}.wildfire-graph-card figcaption strong{color:var(--text)}.burned-area-section{border-color:color-mix(in srgb,var(--warning-text),var(--border) 64%);background:linear-gradient(135deg,color-mix(in srgb,var(--warning-soft),transparent 45%),transparent 46%),var(--bg)}.wildfire-section-intro{display:grid;gap:.45rem}.image-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:grid;place-items:center;background:#050910c7;padding:1rem}.image-lightbox-panel{position:relative;width:min(1120px,100%);max-height:calc(100vh - 32px);display:grid;gap:.8rem;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);padding:clamp(1rem,3vw,1.3rem)}.image-lightbox-panel img{width:100%;max-height:calc(100vh - 150px);border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;object-fit:contain}.image-lightbox-panel p{margin:0;color:var(--text-muted);font-weight:700}.image-lightbox-close{justify-self:end}.security-case-study{display:grid;gap:1rem;margin:1.4rem 0}.security-detail-section{display:grid;gap:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:clamp(1rem,3vw,1.2rem)}.security-detail-section h4,.security-detail-section h5,.security-detail-section p{margin:0}.security-detail-section p,.security-screenshot-card figcaption span,.security-concept-card p{color:var(--text-muted)}.security-overview-section{border-color:color-mix(in srgb,var(--accent),var(--border) 52%);background:linear-gradient(135deg,color-mix(in srgb,var(--accent),transparent 94%),transparent 52%),var(--bg)}.security-section-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.security-section-heading-row .project-status{margin-bottom:.3rem}.security-lab-note,.security-note{border-left:3px solid color-mix(in srgb,var(--accent),var(--border) 32%);background:color-mix(in srgb,var(--accent),transparent 94%);padding:.75rem .85rem}.security-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.security-flow-step-group{display:inline-flex;align-items:center;gap:.55rem}.security-flow-step{min-width:142px;min-height:64px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.7rem;color:var(--text);font-size:.9rem;font-weight:740;text-align:center}.security-flow-step-group>span,.security-attack-step-group>span{color:var(--accent-strong);font-weight:800}.security-screenshot-card{margin:0;display:grid;gap:.65rem}.security-screenshot-button{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.75rem;cursor:zoom-in}.security-screenshot-button:hover{border-color:color-mix(in srgb,var(--accent),var(--border) 45%)}.security-screenshot-button img{width:100%;max-height:560px;object-fit:contain}.security-screenshot-card.large .security-screenshot-button img{max-height:680px}.security-screenshot-card figcaption{display:grid;gap:.25rem}.security-screenshot-card figcaption strong,.security-concept-card h5,.security-tech-group h5,.security-detail-list h5{color:var(--text)}.security-highlight-section{border-color:color-mix(in srgb,var(--warning-text),var(--border) 62%);background:linear-gradient(135deg,color-mix(in srgb,var(--warning-soft),transparent 48%),transparent 50%),var(--bg)}.security-detail-list{display:grid;gap:.6rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.security-concept-tag{justify-self:start;display:inline-flex;align-items:center;border:1px solid color-mix(in srgb,var(--accent),var(--border) 38%);border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);padding:.25rem .55rem;font-size:.78rem;font-weight:800;white-space:nowrap}.security-attack-chain{display:flex;flex-wrap:wrap;align-items:stretch;gap:.55rem}.security-attack-step-group{flex:1 1 220px;display:inline-flex;align-items:center;gap:.55rem}.security-attack-step{flex:1;width:auto;min-height:82px;display:grid;align-content:center;gap:.25rem;border:1px solid color-mix(in srgb,var(--accent),var(--border) 45%);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.75rem;text-align:center}.security-attack-step span{color:var(--accent-strong);font-size:.78rem;font-weight:820}.security-attack-step strong{color:var(--text);font-size:.9rem}.security-concept-grid,.security-tech-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.security-tech-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.security-concept-card,.security-tech-group{display:grid;gap:.55rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);padding:.9rem}.security-concept-card p{font-size:.92rem}.security-repository-link{justify-self:start}@media (max-width: 1020px){.hero{grid-template-columns:1fr;padding-top:72px;padding-bottom:72px}.hero-visual{justify-self:stretch;width:100%}.project-card-featured{grid-template-columns:1fr}.project-card-featured .project-image,.project-card-featured .security-cover,.project-card-featured .project-image-placeholder{min-height:280px}.project-card-featured .security-cover,.project-card-featured .project-image-placeholder{border-right:0;border-bottom:1px solid var(--border)}.cnn-pipeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.cnn-step-group{display:grid;gap:.35rem}.cnn-step{min-width:0;max-width:none}.cnn-arrow{display:none}.skills-grid,.experience-list,.bounce-feature-grid,.bounce-tech-grid,.jet-tech-grid,.security-concept-grid,.security-tech-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bounce-flow,.bounce-architecture-main,.jet-flow,.security-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.bounce-flow-step-group,.bounce-architecture-node-group,.jet-flow-step-group,.security-flow-step-group{display:grid;gap:.35rem}.bounce-flow-step,.bounce-architecture-node,.jet-flow-step,.security-flow-step{min-width:0}.bounce-flow-step-group>span,.bounce-architecture-node-group>span,.jet-flow-step-group>span,.security-flow-step-group>span{display:none}}@media (max-width: 840px){html{scroll-padding-top:82px}.navbar{min-height:68px}.menu-toggle{display:inline-flex}.nav-panel{position:fixed;left:16px;right:16px;top:78px;display:grid;justify-items:stretch;gap:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);padding:1rem;opacity:0;pointer-events:none;transform:translateY(-8px);transition:opacity .16s ease,transform .16s ease}.nav-panel.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-links,.nav-actions,.social-actions{align-items:stretch}.nav-links{display:grid;gap:.2rem}.nav-links a{justify-content:center;padding:.8rem}.nav-actions{display:grid}.social-actions{justify-content:center}.section{padding:72px 0}.hero{min-height:auto}.two-column,.education-card,.projects-grid,.skills-grid,.experience-list,.language-grid,.modal-body,.screenshot-grid,.wildfire-dataset-grid{grid-template-columns:1fr}.cnn-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.bounce-flow,.bounce-architecture-main,.jet-flow,.security-flow,.bounce-feature-grid,.bounce-tech-grid,.jet-tech-grid,.security-concept-grid,.security-tech-grid,.bounce-architecture-integrations{grid-template-columns:1fr}.bounce-flow-step-group>span,.bounce-architecture-node-group>span,.jet-flow-step-group>span,.security-flow-step-group>span,.security-attack-step-group>span{display:block;justify-self:center;transform:rotate(90deg)}.security-attack-chain{display:grid;grid-template-columns:1fr}.security-attack-step-group{display:grid;gap:.35rem}.project-title-row,.security-section-heading-row,.experience-heading,.site-footer{flex-direction:column;align-items:flex-start}.footer-links{justify-content:flex-start}}@media (max-width: 560px){.section-inner,.hero,.navbar,.site-footer{width:min(100% - 24px,var(--max-width))}.hero-actions,.project-actions,.contact-actions{align-items:stretch}.hero-actions .button,.project-actions .button,.contact-actions .button{width:100%}.profile-facts div{grid-template-columns:1fr;gap:.15rem}.project-card-featured .project-image,.project-card-featured .security-cover,.project-card-featured .project-image-placeholder{min-height:220px}.workflow-steps{grid-template-columns:1fr}.wildfire-cover-samples{gap:.5rem}.cnn-pipeline{grid-template-columns:1fr}.bounce-screenshot-button{padding:.45rem}.project-modal{max-height:calc(100vh - 24px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
