a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-Rg.otf) format("opentype");font-weight:400;font-style:normal}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-Lt.otf) format("opentype");font-weight:300;font-style:normal}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-Md.otf) format("opentype");font-weight:500;font-style:normal}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-SmBd.otf) format("opentype");font-weight:600;font-style:normal}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-Bd.otf) format("opentype");font-weight:700;font-style:normal}@font-face{font-family:Approach Mono;src:url(/font/ApproachMonoTRIAL-Blk.otf) format("opentype");font-weight:900;font-style:normal}:root{--bg-color:#f8f8f8;--text-primary:#111;--text-secondary:#666;--accent-color:#000;--max-width:700px;--font-main:"Approach Mono",monospace;--grid-opacity:0.08;--binary-color:0,0,0}[data-theme=dark]{--bg-color:#0c0c0c;--text-primary:#eee;--text-secondary:#888;--accent-color:#fff;--grid-opacity:0.12;--binary-color:255,255,255}::selection{background-color:#000;color:#fff}[data-theme=dark] ::selection{background-color:#fff;color:#000}*{box-sizing:border-box;margin:0;padding:0}body,html{background-color:var(--bg-color);color:var(--text-primary);font-family:var(--font-main);line-height:1.6;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;left:0;width:100vw;height:100vh;background-image:url("data:image/svg+xml,%3Csvg width='120' height='120' viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Ctext x='0' y='12' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01010011 01000011 01001001%3C/text%3E%3Ctext x='0' y='28' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01101101 01101101 01101001%3C/text%3E%3Ctext x='0' y='44' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01100101 01110010 00100000%3C/text%3E%3Ctext x='0' y='60' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01101111 01110110 00100000%3C/text%3E%3Ctext x='0' y='76' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01101101 00100000 01000100%3C/text%3E%3Ctext x='0' y='92' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01101100 01101100 01101001%3C/text%3E%3Ctext x='0' y='108' font-family='monospace' font-size='7' fill='rgba(0,0,0,0.4)'%3E01110011 01110100 01100001%3C/text%3E%3C/svg%3E");background-size:180px 180px;opacity:var(--grid-opacity);pointer-events:none;z-index:9999;filter:invert(var(--binary-invert,0));mix-blend-mode:multiply}[data-theme=dark] body:before{--binary-invert:1;mix-blend-mode:screen}.container{max-width:var(--max-width);margin:0 auto;padding:80px 24px}header{margin-bottom:48px}.header-top{margin-bottom:4px}.header-sub,.header-top{display:flex;justify-content:space-between;align-items:baseline}.header-sub{flex-direction:row-reverse;margin-bottom:24px}.name-title h1{font-size:18px;font-weight:400;margin:0;letter-spacing:-.2px;font-family:var(--font-main)}.theme-toggle-container{font-size:16px;color:var(--text-primary);font-family:var(--font-main)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:8px;color:var(--text-secondary);text-decoration:none;opacity:.8;cursor:pointer;transition:opacity .2s ease,color .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1),background .2s ease}.theme-toggle:hover{opacity:1;color:var(--text-primary);transform:rotate(-12deg);background:rgba(0,0,0,.04)}[data-theme=dark] .theme-toggle:hover{background:hsla(0,0%,100%,.06)}.theme-icon{display:block;overflow:visible}.theme-disc{transition:r .45s cubic-bezier(.34,1.56,.64,1)}.theme-mask-circle{transition:cx .5s cubic-bezier(.4,0,.2,1),cy .5s cubic-bezier(.4,0,.2,1)}.theme-rays{transform-origin:12px 12px;transition:opacity .3s ease,transform .45s cubic-bezier(.34,1.56,.64,1)}[data-theme=dark] .theme-disc{r:7}[data-theme=dark] .theme-mask-circle{cx:17;cy:7}[data-theme=dark] .theme-rays{opacity:0;transform:scale(.4) rotate(-45deg)}html.theme-transitioning,html.theme-transitioning *,html.theme-transitioning :after,html.theme-transitioning :before{transition:background-color .4s ease,color .4s ease,border-color .4s ease,fill .4s ease,stroke .4s ease!important}@media (prefers-reduced-motion:reduce){.theme-disc,.theme-mask-circle,.theme-rays{transition:none}.theme-toggle:hover{transform:none}}.now-playing-row{display:flex;justify-content:flex-end;margin:-18px 0 0}.now-playing{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);opacity:.85;font-family:var(--font-main)}.now-playing-label{letter-spacing:.2px}.now-playing-icon{font-size:14px;line-height:1}.now-playing-link{color:var(--text-primary);text-decoration:none;border-bottom:1px dashed var(--text-secondary);padding-bottom:1px;transition:opacity .2s,border-color .2s}.now-playing-link:hover{opacity:1;border-bottom-color:var(--text-primary)}.location-wrap{display:inline-flex;align-items:baseline;gap:8px;flex-wrap:wrap}.location{font-size:14px;opacity:.8}.local-time,.location{color:var(--text-secondary);font-family:var(--font-main)}.local-time{font-size:12px;opacity:.6;letter-spacing:.3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}a.location{text-decoration:none;transition:opacity .2s,color .2s}a.location:hover{opacity:1;color:var(--text-primary)}.roles-pills{margin-top:0}.pill{position:relative;padding:6px 14px;border-radius:8px;font-size:12px;font-weight:400;text-transform:uppercase;letter-spacing:.5px;font-family:var(--font-main);color:#777}.pill:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:linear-gradient(90deg,#9b51e0,#06b6d4,#ec4899,#06b6d4,#9b51e0);background-size:200% 100%;animation:ai-glitter 2.5s linear infinite;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}@keyframes ai-glitter{0%{background-position:200% 50%}to{background-position:0 50%}}.role-pill{position:relative;overflow:hidden;cursor:default;white-space:nowrap}.role-pill-default{display:inline-block;transition:opacity .25s ease}.role-pill:hover .role-pill-default{opacity:0}.role-pill-marquee{position:absolute;inset:0;display:flex;align-items:center;overflow:hidden;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s ease}.role-pill:hover .role-pill-marquee{opacity:1}.role-pill-marquee-track{display:inline-flex;flex-shrink:0;white-space:nowrap;animation:role-marquee 14s linear infinite;animation-play-state:paused}.role-pill:hover .role-pill-marquee-track{animation-play-state:running}.role-pill-marquee-content{flex-shrink:0;padding-right:1.5ch}@keyframes role-marquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@media (prefers-reduced-motion:reduce){.role-pill-marquee-track{animation-duration:28s}}.hero-row{display:flex;justify-content:space-between;align-items:baseline;margin:20px 0}.hero-tagline{font-size:18px;font-weight:400;font-style:italic;line-height:1.2;letter-spacing:-.2px;font-family:var(--font-main)}.hero-tagline em{font-style:italic;border-bottom:1.5px solid var(--text-primary);padding-bottom:1px}.resume-link{font-size:18px;font-family:var(--font-main);color:var(--text-primary);text-decoration:underline;text-underline-offset:3px}.resume-link:hover{opacity:.7}.fast-hover{position:relative;display:inline-block;cursor:default}.fast-text{transition:opacity .2s ease,transform .2s ease;display:inline-block}.fast-img-inline{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.5);width:auto;height:4em;opacity:0;transition:all .2s ease;pointer-events:none;z-index:10}.fast-hover:hover .fast-text{opacity:0;transform:scale(.8)}.fast-hover:hover .fast-img-inline{opacity:1;transform:translate(-50%,-50%) scale(1)}.people-hover{position:relative;cursor:pointer}.people-hover,.people-text{display:inline-block;vertical-align:baseline}.people-text{transition:opacity .2s ease,transform .2s ease;font-family:inherit;font-size:inherit;line-height:inherit}.people-gif{position:absolute;bottom:0;left:50%;transform:translateX(-50%) translateY(10px) scale(.5);width:auto;height:6em;opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);pointer-events:none;z-index:50}[data-theme=dark] .people-gif{filter:invert(1) hue-rotate(180deg)}.people-hover:hover .people-text{opacity:0;transform:scale(.8)}.people-hover:hover .people-gif{opacity:1;transform:translateX(-50%) translateY(10px) scale(1.2)}section{margin-bottom:64px}.reveal-ready section>*{opacity:0;transform:translateY(12px);transition:opacity .55s cubic-bezier(.4,0,.2,1),transform .55s cubic-bezier(.4,0,.2,1);will-change:opacity,transform}.reveal-ready section.is-visible>*{opacity:1;transform:translateY(0)}.reveal-ready section.is-visible>:first-child{transition-delay:0ms}.reveal-ready section.is-visible>:nth-child(2){transition-delay:50ms}.reveal-ready section.is-visible>:nth-child(3){transition-delay:.1s}.reveal-ready section.is-visible>:nth-child(4){transition-delay:.15s}.reveal-ready section.is-visible>:nth-child(5){transition-delay:.2s}.reveal-ready section.is-visible>:nth-child(n+6){transition-delay:.25s}.reveal-ready.reveal-instant section>*{opacity:1;transform:none;transition:none}section h2{font-size:18px;font-weight:700;letter-spacing:.5px;color:var(--accent-color);margin-bottom:24px;position:relative;display:inline-block;padding-bottom:6px}section h2:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--text-primary);opacity:.35;transform:scaleX(0);transform-origin:left center;transition:transform .7s cubic-bezier(.4,0,.2,1),opacity .3s ease}section h2.is-in-view:after{transform:scaleX(1)}section h2:hover:after{transform:scaleX(1);opacity:.6}@media (prefers-reduced-motion:reduce){section h2:after{transition:none}}.intro-text{font-size:18px;color:var(--text-primary)}.intro-text p{margin-bottom:20px}.company-badge{display:inline-flex;align-items:center;gap:6px;background:#000;color:#fff;padding:2px 8px;border-radius:4px;font-weight:400;text-decoration:none;vertical-align:baseline;margin:0 4px;font-family:var(--font-main);font-size:15px}.company-badge img{height:14px;width:auto;display:block}.inline-icon{height:20px;width:auto;display:inline-block;vertical-align:-6px;margin:0 4px}.car-icon{height:32px;vertical-align:-10px;transition:transform .3s cubic-bezier(.34,1.56,.64,1);cursor:pointer}.car-icon:hover{content:url(/car.gif);transform:scale(1.4) translateY(-2px)}.car-launch{position:fixed;z-index:99999;pointer-events:none;display:block;animation:car-zoom 1.5s cubic-bezier(.5,0,.55,1) forwards;filter:drop-shadow(0 6px 12px rgba(0,0,0,.18))}.car-launch img{width:100%;height:100%;object-fit:contain;display:block}@keyframes car-zoom{0%{transform:translate(0) scale(1) rotate(0deg);opacity:1}10%{transform:translate(-14px,4px) scale(1.05) rotate(-4deg)}18%{transform:translate(-10px,2px) scale(1.1) rotate(-2deg)}to{transform:translate(120vw,-10px) scale(1.6) rotate(0deg);opacity:.92}}@media (prefers-reduced-motion:reduce){.car-launch{animation-duration:.3s}}.f1-icon{transition:transform .3s cubic-bezier(.34,1.56,.64,1);cursor:pointer}.f1-icon:hover{content:url(/f1.gif);transform:scale(1.8) translateY(-2px)}[data-theme=dark] .company-badge{background:#eee;color:#111}.wavy-underline{position:relative;display:inline-block;cursor:pointer}.wavy-underline:after{content:"";position:absolute;left:0;bottom:-4px;width:100%;height:6px;background-image:url("data:image/svg+xml,%3Csvg width='100' height='6' viewBox='0 0 100 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 3C5 0 10 0 15 3C20 6 25 6 30 3C35 0 40 0 45 3C50 6 55 6 60 3C65 0 70 0 75 3C80 6 85 6 90 3C95 0 100 0 105 3' fill='none' stroke='%23666' stroke-width='3'/%3E%3C/svg%3E");background-size:20px 6px;background-repeat:repeat-x}.hill-station-popover{position:absolute;bottom:150%;left:50%;transform:translateX(-50%) translateY(10px);background:#1a1a1a;padding:12px;border-radius:16px;display:flex;flex-direction:column;align-items:center;gap:10px;visibility:hidden;opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:200;width:max-content;box-shadow:0 20px 40px rgba(0,0,0,.4)}.wavy-underline:hover .hill-station-popover{visibility:visible;opacity:1;transform:translateX(-50%) translateY(0)}.hill-station-icons{display:flex;gap:8px}.hill-station-icon{width:auto}.hill-station-icon,.hill-station-icon.zoom{height:40px;display:inline-flex;align-items:center;justify-content:center}.hill-station-icon.zoom{width:40px;border-radius:8px;overflow:hidden;background:#000}.hill-station-icon.zoom img{width:100%;height:100%;object-fit:cover;transform:scale(1.4);transition:transform .2s}.hill-station-icon.zoom:hover img{transform:scale(1.6)}.hill-station-icon.zoom.roadways:hover img{animation:travel-road-nudge .45s cubic-bezier(.34,1.56,.64,1) forwards}.hill-station-icon.zoom.railways:hover img{animation:travel-rail-chug .5s ease-in-out infinite}.hill-station-icon.zoom.airways:hover img{animation:travel-air-lift .5s cubic-bezier(.34,1.56,.64,1) forwards}.hill-station-icon.zoom.waterways:hover img{animation:travel-water-bob 1.4s ease-in-out infinite}@keyframes travel-road-nudge{0%{transform:scale(1.4) translateX(0)}60%{transform:scale(1.55) translateX(7px)}to{transform:scale(1.55) translateX(0)}}@keyframes travel-rail-chug{0%,to{transform:scale(1.55) translateX(-3px)}50%{transform:scale(1.55) translateX(3px)}}@keyframes travel-air-lift{0%{transform:scale(1.4) translateY(0) rotate(0deg)}to{transform:scale(1.6) translateY(-7px) rotate(-6deg)}}@keyframes travel-water-bob{0%,to{transform:scale(1.55) translateY(-2px) rotate(-2deg)}50%{transform:scale(1.55) translateY(2px) rotate(2deg)}}@media (prefers-reduced-motion:reduce){.hill-station-icon.zoom.airways:hover img,.hill-station-icon.zoom.railways:hover img,.hill-station-icon.zoom.roadways:hover img,.hill-station-icon.zoom.waterways:hover img{animation:none;transform:scale(1.6)}}.hill-station-icons img{width:auto;height:100%}.hill-station-label{color:#888;font-size:11px;font-family:var(--font-main);letter-spacing:.5px;text-transform:uppercase}[data-theme=dark] .hill-station-popover{background:#252525}.interactive-keyword{text-decoration:underline;text-underline-offset:4px;cursor:pointer;transition:opacity .2s}.interactive-keyword:hover{opacity:.6}.past-list{display:flex;flex-direction:column;gap:16px;margin-top:24px}.past-item{display:flex;align-items:center;gap:12px;font-family:var(--font-main);font-size:18px;color:var(--text-primary)}.past-logo{width:20px;height:20px;object-fit:contain;border-radius:4px}.past-content{display:flex;align-items:center;gap:6px}.past-link{color:inherit;text-decoration:underline;text-underline-offset:2px}.past-link:hover{opacity:.7}[data-theme=dark] .past-logo{filter:invert(0)}.project-item{border-bottom:1px solid rgba(0,0,0,.08);transition:all .3s cubic-bezier(.4,0,.2,1);padding:0 20px;border-radius:12px}[data-theme=dark] .project-item{border-bottom:1px solid hsla(0,0%,100%,.08)}.project-item:hover{background-color:rgba(0,0,0,.02)}[data-theme=dark] .project-item:hover{background-color:hsla(0,0%,100%,.02)}.project-item.active{position:relative;z-index:10000;background-color:var(--bg-color);border:1px solid rgba(0,0,0,.08);margin:16px 0;box-shadow:0 4px 20px rgba(0,0,0,.03)}[data-theme=dark] .project-item.active{background-color:var(--bg-color);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 4px 20px rgba(0,0,0,.2)}.project-header{display:flex;justify-content:space-between;align-items:center;padding:24px 0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.project-title-group{display:flex;align-items:center;gap:16px}.project-name{font-size:18px;font-weight:500;font-family:var(--font-main);letter-spacing:-.2px}.project-tags{display:flex;gap:6px;flex-wrap:wrap}.project-tag{font-size:10px;font-family:var(--font-main);background:rgba(0,0,0,.05);padding:3px 8px;border-radius:4px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}[data-theme=dark] .project-tag{background:hsla(0,0%,100%,.1)}.arrow{width:12px;height:12px;transition:transform .3s cubic-bezier(.4,0,.2,1);color:var(--text-secondary);display:block}.project-details{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1)}.project-details.active{max-height:1000px}.project-details.active+.project-header .arrow{transform:rotate(180deg)}.project-expanded-content{display:flex;gap:32px;padding-bottom:32px;align-items:flex-start}.project-image{flex:1 1;min-width:0}.project-image img{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.1);margin-bottom:0}[data-theme=dark] .project-image img{box-shadow:0 10px 30px rgba(0,0,0,.3)}.project-info{flex:1 1;display:flex;flex-direction:column;gap:16px}.project-info h3{font-size:16px;font-weight:600;margin:0}.project-info p{font-size:15px;line-height:1.6;color:var(--text-secondary);margin:0}.tech-stack{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.tech-stack span{font-size:12px;font-family:var(--font-main);padding:4px 10px;border:1px solid var(--text-secondary);border-radius:6px;opacity:.7}.project-links{display:flex;gap:16px;margin-top:12px}.project-link{font-size:15px;text-decoration:none;color:var(--text-primary);font-weight:600;border-bottom:2px solid transparent;transition:border-color .2s}.project-link:hover{border-bottom-color:var(--text-primary);text-decoration:none}.stack-grid{display:flex;flex-wrap:wrap;gap:8px}.stack-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:rgba(0,0,0,.03);border:1px solid rgba(0,0,0,.08);border-radius:8px;font-size:13px;font-family:var(--font-main);color:var(--text-primary);transition:background .2s,transform .2s}.stack-pill:hover{background:rgba(0,0,0,.06);transform:translateY(-1px)}[data-theme=dark] .stack-pill{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08)}[data-theme=dark] .stack-pill:hover{background:hsla(0,0%,100%,.08)}.stack-pill img{width:14px;height:14px;object-fit:contain;flex-shrink:0}#ship-log .ship-meta{font-size:13px;color:var(--text-secondary);margin-top:12px;font-family:var(--font-main)}#ship-log .ship-link{color:var(--text-primary);text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;gap:6px;vertical-align:middle}#ship-log .ship-link:hover{opacity:.7}.ship-icon{width:14px;height:14px;flex-shrink:0;color:currentColor}.contrib-card{position:relative;z-index:10000;padding:16px;background:var(--bg-color);border:1px solid rgba(0,0,0,.08);border-radius:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}[data-theme=dark] .contrib-card{border-color:hsla(0,0%,100%,.08)}.contrib-loading{font-size:13px;color:var(--text-secondary);font-family:var(--font-main);padding:8px 0}.contrib-total{font-size:14px;color:var(--text-primary);margin-bottom:12px;font-weight:400}.contrib-total strong{font-weight:600}.contrib-main{display:flex;flex-direction:column;gap:4px}.contrib-months{height:12px;font-size:10px;color:var(--text-secondary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;position:relative}.contrib-month{position:absolute;top:0;white-space:nowrap}.contrib-grid{display:flex;gap:.4%;width:100%}.contrib-week{flex:1 1;display:flex;flex-direction:column;gap:2px;min-width:0}.contrib-cell{width:100%;aspect-ratio:1;border-radius:2px;background:#ebedf0;outline:1px solid rgba(27,31,35,.06);outline-offset:-1px}.contrib-cell[data-level="1"]{background:#9be9a8}.contrib-cell[data-level="2"]{background:#40c463}.contrib-cell[data-level="3"]{background:#30a14e}.contrib-cell[data-level="4"]{background:#216e39}.contrib-cell-empty{background:transparent;outline:none}[data-theme=dark] .contrib-cell{background:#161b22;outline-color:hsla(0,0%,100%,.05)}[data-theme=dark] .contrib-cell[data-level="1"]{background:#0e4429}[data-theme=dark] .contrib-cell[data-level="2"]{background:#006d32}[data-theme=dark] .contrib-cell[data-level="3"]{background:#26a641}[data-theme=dark] .contrib-cell[data-level="4"]{background:#39d353}.contrib-legend{display:flex;align-items:center;gap:4px;margin-top:12px;font-size:11px;color:var(--text-secondary);justify-content:flex-end;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.contrib-legend .contrib-cell{width:10px;height:10px;flex-shrink:0;aspect-ratio:unset}.footer-row{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:24px;text-align:center}.footer-row .footer-note{margin-top:0}.dmca-badge{display:inline-flex;align-items:center;color:var(--text-secondary);opacity:.7;transition:opacity .2s,color .2s}.dmca-badge:hover{opacity:1;color:var(--text-primary)}.dmca-badge svg{height:18px;width:auto;display:block}#shipped-products h2{font-weight:700;margin-bottom:0;font-size:18px;display:inline-flex;align-items:center;gap:6px}.shipped-card{display:flex;align-items:flex-start;gap:20px;padding:20px;margin:0 -20px;border-radius:16px;text-decoration:none;color:inherit;transition:background-color .3s cubic-bezier(.4,0,.2,1)}.shipped-card:hover{background-color:rgba(0,0,0,.03)}[data-theme=dark] .shipped-card:hover{background-color:hsla(0,0%,100%,.03)}.shipped-doodle{width:80px;height:80px;object-fit:contain;flex-shrink:0;animation:shipped-popup .6s cubic-bezier(.34,1.56,.64,1) both;transform-origin:center}@keyframes shipped-popup{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.shipped-doodle{animation:none}}[data-theme=dark] .shipped-doodle{filter:invert(1) hue-rotate(180deg) brightness(.9)}.shipped-content{flex:1 1;min-width:0}.shipped-header{display:flex;align-items:center;gap:10px;margin-bottom:6px}.shipped-arrow{display:inline-block;transition:transform .2s cubic-bezier(.4,0,.2,1)}.shipped-card:hover .shipped-arrow{transform:translate(2px,-2px)}.new-badge{display:inline-block;padding:3px 8px;font-size:10px;font-weight:700;letter-spacing:.5px;background:var(--accent-color);color:var(--bg-color);border-radius:999px;font-family:var(--font-main)}.shipped-desc{font-size:15px;color:var(--text-secondary);line-height:1.5}#links h2{font-weight:700;margin-bottom:24px}.links-row{display:flex;flex-wrap:wrap;gap:24px}.link-item{display:flex;align-items:center;gap:8px;font-family:var(--font-main);font-size:18px}.link-icon{opacity:.8}.bottom-link{position:relative;color:var(--text-primary);text-decoration:none;display:inline-block;line-height:1.2}.bottom-link:after{content:"";position:absolute;left:0;bottom:-3px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .35s cubic-bezier(.4,0,.2,1)}.bottom-link:focus-visible:after,.bottom-link:hover:after{transform:scaleX(1)}.email-link{position:relative}.email-link:after{display:none}.email-default{display:inline-block;transition:opacity .2s ease}.email-full{position:absolute;left:0;top:0;white-space:nowrap;opacity:0;pointer-events:none;background:var(--bg-color);padding-right:4px;transition:opacity .2s ease;z-index:2}.email-full:after{content:"";position:absolute;left:0;bottom:-3px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .35s cubic-bezier(.4,0,.2,1)}.email-link:focus-visible .email-default,.email-link:hover .email-default{opacity:0}.email-link:focus-visible .email-full,.email-link:hover .email-full{opacity:1;pointer-events:auto}.email-link:focus-visible .email-full:after,.email-link:hover .email-full:after{transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.bottom-link:after{transition:none}}.footer-note{font-size:14px;color:var(--text-secondary);opacity:.6;margin-top:40px}.section-header{margin-bottom:24px}.section-link{color:inherit;text-decoration:none;transition:opacity .2s}.section-link:hover{opacity:.7}.blog-list{gap:16px}.blog-card,.blog-list{display:flex;flex-direction:column}.blog-card{position:relative;z-index:10000;padding:24px;border:1px solid rgba(0,0,0,.08);border-radius:16px;text-decoration:none;color:inherit;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--bg-color)}[data-theme=dark] .blog-card{border:1px solid hsla(0,0%,100%,.08);background:var(--bg-color)}.blog-card:hover{transform:translateY(-2px);border-color:rgba(0,0,0,.15)}[data-theme=dark] .blog-card:hover{border-color:hsla(0,0%,100%,.15)}.blog-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:8px}.blog-title{font-size:18px;font-weight:600;line-height:1.4;letter-spacing:-.2px}.blog-date{font-size:14px;color:var(--text-secondary);white-space:nowrap;opacity:.7}.blog-description{font-size:15px;color:var(--text-secondary);line-height:1.6}.collaborate-link{display:inline;background:none;border:none;margin:0;font:inherit;color:var(--text-primary);cursor:pointer;font-style:italic;border-bottom:1px dashed var(--text-secondary);padding:0 0 1px;transition:border-color .2s,color .2s}.collaborate-link:hover{border-bottom-style:solid;border-bottom-color:var(--text-primary)}.contact-modal{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;padding:24px 16px;font-family:var(--font-main)}.contact-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.18);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:contact-fade .18s ease-out}.contact-panel{position:relative;width:100%;max-width:560px;max-height:85vh;overflow-y:auto;background:var(--bg-color);border:1px solid rgba(0,0,0,.08);border-radius:22px;padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 4px 12px rgba(0,0,0,.08),0 24px 64px rgba(0,0,0,.18);animation:contact-rise .22s cubic-bezier(.4,0,.2,1)}[data-theme=dark] .contact-panel{border-color:hsla(0,0%,100%,.1);box-shadow:0 4px 12px rgba(0,0,0,.4),0 24px 64px rgba(0,0,0,.55)}@keyframes contact-fade{0%{opacity:0}to{opacity:1}}@keyframes contact-rise{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.contact-head{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:var(--text-primary);line-height:1.5}.contact-flower{color:#8b5cf6;font-size:16px;line-height:1.4;flex-shrink:0}.contact-field-box{border:1px solid rgba(0,0,0,.08);border-radius:16px;background:var(--bg-color);transition:border-color .2s,box-shadow .2s}[data-theme=dark] .contact-field-box{border-color:hsla(0,0%,100%,.1)}.contact-field-box:focus-within{border-color:var(--text-primary);box-shadow:0 0 0 3px rgba(0,0,0,.04)}[data-theme=dark] .contact-field-box:focus-within{box-shadow:0 0 0 3px hsla(0,0%,100%,.06)}.contact-input,.contact-textarea{width:100%;font-family:var(--font-main);font-size:14px;color:var(--text-primary);background:transparent;border:none;border-radius:16px;padding:16px 18px;outline:none;resize:vertical}.contact-textarea{min-height:150px;line-height:1.5}.contact-hint{margin:-6px 0 0;font-size:12px;color:var(--text-secondary);opacity:.85}.contact-error{margin:0;font-size:13px;color:#d33}.contact-success{margin:0;font-size:13px;color:#2a7}.contact-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:4px}.contact-cancel{background:none;border:none;font-family:var(--font-main);font-size:14px;color:var(--text-secondary);cursor:pointer;padding:8px 4px;transition:color .2s}.contact-cancel:hover{color:var(--text-primary)}.contact-send{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-main);font-size:14px;color:var(--bg-color);background:var(--text-primary);border:none;border-radius:999px;padding:10px 20px;cursor:pointer;transition:opacity .2s,transform .1s}.contact-send:hover:not(:disabled){opacity:.88}.contact-send:active:not(:disabled){transform:translateY(1px)}.contact-send:disabled{opacity:.6;cursor:not-allowed}.contact-send-icon{width:14px;height:14px;display:block;filter:invert(1)}[data-theme=dark] .contact-send-icon{filter:invert(0)}.contact-toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:10002;display:inline-flex;align-items:center;gap:10px;padding:12px 18px;background:var(--bg-color);color:var(--text-primary);border:1px solid rgba(0,0,0,.08);border-radius:999px;font-family:var(--font-main);font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,.08),0 18px 40px rgba(0,0,0,.12);animation:contact-toast-in .25s cubic-bezier(.4,0,.2,1)}[data-theme=dark] .contact-toast{border-color:hsla(0,0%,100%,.1);box-shadow:0 4px 12px rgba(0,0,0,.4),0 18px 40px rgba(0,0,0,.5)}.contact-toast-check{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--text-primary);color:var(--bg-color);flex-shrink:0}@keyframes contact-toast-in{0%{opacity:0;transform:translate(-50%,-16px)}to{opacity:1;transform:translate(-50%)}}@media (max-width:600px){.contact-panel{padding:20px;border-radius:18px}.contact-head{font-size:13px}.container{padding:40px 16px;width:100%;overflow-x:hidden}.header-top{flex-direction:row;align-items:center;justify-content:space-between;gap:8px}.header-sub,.hero-row{flex-direction:column;align-items:flex-start;gap:12px}.hero-row{margin:4px 0 16px}.now-playing-row{justify-content:flex-start;margin:16px 0 0}.intro-text,.past-item{font-size:16px}.footer-links{flex-wrap:wrap;gap:12px}.footer-row{flex-direction:column;gap:10px;padding-bottom:90px}.project-expanded-content{flex-direction:column;gap:20px}.project-image img{aspect-ratio:16/10}.hill-station-popover{width:max-content;max-width:85vw;left:0;transform:translateX(-10px) translateY(10px)}.wavy-underline:hover .hill-station-popover{transform:translateX(-10px) translateY(0)}.hill-station-icons{flex-wrap:wrap;justify-content:center}.hill-station-icon{height:32px}.hill-station-icon.zoom{height:32px;width:32px}}@media (max-width:400px){.project-title-group{flex-direction:column;align-items:flex-start;gap:4px}}.scroll-top{position:fixed;right:24px;bottom:24px;width:44px;height:44px;border-radius:50%;border:1px solid var(--text-secondary);background:var(--bg-color);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(12px) scale(.9);transition:opacity .25s ease,transform .25s cubic-bezier(.34,1.56,.64,1),background-color .2s ease,color .2s ease;z-index:50;box-shadow:0 4px 12px rgba(0,0,0,.08)}.scroll-top.visible{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}.scroll-top:hover{background:var(--text-primary);color:var(--bg-color)}@media (prefers-reduced-motion:reduce){.scroll-top{transition:opacity .2s ease}.scroll-top,.scroll-top.visible{transform:none}}@media (max-width:600px){.scroll-top{right:16px;bottom:80px;width:40px;height:40px}}.chat-toggle{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:10000;display:flex;align-items:center;gap:12px;width:min(560px,calc(100vw - 32px));padding:10px 12px 10px 18px;background:var(--bg-color);border:none;border-radius:12px;font-family:var(--font-main);font-size:14px;color:var(--text-secondary);cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.05),0 8px 24px rgba(0,0,0,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1)}.chat-toggle:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:linear-gradient(90deg,#9b51e0,#06b6d4,#ec4899,#06b6d4,#9b51e0);background-size:200% 100%;animation:chat-glitter 2.5s linear infinite;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}@keyframes chat-glitter{0%{background-position:200% 50%}to{background-position:0 50%}}[data-theme=dark] .chat-toggle{background:hsla(0,0%,8%,.85);box-shadow:0 1px 3px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.4)}.chat-toggle:hover{transform:translateX(-50%) translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.12)}.chat-toggle-text{flex:1 1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-kbd{display:inline-flex;align-items:center;padding:2px 6px;font-size:10px;font-family:var(--font-main);color:var(--text-secondary);background:rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.08);border-radius:4px;letter-spacing:.5px}[data-theme=dark] .chat-kbd{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.1)}.chat-toggle-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0;overflow:hidden}.chat-toggle-icon img{width:100%;height:100%;object-fit:contain}@media (max-width:480px){.chat-kbd{display:none}.chat-toggle-text{font-size:13px}}.chat-modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:flex-end;justify-content:center;padding:0 16px 20px}.chat-modal[hidden]{display:none}.chat-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.15);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:chat-fade .2s ease-out}.chat-panel{position:relative;width:100%;max-width:640px;max-height:80vh;display:flex;flex-direction:column;background:var(--bg-color);border:1px solid rgba(0,0,0,.08);border-radius:24px;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.08),0 24px 64px rgba(0,0,0,.16);animation:chat-rise .25s cubic-bezier(.4,0,.2,1);font-family:var(--font-main)}[data-theme=dark] .chat-panel{border-color:hsla(0,0%,100%,.1);box-shadow:0 4px 12px rgba(0,0,0,.3),0 24px 64px rgba(0,0,0,.5)}@keyframes chat-fade{0%{opacity:0}to{opacity:1}}@keyframes chat-rise{0%{opacity:0;transform:translateY(40px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-header{display:flex;justify-content:flex-end;padding:12px 16px;border-bottom:1px solid rgba(0,0,0,.06)}[data-theme=dark] .chat-header{border-bottom-color:hsla(0,0%,100%,.06)}.chat-close{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-family:var(--font-main);color:var(--text-secondary);background:rgba(0,0,0,.04);border:1px solid rgba(0,0,0,.06);border-radius:6px;cursor:pointer;transition:all .2s}[data-theme=dark] .chat-close{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.08)}.chat-close:hover{color:var(--text-primary);background:rgba(0,0,0,.07)}[data-theme=dark] .chat-close:hover{background:hsla(0,0%,100%,.1)}.chat-messages{flex:1 1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px}.chat-suggestions{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}@media (max-width:480px){.chat-suggestions{grid-template-columns:1fr}}.chat-suggestion{padding:14px 16px;text-align:left;font-size:11px;font-family:var(--font-main);font-weight:500;letter-spacing:.5px;color:var(--text-primary);background:rgba(0,0,0,.03);border:1px solid rgba(0,0,0,.06);border-radius:12px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);line-height:1.4}[data-theme=dark] .chat-suggestion{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08)}.chat-suggestion:hover{background:rgba(0,0,0,.06);transform:translateY(-1px)}[data-theme=dark] .chat-suggestion:hover{background:hsla(0,0%,100%,.08)}.chat-msg{display:flex;max-width:85%}.chat-msg.user{align-self:flex-end}.chat-msg.assistant{align-self:flex-start}.chat-bubble{padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.chat-msg.user .chat-bubble{background:var(--accent-color);color:var(--bg-color);border-bottom-right-radius:4px}.chat-msg.assistant .chat-bubble{background:rgba(0,0,0,.05);color:var(--text-primary);border-bottom-left-radius:4px}[data-theme=dark] .chat-msg.assistant .chat-bubble{background:hsla(0,0%,100%,.06)}.chat-loading{display:inline-flex;align-items:center;gap:8px;padding:6px 4px;font-size:13px;font-family:var(--font-main);color:var(--text-secondary);align-self:flex-start}.chat-loading-star{display:inline-block;font-size:14px;color:var(--text-primary);animation:chat-spin 1.6s linear infinite}.chat-loading-text:after{content:"";animation:chat-dots 1.4s steps(4) infinite}@keyframes chat-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes chat-dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}.chat-error{align-self:stretch;padding:14px 18px;font-size:13px;font-family:var(--font-main);color:#c2185b;background:#fdecef;border:1px solid #f8c7d2;border-radius:12px;text-align:center;line-height:1.5}[data-theme=dark] .chat-error{color:#ff9aa2;background:rgba(255,154,162,.08);border-color:rgba(255,154,162,.2)}.chat-contact{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.chat-contact-link{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-family:var(--font-main);color:var(--text-primary);background:var(--bg-color);border:1px solid rgba(0,0,0,.1);border-radius:6px;text-decoration:none;transition:all .2s}.chat-contact-link svg{width:13px;height:13px;flex-shrink:0}[data-theme=dark] .chat-contact-link{border-color:hsla(0,0%,100%,.12)}.chat-contact-link:hover{background:rgba(0,0,0,.04)}[data-theme=dark] .chat-contact-link:hover{background:hsla(0,0%,100%,.06)}.chat-disclaimer{padding:8px 16px;font-size:11px;color:var(--text-secondary);background:rgba(0,0,0,.02);border-top:1px solid rgba(0,0,0,.06);text-align:center}[data-theme=dark] .chat-disclaimer{background:hsla(0,0%,100%,.02);border-top-color:hsla(0,0%,100%,.06)}.chat-disclaimer a{color:var(--text-primary);text-decoration:underline;text-underline-offset:2px}.chat-form{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid rgba(0,0,0,.06)}[data-theme=dark] .chat-form{border-top-color:hsla(0,0%,100%,.06)}.chat-input{flex:1 1;padding:10px 14px;background:rgba(0,0,0,.03);border:1px solid rgba(0,0,0,.06);border-radius:12px;outline:none;font-family:var(--font-main);font-size:14px;color:var(--text-primary);transition:border-color .2s,background .2s}.chat-input:focus{border-color:rgba(0,0,0,.15);background:rgba(0,0,0,.04)}[data-theme=dark] .chat-input{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08)}[data-theme=dark] .chat-input:focus{border-color:hsla(0,0%,100%,.18);background:hsla(0,0%,100%,.06)}.chat-input::placeholder{color:var(--text-secondary);opacity:.7}.chat-send{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:10px;cursor:pointer;padding:2px;flex-shrink:0;transition:opacity .2s,transform .2s}.chat-send img{width:100%;height:100%;object-fit:contain;display:block}.chat-send:disabled{opacity:.4;cursor:not-allowed}.chat-send:not(:disabled):hover{transform:scale(1.05)}@media (max-width:600px){.chat-modal{padding:0}.chat-panel{max-height:92vh;border-radius:24px 24px 0 0}}