:root{color-scheme:dark;--bg: #0b0d10;--fg: rgba(255, 255, 255, 1);--fg-strong: rgba(255, 255, 255, .95);--fg-muted: rgba(255, 255, 255, .85);--fg-subtle: rgba(255, 255, 255, .78);--fg-faint: rgba(255, 255, 255, .72);--fg-border: rgba(255, 255, 255, .14);--focus-ring: #8cb4ff;--focus-ring-offset: 3px;--ease-out: cubic-bezier(.22, 1, .36, 1);--motion-fast: .15s;--motion-base: .25s;--motion-slow: .4s;--radius-sm: 10px;--radius-md: 18px;--radius-lg: 24px;--radius-xl: 36px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}ul,ol{list-style:none}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--fg);height:100%;background:var(--bg);overscroll-behavior:none;scroll-behavior:smooth;scroll-padding-top:80px}:where(a,button,[tabindex]):focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset);border-radius:6px}.skip-link{position:fixed;top:8px;left:8px;padding:10px 14px;background:#000;color:#fff;border-radius:8px;font-size:.85rem;font-weight:500;text-decoration:none;z-index:1000;transform:translateY(-150%);transition:transform var(--motion-base) var(--ease-out)}.skip-link:focus-visible{transform:translateY(0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}html:has(.home){overflow:hidden;overscroll-behavior:none}.home{position:fixed;inset:0;overflow:hidden;background:#0b0d10}#glass-canvas{position:fixed;inset:0!important;width:100%!important;height:100%!important;z-index:0}.home.no-webgl{background:url(/background.jpg) center / cover no-repeat fixed,#0b0d10}.overlay{position:relative;z-index:1;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 40px 120px;gap:28px;overflow:hidden;animation:overlay-fade-in var(--motion-slow) var(--ease-out) 1s both}.home.ready .overlay{animation:overlay-fade-in var(--motion-slow) var(--ease-out) both}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.overlay:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:85%;height:80%;background:radial-gradient(ellipse at center,rgba(0,0,0,.5) 0%,rgba(0,0,0,.48) 5%,rgba(0,0,0,.44) 10%,rgba(0,0,0,.38) 17%,rgba(0,0,0,.3) 25%,rgba(0,0,0,.22) 33%,rgba(0,0,0,.15) 42%,rgba(0,0,0,.09) 52%,rgba(0,0,0,.04) 63%,rgba(0,0,0,.01) 75%,transparent 90%);border-radius:50%;pointer-events:none;z-index:-1}.glass-panel{border-radius:36px;padding:36px 32px;color:#fff;position:relative;background:transparent;border:none}.no-webgl .glass-panel{background:#ffffff1f;backdrop-filter:blur(40px) saturate(1.4);-webkit-backdrop-filter:blur(40px) saturate(1.4);border:1px solid rgba(255,255,255,.18);box-shadow:0 20px 60px #0000004d,inset 0 1px #ffffff26}.cards-row{display:flex;gap:24px;max-width:920px;width:100%;align-items:stretch}.about{flex:1;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;max-width:380px}.avatar-logo{width:72px;height:72px;object-fit:contain;margin-bottom:8px;flex-shrink:0;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}.about h1{font-size:2rem;font-weight:700;letter-spacing:-.02em;line-height:1.1;color:#fff}.role{font-size:1rem;font-weight:400;color:#ffffffd9;margin-top:2px}.tagline{font-size:.85rem;font-weight:300;color:var(--fg-subtle);margin-top:2px}.links{display:flex;margin-top:16px;justify-content:center;width:100%}.social-list{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.social-link{color:var(--fg-muted);text-decoration:none;font-size:.8rem;font-weight:500;letter-spacing:.03em;transition:color var(--motion-base) ease,transform var(--motion-fast) ease;padding:4px 2px}.social-link:hover{color:var(--fg)}.social-link:active{transform:scale(.96)}.experience{flex:1.2;max-width:520px}.experience h2{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--fg-muted);margin-bottom:20px}.job-list{display:flex;flex-direction:column}.job{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08)}.job:last-child{border-bottom:none;padding-bottom:0}.job:first-child{padding-top:0}.job-logo{width:40px;height:40px;border-radius:10px;object-fit:cover;flex-shrink:0;background:#ffffff1a}.job-logo.padded{padding:5px;object-fit:contain;background:#1a2520}.job-info h3{font-size:.95rem;font-weight:600;color:var(--fg-strong);line-height:1.2}.job-role{font-size:.8rem;font-weight:400;color:var(--fg-muted);margin-top:1px}.job-duration{font-size:.72rem;font-weight:400;color:var(--fg-faint);margin-top:2px;display:block}.dock{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:2;max-width:calc(100vw - 24px);padding:20px 28px 14px;border-radius:var(--radius-xl);transition:padding var(--motion-slow) var(--ease-out),border-radius var(--motion-slow) var(--ease-out)}.dock-list{display:flex;align-items:flex-end;justify-content:center;gap:28px;flex-wrap:nowrap}.dock-app{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;transform-origin:center bottom;transition:transform .32s var(--ease-out)}.dock-app:hover{transform:translateY(-2px)}.dock-app:active{transform:translateY(0);transition-duration:.12s}.dock-icon{width:clamp(48px,8vw,72px);height:clamp(48px,8vw,72px);border-radius:16px;object-fit:cover;box-shadow:0 4px 16px #0000004d;transition:box-shadow .32s var(--ease-out)}.dock-app:hover .dock-icon{box-shadow:0 6px 20px #00000061}.dock-label{font-size:.75rem;font-weight:500;color:var(--fg-muted);letter-spacing:.02em;transition:color var(--motion-base) ease}.dock-app:hover .dock-label{color:var(--fg)}@media(max-height:820px)and (min-width:769px){.overlay{padding:24px;gap:20px}.dock{position:static;transform:none;flex-shrink:0}}@media(max-width:768px){html:has(.home){overflow:hidden}.overlay{padding:16px;padding-top:max(16px,env(safe-area-inset-top,16px));padding-bottom:max(16px,env(safe-area-inset-bottom,16px));justify-content:center;gap:12px}.cards-row{flex-direction:column;gap:12px;flex:0 1 auto;min-height:0}.about,.experience{max-width:none}.about{gap:2px}.glass-panel{padding:14px 16px;border-radius:22px}.about h1{font-size:1.4rem}.avatar-logo{width:44px;height:44px;margin-bottom:2px}.role{font-size:.85rem}.tagline{font-size:.75rem}.links{margin-top:6px;gap:12px}.social-link{font-size:.72rem}.experience h2{margin-bottom:8px}.job{gap:10px;padding:6px 0}.job-logo{width:32px;height:32px;border-radius:8px}.job-info h3{font-size:.85rem}.job-role{font-size:.72rem}.job-duration{font-size:.65rem}.dock{position:static;transform:none;padding:12px;width:auto;flex-shrink:0}.dock-list{gap:6px;flex-wrap:nowrap;justify-content:center}.overlay:before{top:45%;width:160%;height:140%;border-radius:50%;background:radial-gradient(ellipse at center,rgba(0,0,0,.7) 0%,rgba(0,0,0,.66) 8%,rgba(0,0,0,.58) 16%,rgba(0,0,0,.48) 25%,rgba(0,0,0,.36) 35%,rgba(0,0,0,.24) 46%,rgba(0,0,0,.14) 58%,rgba(0,0,0,.06) 72%,rgba(0,0,0,.02) 86%,transparent 100%)}.dock-icon{width:clamp(40px,10vw,56px);height:clamp(40px,10vw,56px);border-radius:12px}.dock-label{font-size:clamp(.7rem,2.2vw,.75rem);white-space:nowrap}.dock-app{flex-shrink:1;min-width:0;gap:4px}}@media(max-width:400px){.overlay{padding:max(12px,env(safe-area-inset-top,12px)) 14px max(12px,env(safe-area-inset-bottom,12px));gap:8px}.glass-panel{padding:16px 14px}.about h1{font-size:1.2rem}.avatar-logo{width:40px;height:40px}.dock{padding:10px}.dock-list{gap:6px}.dock-icon{width:36px;height:36px;border-radius:9px}.dock-label{font-size:clamp(.7rem,2.6vw,.72rem)}}@media(max-height:500px)and (orientation:landscape){.overlay{padding:max(6px,env(safe-area-inset-top,6px)) max(16px,env(safe-area-inset-right,16px)) max(6px,env(safe-area-inset-bottom,6px)) max(16px,env(safe-area-inset-left,16px));gap:6px;justify-content:center}.cards-row{flex-direction:row;gap:10px;flex:1 1 auto;min-height:0;max-width:700px}.about,.experience{max-width:none}.glass-panel{padding:8px 12px;border-radius:16px}.about{gap:0}.about h1{font-size:1rem}.avatar-logo{width:30px;height:30px;margin-bottom:2px}.role{font-size:.68rem}.tagline{font-size:.6rem}.links{margin-top:4px;gap:8px}.social-link{font-size:.58rem}.experience h2{margin-bottom:4px;font-size:.6rem}.job{gap:6px;padding:3px 0}.job-logo{width:24px;height:24px;border-radius:6px}.job-info h3{font-size:.7rem}.job-role{font-size:.58rem}.job-duration{font-size:.5rem}.dock{position:static;transform:none;padding:8px 14px;width:auto;flex-shrink:0;border-radius:18px}.dock-list{gap:8px;flex-wrap:nowrap;justify-content:center}.dock-icon{width:clamp(32px,8vh,44px);height:clamp(32px,8vh,44px);border-radius:10px}.dock-label{font-size:clamp(.68rem,1.6vh,.72rem);white-space:nowrap}.dock-app{gap:3px}}html:has(.app-page){background:var(--page-bg, #0b0d10);overflow:auto}.app-page{--accent-h: 215;--accent-s: 40%;--page-bg: #0b0d10;min-height:100vh;overflow-y:auto;overflow-x:hidden;position:relative;z-index:10;color:#fff;background:var(--page-bg)}.app-page:before{content:"";position:fixed;top:-20%;left:50%;transform:translate(-50%);width:100%;height:60%;background:radial-gradient(ellipse at center,hsla(var(--accent-h),var(--accent-s),22%,.12) 0%,hsla(var(--accent-h),var(--accent-s),15%,.04) 40%,transparent 65%);pointer-events:none;z-index:0}.app-container{max-width:620px;margin:0 auto;padding:40px 24px 72px;display:flex;flex-direction:column;gap:16px;position:relative;z-index:1}.back-link{color:#fff6;text-decoration:none;font-size:.82rem;font-weight:500;letter-spacing:.02em;transition:color .25s ease;align-self:flex-start;margin-bottom:4px}.back-link:hover{color:#fffc}.back-link:active{opacity:.7}.app-glass-card{background:hsla(var(--accent-h),var(--accent-s),18%,.06);border:1px solid hsla(var(--accent-h),var(--accent-s),40%,.08);border-radius:18px;padding:24px}.app-hero-card{display:flex;flex-direction:column;gap:16px}.app-hero-top{display:flex;align-items:center;gap:16px}.app-icon-large{width:48px;height:48px;border-radius:13px;object-fit:cover;flex-shrink:0}.app-hero-info{flex:1;min-width:0}.app-title{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;color:#fffffff2;line-height:1.15}.app-tagline{font-size:.8rem;font-weight:400;color:#fff6;margin-top:2px}.app-hero-meta{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:14px;border-top:1px solid hsla(var(--accent-h),var(--accent-s),30%,.07)}.tech-tags{display:flex;flex-wrap:wrap;gap:5px}.tech-tag{background:hsla(var(--accent-h),var(--accent-s),30%,.08);color:#ffffff80;padding:3px 10px;border-radius:100px;font-size:.7rem;font-weight:500;letter-spacing:.02em}.app-action-link{font-size:.78rem;font-weight:500;letter-spacing:.03em;color:#fff6;transition:color .25s ease;white-space:nowrap;flex-shrink:0;display:inline-flex;align-items:center;gap:4px}.app-action-link:after{content:"↗";font-size:.7rem;transition:transform .2s ease}.app-action-link:hover{color:#ffffffd9}.app-action-link:hover:after{transform:translate(1px,-1px)}.app-action-link:active{opacity:.8}.app-story p{font-size:.88rem;line-height:1.7;color:#ffffff80;margin-bottom:12px}.app-story p:last-child{margin-bottom:0;color:#ffffff4d}.app-featured-img,.app-screens-row img{width:100%;display:block;border-radius:14px;border:1px solid hsla(var(--accent-h),var(--accent-s),30%,.08)}.app-detail-grid{display:grid;gap:0}.app-detail-item{display:flex;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid hsla(var(--accent-h),var(--accent-s),25%,.06)}.app-detail-item:last-child{border-bottom:none;padding-bottom:0}.app-detail-item:first-child{padding-top:0}.app-detail-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:#ffffff47;min-width:64px;flex-shrink:0}.app-detail-value{font-size:.86rem;line-height:1.5;color:#fff9}.app-detail-link{color:inherit;text-decoration:none;cursor:pointer;transition:color .25s var(--ease-out)}.app-detail-link:after{content:"↗";display:inline-block;margin-left:.35em;font-size:.78em;vertical-align:baseline;line-height:1;color:hsla(var(--accent-h),var(--accent-s),70%,.7);transition:transform .22s var(--ease-out),color .22s var(--ease-out);will-change:transform}.app-detail-link:hover{color:#ffffffeb}.app-detail-link:hover:after{transform:translate(2px,-2px);color:hsla(var(--accent-h),var(--accent-s),85%,1)}.app-detail-link:active:after{transform:translate(1px,-1px)}.app-screens-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.app-phone-showcase{display:flex;justify-content:center;gap:14px;padding:8px 0}.app-phone-frame{flex:0 0 auto;width:220px;border-radius:24px;overflow:hidden;border:1px solid hsla(var(--accent-h),var(--accent-s),30%,.12);box-shadow:0 12px 40px #0000004d}.app-phone-frame img{width:100%;display:block}@media(max-width:600px){.app-phone-showcase{gap:8px}.app-phone-frame{width:110px;border-radius:14px}}.phone-strip{display:flex;gap:14px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-left:8px;-webkit-overflow-scrolling:touch;padding:12px 8px 20px;margin:0;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-x}.phone-strip::-webkit-scrollbar{display:none}.phone-strip>li{flex:0 0 auto;scroll-snap-align:start;display:block}.phone-strip img{display:block;width:200px;height:auto;border-radius:20px;box-shadow:0 8px 32px #00000038;border:1px solid hsla(var(--accent-h),var(--accent-s),30%,.1);transition:transform .28s var(--ease-out),box-shadow .28s var(--ease-out);-webkit-user-drag:none;user-select:none}.phone-strip img:hover{transform:translateY(-2px);box-shadow:0 12px 36px #00000047}.phone-strip img:focus-visible{outline:2px solid var(--focus-ring);outline-offset:4px}@media(max-width:600px){.phone-strip{gap:10px;padding:10px 6px 16px;margin:0}.phone-strip img{width:160px;border-radius:16px}}.app-embed-video{width:100%;aspect-ratio:16 / 9;border-radius:12px;border:none;display:block}@media(max-width:768px){.app-container{padding:28px 16px 48px;gap:14px}.app-glass-card{padding:20px 18px;border-radius:16px}.app-hero-top{flex-direction:column;align-items:center;text-align:center}.app-hero-meta{flex-direction:column;align-items:center}.tech-tags{justify-content:center}.app-screens-row{grid-template-columns:1fr;gap:10px}.app-detail-item{flex-direction:column;gap:3px}.app-detail-label{min-width:auto}}body:after{content:"";position:fixed;inset:0;z-index:50;pointer-events:none;opacity:.022;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#ffffff40}.app-page ::-webkit-scrollbar-thumb{background:#0000001f}.app-page ::-webkit-scrollbar-thumb:hover{background:#0003}h1,h2,h3,h4{text-wrap:balance}p{text-wrap:pretty}::selection{background:#fff3;color:#fff}.app-page ::selection{background:#0000001a;color:#1a1a1a}a{color:inherit;text-decoration:none}
