:root{--bg-color:#fafafa;--text-primary:#000;--text-secondary:#666;--border-color:#e6e6e6;--dock-bg:#fff9;--dock-border:#0000000d;--hover-bg:#0000000d;--dock-icon:#333;--link-hover:#000;--card-shadow:0 4px 30px #00000008;--card-border-hover:#00000026;--btn-main-bg:#000;--btn-main-text:#fff;--btn-sec-border:#00000014;--btn-sec-bg:#00000008;--tooltip-bg:#000;--tooltip-text:#fff}[data-theme=dark]{--bg-color:#0a0a0a;--text-primary:#fff;--text-secondary:#a1a1aa;--border-color:#333;--dock-bg:#0a0a0a99;--dock-border:#ffffff1a;--hover-bg:#ffffff1a;--dock-icon:#ccc;--link-hover:#fff;--card-shadow:0 4px 30px #0003;--card-border-hover:#fff3;--btn-main-bg:#fff;--btn-main-text:#0a0a0a;--btn-sec-border:#ffffff1a;--btn-sec-bg:#ffffff0d;--tooltip-bg:#fff;--tooltip-text:#0a0a0a}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--bg-color);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,sans-serif;line-height:1.6;transition:background-color .3s,color .3s;overflow-x:hidden}.container{max-width:720px;margin:0 auto;padding:100px 20px 110px}h1,h2,h3,h4{letter-spacing:-.01em;font-weight:600}a{color:inherit;text-decoration:none}.underline-link{text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--text-secondary);text-decoration-color:var(--text-secondary);text-underline-offset:4px;transition:color .2s,text-decoration-color .2s}.underline-link:hover{color:var(--link-hover);text-decoration-thickness:2px;-webkit-text-decoration-color:var(--link-hover);text-decoration-color:var(--link-hover)}.section{margin-bottom:90px}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:30px;font-size:.75rem;font-weight:600}.theme-switch{-webkit-backdrop-filter:blur(12px);cursor:pointer;z-index:1000;box-sizing:border-box;background:#f3f4f6cc;border:1px solid #0000000d;border-radius:30px;align-items:center;width:64px;height:32px;padding:0;transition:background .3s;display:flex;position:fixed;top:24px;right:24px}[data-theme=dark] .theme-switch{background:#fff;border-color:#ffffff1a}.switch-handle{z-index:1;background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .3s cubic-bezier(.4,0,.2,1),background .3s;position:absolute;left:4px;box-shadow:0 2px 4px #0000001a}[data-theme=dark] .switch-handle{background:#111827;transform:translate(32px)}.theme-switch svg{z-index:2;pointer-events:none;width:14px;height:14px;transition:opacity .3s,color .3s;position:absolute}.icon-sun{color:#eab308;left:9px}[data-theme=dark] .icon-sun{opacity:0}.icon-moon{color:#fff;opacity:0;right:9px}[data-theme=dark] .icon-moon{opacity:1}.hero{text-align:center;margin-top:0}.profile-pic{width:350px;max-width:100%;margin:-15px auto 5px;transform:translate(-30px);-webkit-mask-image:linear-gradient(#000 80%,#0000 100%);mask-image:linear-gradient(#000 80%,#0000 100%)}.profile-pic img{filter:grayscale()contrast(1.05);width:100%;height:auto;display:block}.name{letter-spacing:-.04em;color:var(--text-primary);margin-bottom:12px;font-size:5rem;font-weight:800;line-height:1.1;transition:color 2s}.metadata{color:var(--text-secondary);justify-content:center;align-items:center;gap:12px;margin-bottom:40px;font-size:.95rem;display:flex}.dot{opacity:.5;font-size:.8rem}.bio p{color:var(--text-secondary);max-width:600px;margin-bottom:24px;margin-left:auto;margin-right:auto;font-size:1.15rem;line-height:1.7}.floating-dock{background:var(--dock-bg);border:1px solid var(--dock-border);-webkit-backdrop-filter:blur(20px);z-index:1000;border-radius:40px;align-items:center;gap:8px;padding:10px 15px;display:flex;position:fixed;bottom:30px;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #00000014}.dock-divider{background:var(--border-color);width:1px;height:24px;margin:0 4px}.dock-item{color:var(--dock-icon);border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:all .2s cubic-bezier(.25,.46,.45,.94);display:flex;position:relative}.dock-item svg{width:20px;height:20px;transition:transform .2s}.dock-item:hover{background:var(--hover-bg);color:var(--text-primary);z-index:10;transform:scale(1.15)translateY(-5px)}.reveal-hidden{opacity:0;transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1);transform:translateY(20px)}.reveal-visible{opacity:1;transform:translateY(0)}.experience-item{border-bottom:1px solid var(--border-color);margin-bottom:40px;padding-bottom:40px}.experience-item:last-child{border-bottom:none;padding-bottom:0}.experience-header{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.title-company h3{margin-bottom:4px;font-size:1.1rem;font-weight:600}.role{color:var(--text-secondary);font-size:.95rem}.location-date{text-align:right;color:var(--text-secondary);font-size:.9rem;line-height:1.4}.exp-desc{color:var(--text-secondary);margin-top:15px;font-size:1rem;line-height:1.6}.view-more-btn{color:var(--text-primary);cursor:pointer;background:0 0;background:var(--hover-bg);border:none;border-radius:20px;align-items:center;gap:6px;margin-top:15px;padding:6px 12px;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.view-more-btn:hover{background:var(--border-color)}.view-more-btn svg{width:14px;height:14px;transition:transform .2s}.view-more-btn.open svg{transform:rotate(180deg)}.exp-details{margin-top:20px;padding-left:20px;display:none}.exp-details li{color:var(--text-secondary);margin-bottom:10px;font-size:.95rem}.exp-details li::marker{color:var(--text-primary)}.projects-grid-v2{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;display:grid}.project-card-v2{flex-direction:column;width:100%;display:flex}.project-extra-v2[hidden]{display:none}.project-canvas-v2{aspect-ratio:16/10;background:var(--btn-sec-bg);border:1px solid var(--border-color);width:100%;box-shadow:var(--card-shadow);border-radius:32px;transition:all .7s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden}.project-canvas-v2:hover{border-color:var(--card-border-hover)}.project-glow-v2{opacity:0;filter:blur(48px);pointer-events:none;background:radial-gradient(circle at 50% 50%, var(--glow-color), transparent 70%);z-index:1;transition:opacity 1s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.project-card-v2:hover .project-glow-v2{opacity:1}.browser-mockup-v2{background:var(--bg-color);border:1px solid var(--border-color);z-index:2;border-bottom:none;border-radius:16px 16px 0 0;flex-direction:column;transition:transform .7s cubic-bezier(.22,1,.36,1);display:flex;position:absolute;inset:24px 24px 0;overflow:hidden;box-shadow:0 10px 30px #00000014}.project-card-v2:hover .browser-mockup-v2{transform:translateY(8px)scale(1.02)}.browser-header-v2{background:var(--btn-sec-bg);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid #00000008;flex-shrink:0;align-items:center;gap:6px;height:32px;padding:0 16px;display:flex}[data-theme=dark] .browser-header-v2{border-bottom:1px solid #ffffff08}.browser-dot-v2{opacity:.25;border-radius:50%;width:8px;height:8px}.browser-dot-v2.red{background-color:#ef4444}.browser-dot-v2.amber{background-color:#f59e0b}.browser-dot-v2.emerald{background-color:#10b981}.browser-body-v2{background:var(--bg-color);flex-grow:1;position:relative;overflow:hidden}.browser-body-v2 img{object-fit:cover;object-position:top;filter:grayscale();width:100%;height:100%;transition:filter .3s,transform .7s cubic-bezier(.22,1,.36,1)}.project-card-v2:hover .browser-body-v2 img{filter:grayscale(0);transform:scale(1.02)}.browser-overlay-v2{opacity:0;pointer-events:none;background:linear-gradient(#0000 50%,#00000026 100%);transition:opacity .7s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.project-card-v2:hover .browser-overlay-v2{opacity:1}.project-info-v2{flex-direction:column;gap:12px;padding:24px 8px 0;display:flex}.info-header-v2{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.title-wrap-v2{flex-direction:column;gap:4px;display:flex}.project-title-v2{color:var(--text-primary);font-size:1.25rem;font-weight:600;line-height:1.2}.project-subtitle-v2{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-size:.75rem;font-weight:500}.project-actions-v2{align-items:center;gap:8px;display:flex}.action-btn-v2{border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;transition:all .2s cubic-bezier(.25,.46,.45,.94);display:inline-flex}.action-btn-v2.primary{background-color:var(--btn-main-bg);color:var(--btn-main-text);box-shadow:0 4px 12px #00000014}.action-btn-v2.primary:hover{transform:scale(1.08)translateY(-2px);box-shadow:0 6px 16px #00000026}.action-btn-v2.primary:active{transform:scale(.96)translateY(0)}.action-btn-v2.secondary{border:1px solid var(--btn-sec-border);color:var(--text-secondary);background-color:#0000}.action-btn-v2.secondary:hover{background-color:var(--btn-sec-bg);color:var(--text-primary);border-color:var(--text-primary);transform:translateY(-2px)}.action-btn-v2 svg{width:18px;height:18px;transition:transform .2s}.projects-toggle-v2{border:1px solid var(--btn-sec-border);background:var(--btn-sec-bg);min-width:132px;height:38px;color:var(--text-primary);cursor:pointer;font:inherit;border-radius:999px;justify-content:center;align-items:center;gap:8px;margin:34px auto 0;font-size:.82rem;font-weight:600;transition:background .2s,border-color .2s,transform .2s;display:flex}.projects-toggle-v2:hover{background:var(--hover-bg);border-color:var(--text-primary);transform:translateY(-2px)}.projects-toggle-v2 svg{width:15px;height:15px;transition:transform .2s}.projects-toggle-v2.open svg{transform:rotate(180deg)}.project-desc-v2{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.9rem;line-height:1.6;display:-webkit-box;overflow:hidden}.project-details-v2{color:var(--text-secondary);margin-top:12px;margin-bottom:4px;font-size:.9rem;line-height:1.6;display:none}ul.project-details-v2{padding-left:20px}.project-details-v2 li{margin-bottom:8px;list-style-type:disc}.project-details-v2 li::marker{color:var(--text-primary)}.tech-stack-v2{align-items:center;margin-top:4px;display:flex}.tech-overlap-v2{align-items:center;margin-left:0;transition:all .3s;display:flex}.tech-overlap-v2 .tech-icon-wrap-v2{margin-left:-8px;transition:margin-left .3s,transform .2s}.tech-overlap-v2 .tech-icon-wrap-v2:first-child{margin-left:0}.tech-overlap-v2:hover .tech-icon-wrap-v2{margin-left:4px}.tech-overlap-v2:hover .tech-icon-wrap-v2:first-child{margin-left:0}.tech-icon-wrap-v2{background-color:var(--bg-color);border:1.5px solid var(--border-color);z-index:1;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex;position:relative;box-shadow:0 2px 6px #0000000a}.tech-icon-wrap-v2:hover{border-color:var(--text-primary);z-index:10;transform:scale(1.15)translateY(-3px)}.tech-icon-wrap-v2 img{object-fit:contain;filter:grayscale();width:18px;height:18px;transition:filter .2s}.tech-overlap-v2:hover .tech-icon-wrap-v2 img,.tech-icon-wrap-v2:hover img{filter:grayscale(0)}.aws-logo-v2{--aws-word:#3f3f46;--aws-smile:#3f3f46;opacity:.9;transition:opacity .2s,transform .2s;display:block}[data-theme=dark] .aws-logo-v2{--aws-word:#e4e4e7;--aws-smile:#e4e4e7}.aws-logo-project-v2{width:26px;height:20px}.tech-overlap-v2:hover .aws-logo-v2,.aws-tech-icon-v2:hover .aws-logo-v2{--aws-word:#232f3e;--aws-smile:#f90;opacity:1}[data-theme=dark] .tech-overlap-v2:hover .aws-logo-v2,[data-theme=dark] .aws-tech-icon-v2:hover .aws-logo-v2{--aws-word:#fff;--aws-smile:#f90}.tech-tooltip-v2{background-color:var(--tooltip-bg);color:var(--tooltip-text);white-space:nowrap;opacity:0;pointer-events:none;letter-spacing:.05em;text-transform:uppercase;z-index:99;border-radius:6px;padding:4px 8px;font-size:.65rem;font-weight:700;transition:opacity .2s,transform .2s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 4px 10px #00000026}.tech-tooltip-v2:after{content:"";border-style:solid;border-width:4px;border-color:var(--tooltip-bg) transparent transparent transparent;position:absolute;top:100%;left:50%;transform:translate(-50%)}.tech-icon-wrap-v2:hover .tech-tooltip-v2{opacity:1;transform:translate(-50%)translateY(0)}.education-item{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 0;display:flex}.education-item:last-child{border-bottom:none}.edu-details h3{margin-bottom:4px;font-size:1.1rem}.edu-details p{color:var(--text-secondary);font-size:.95rem}.tech-stack{margin-top:10px}.stack-copy{color:var(--text-secondary);max-width:760px;margin-bottom:28px;font-size:1rem;line-height:1.75}.stack-toggle{width:100%;color:var(--text-primary);font:inherit;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;justify-content:flex-end;align-items:center;gap:8px;padding:0;font-size:10px;font-weight:600;transition:opacity .2s;display:flex}.stack-toggle:after{content:"⌄";font-size:.7rem;transition:transform .35s}.stack-toggle:hover{opacity:.82}.stack-toggle.open:after{transform:rotate(180deg)}.stack-preview{opacity:1;max-height:96px;margin-top:24px;transition:opacity .25s,max-height .25s,margin-top .25s;overflow:hidden}.stack-preview.is-hidden{opacity:0;max-height:0;margin-top:0}.stack-preview-mask{margin-inline:-18px;padding-inline:18px;position:relative;overflow:hidden}.stack-preview-mask:before,.stack-preview-mask:after{content:"";pointer-events:none;z-index:2;width:72px;position:absolute;top:0;bottom:0}.stack-preview-mask:before{background:linear-gradient(90deg, var(--bg-color), transparent);left:0}.stack-preview-mask:after{background:linear-gradient(270deg, var(--bg-color), transparent);right:0}.stack-preview-track{align-items:center;gap:64px;width:max-content;animation:30s linear infinite stack-preview-marquee;display:flex}.stack-preview-icon{opacity:1;flex:none;justify-content:center;align-items:center;width:46px;height:46px;transition:transform .2s,opacity .2s;display:flex}.stack-preview-icon img{filter:grayscale()brightness(.22)contrast(1.15);opacity:1;width:46px;height:46px;transition:filter .2s,opacity .2s,transform .2s;display:block}.aws-logo-stack-v2{width:46px;height:34px}.stack-preview-icon:hover{opacity:1;transform:translateY(-1px)}.stack-preview-icon:hover img{filter:grayscale(0)brightness()contrast();opacity:1;transform:scale(1.05)}.stack-preview-icon:hover .aws-logo-stack-v2{--aws-word:#232f3e;--aws-smile:#f90;opacity:1;transform:scale(1.05)}[data-theme=dark] .stack-preview-icon img{filter:grayscale()brightness(2.35)contrast(1.2)}[data-theme=dark] .stack-preview-icon:hover img{filter:grayscale(0)brightness()contrast()}[data-theme=dark] .stack-preview-icon:hover .aws-logo-stack-v2{--aws-word:#fff;--aws-smile:#f90}.full-stack-panel{opacity:0;max-height:0;transition:max-height .75s cubic-bezier(.16,1,.3,1),opacity .35s,margin-top .35s;overflow:hidden}.full-stack-panel.is-open{opacity:1;max-height:1800px;margin-top:34px}.stack-spec-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:42px 34px;display:grid}.stack-spec-column{min-width:0}.stack-spec-column h3{border-bottom:1px solid var(--border-color);color:var(--text-secondary);letter-spacing:.16em;text-transform:uppercase;margin:0 0 18px;padding-bottom:11px;font-size:.59rem;font-weight:600}.stack-spec-list{flex-direction:column;gap:18px;display:flex}.stack-spec-item{color:var(--text-secondary);border:1px solid #0000;border-radius:12px;align-items:center;gap:14px;padding:8px 10px;font-size:.86rem;line-height:1.2;transition:color .2s;display:flex}.stack-spec-item img{opacity:.76;filter:grayscale()brightness(.24)contrast(1.12);flex:none;width:22px;height:22px;transition:filter .2s,opacity .2s,transform .2s;display:block}.aws-logo-spec-v2{opacity:.76;flex:none;width:24px;height:18px}.stack-spec-item span{white-space:nowrap}.stack-spec-item:hover{color:var(--text-primary);border-color:var(--border-color);background:color-mix(in srgb, var(--dock-bg) 80%, transparent)}.stack-spec-item:hover img{filter:grayscale(0);opacity:1;transform:scale(1.04)}.stack-spec-item:hover .aws-logo-spec-v2{--aws-word:#232f3e;--aws-smile:#f90;opacity:1;transform:scale(1.04)}[data-theme=dark] .stack-spec-item img{filter:grayscale()brightness(1.9)contrast(1.08)}[data-theme=dark] .stack-spec-item:hover img{filter:grayscale(0)brightness()contrast();opacity:1;transform:scale(1.04)}[data-theme=dark] .stack-spec-item:hover .aws-logo-spec-v2{--aws-word:#fff;--aws-smile:#f90}.stack-spec-column:nth-child(4){grid-column:1}.stack-spec-column:nth-child(5){grid-column:2}.about-me{margin-bottom:0;padding-top:8px}.about-copy{max-width:940px;color:var(--text-secondary);flex-direction:column;gap:28px;font-size:1.02rem;line-height:1.78;display:flex}.contact-cta{border-top:1px solid var(--border-color);margin-top:0;margin-bottom:0;padding-top:72px}.contact-cta-copy{color:var(--text-secondary);font-size:1.02rem;line-height:1.7}.contact-inline-link{color:var(--text-primary);text-underline-offset:5px;margin:0 .32rem;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.contact-inline-link:hover{opacity:.8}@keyframes stack-preview-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (width<=600px){.projects-grid-v2{grid-template-columns:1fr;gap:32px}.project-canvas-v2{border-radius:24px}.browser-mockup-v2{top:16px;left:16px;right:16px}.browser-header-v2{height:28px;padding:0 12px}.project-info-v2{padding:16px 4px 0}.project-title-v2{font-size:1.15rem}.experience-header{flex-direction:column;gap:8px}.location-date{text-align:left}.name{font-size:3.2rem}.metadata{flex-wrap:wrap}.floating-dock{gap:4px;padding:8px}.dock-item{width:38px;height:38px}.dock-item svg{width:18px;height:18px}.full-stack-panel.is-open{max-height:2400px}.stack-copy{font-size:.98rem;line-height:1.65}.stack-toggle{justify-content:flex-start;margin-top:4px}.stack-preview-track{gap:40px}.stack-preview-icon,.stack-preview-icon img{width:38px;height:38px}.stack-spec-grid{grid-template-columns:1fr;row-gap:28px}.stack-spec-column:nth-child(4),.stack-spec-column:nth-child(5){grid-column:auto}.stack-spec-item{font-size:.94rem}.about-copy,.contact-cta-copy{font-size:.98rem;line-height:1.7}.contact-cta{padding-top:56px}}.contact-cta{border:1px solid var(--border-color);background:color-mix(in srgb, var(--dock-bg) 60%, transparent);-webkit-backdrop-filter:blur(12px);box-shadow:var(--card-shadow);border-radius:22px;margin-top:56px;padding:56px 32px;transition:border-color .4s,box-shadow .4s;position:relative;overflow:hidden}.contact-cta:hover{border-color:var(--card-border-hover);box-shadow:0 20px 60px #0000001a}.contact-inline-link{transition:opacity .2s,color .3s,text-decoration-color .3s}.contact-inline-link:hover{color:#6366f1;opacity:1;text-decoration-color:#6366f1}@media (width<=600px){.contact-cta{margin-top:40px;padding:44px 22px}}
