*{box-sizing:border-box}html{background:#343e35;min-width:320px}body{min-width:320px;min-height:100svh;margin:0;font-family:Georgia,Times New Roman,serif;overflow-x:hidden}button,input,textarea,select{font:inherit}button{border:0}img{max-width:100%}#root{min-height:100svh}.room{--layer-backdrop:0;--layer-texture:1;--layer-plants:2;--layer-wall-objects:3;--layer-foreground:4;--layer-dialog:30;--layer-record:20;--wall-green:#6f765f;--mounted-shadow:.58rem .72rem .72rem #140f0c70;--ink:#2b211d;background-color:var(--wall-green)}.room:before,.room:after{z-index:var(--layer-texture);content:"";pointer-events:none;position:absolute;inset:0}.room:before{background:radial-gradient(#0000 72%,#222b2314 100%)}.room:after{opacity:.05;mix-blend-mode:soft-light;background-image:repeating-linear-gradient(0deg,#fff8e212 0 1px,#0000 1px 4px),repeating-linear-gradient(90deg,#30251c0d 0 1px,#0000 1px 5px)}.posterWall{pointer-events:none}.framedPoster{padding:var(--poster-frame-width);isolation:isolate;background:linear-gradient(135deg,#ffe5ba52,#0000 28%,#3d251b38 100%),repeating-linear-gradient(8deg,#9a704e 0 .24rem,#865e42 .24rem .5rem,#906748 .5rem .78rem);border:0;position:relative;box-shadow:inset 1px 1px #ffe1b261,inset -2px -2px #361f1657,.52rem .68rem .82rem #140f0c6b}.framedPoster:before,.framedPoster:after{content:"";pointer-events:none;position:absolute}.framedPoster:before{z-index:2;inset:var(--poster-frame-width);border:1px solid #3a2319b8;box-shadow:inset .12rem .14rem .2rem #291b144d,0 0 0 1px #e2b9862b}.framedPoster:after{z-index:3;border:1px solid #ffe5bc54;border-color:#ffe5bc54 #361f1657 #301c147a #efc69430;inset:0}.poster{z-index:1;filter:saturate(.97)contrast(1.02);width:100%;height:auto;display:block;position:relative;box-shadow:.08rem .1rem .16rem #291b1438}.namePosterFrame{width:100%}.posterLight{z-index:4;aspect-ratio:3.15;filter:drop-shadow(.2rem .32rem .28rem #140f0c61);pointer-events:none;width:64%;position:absolute;bottom:calc(100% + .8cqw);left:18%;overflow:hidden}.posterLight img{width:100%;height:auto;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.guitarMount{pointer-events:none}.guitarImage{width:100%;height:auto;filter:drop-shadow(var(--mounted-shadow));display:block}.contactVinyl{--contact-column-offset:0%;--contact-row-offset:0rem;--vinyl-tilt-x:2.4deg;--vinyl-tilt-y:-1.5deg;aspect-ratio:1;isolation:isolate;pointer-events:auto;width:100%;transform:translate(var(--contact-column-offset), var(--contact-row-offset)) perspective(24rem) rotateX(var(--vinyl-tilt-x)) rotateY(var(--vinyl-tilt-y));transform-style:preserve-3d;background:0 0;border:0;border-radius:50%;outline:none;padding:0;transition:filter .18s,transform .18s;display:block;position:relative}.contactVinyl[data-contact=email],.contactVinyl[data-contact=resume]{--vinyl-tilt-y:1.5deg}.contactVinyl:before,.contactVinyl:after{z-index:1;content:"";pointer-events:none;border-radius:50%;position:absolute;inset:2.25%}.contactVinyl:before{mix-blend-mode:soft-light;background:repeating-radial-gradient(circle,#0000 0 3.2%,#fff4da12 3.45%,#0000 3.72% 5.4%);box-shadow:inset .18rem .14rem .2rem #fff6de21,inset -.28rem -.32rem .34rem #0806054d;-webkit-mask:radial-gradient(circle,#0000 0 22%,#000 25%);mask:radial-gradient(circle,#0000 0 22%,#000 25%)}.contactVinyl:after{z-index:3;background:radial-gradient(ellipse at 28% 22%, #fff7de3d, transparent 26%), conic-gradient(from 206deg at center, transparent 0 8%, #fff2d324 13%, transparent 20% 59%, #fff2d314 66%, transparent 73%);opacity:.78;box-shadow:inset 0 0 0 1px #fff6de17,inset -.2rem -.25rem .28rem #0806052e}.contactVinylImage{z-index:0;object-fit:contain;filter:drop-shadow(.08rem .1rem .04rem #fff1d51c)drop-shadow(.3rem .46rem .34rem #140f0c7a);width:100%;height:100%;display:block;position:relative}.contactVinylLogo{z-index:2;object-fit:contain;filter:sepia(.2)saturate(.75)contrast(1.15)drop-shadow(.04rem .06rem .04rem #120d0a6b);pointer-events:none;width:17%;height:17%;display:block;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,.12rem)}.wallPlant,.potPlant{pointer-events:none;position:absolute}.wallPlant{filter:drop-shadow(.32rem .4rem .34rem #140f0c4d)}.potPlant{filter:drop-shadow(.35rem .45rem .42rem #140f0c57)}.contactVinyl:hover,.contactVinyl:focus-visible{filter:brightness(1.06);transform:translate(var(--contact-column-offset), calc(var(--contact-row-offset) - .12rem)) perspective(24rem) rotateX(.8deg) rotateY(var(--vinyl-tilt-y)) scale(1.04)}.windowImage{filter:drop-shadow(.65rem .82rem .82rem #140f0c70);pointer-events:none}.rackImage{z-index:1;width:100%;height:auto;transform:translateY(calc(-1 * var(--shelf-seat)));filter:sepia(.17) saturate(.73) brightness(.77) contrast(1.06) drop-shadow(var(--mounted-shadow));pointer-events:none;display:block;position:absolute;top:0;left:0}.rackLip{z-index:5;clip-path:inset(var(--shelf-seat) 0 0);filter:sepia(.17)saturate(.73)brightness(.77)contrast(1.06)}.vinylCover{--album-perspective:37.08cqw;z-index:2;aspect-ratio:1;cursor:pointer;filter:saturate(.88)sepia(.04)contrast(.97);backface-visibility:hidden;width:100%;transform:perspective(var(--album-perspective)) rotateX(var(--album-rotate-x));transform-origin:bottom;background:0 0;border:0;padding:0;transition:transform .22s,filter .22s,box-shadow .22s;display:block;position:relative;overflow:visible;box-shadow:0 .42rem .62rem #140f0c6b,0 .16rem .12rem #140f0c57}.vinylCover img{object-fit:cover;width:100%;height:100%;display:block}.vinylCover:after{opacity:.12;content:"";pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 3px,#4430202e 3px 4px);position:absolute;inset:0}.vinylCover:hover,.vinylCover:focus-visible{z-index:4;filter:saturate(.94)sepia(.03)contrast();transform:translateY(-.15rem) perspective(var(--album-perspective)) rotateX(var(--album-rotate-x)) scale(1.014);box-shadow:0 .7rem .9rem #291b146b}.vinylCover:focus-visible,.contactVinyl:focus-visible{outline-offset:.25rem;outline:.22rem solid #9f2f24}.vinylCover:disabled{cursor:default}.vinylCover.isSelected{filter:saturate(.85)brightness(.94);transform:translateY(-.15rem) perspective(var(--album-perspective)) rotateX(var(--album-rotate-x))}.vinylTitle{z-index:6;color:#fffaf1;text-align:center;opacity:0;pointer-events:none;background:#2b211de0;border-radius:.2rem;width:max-content;max-width:10rem;padding:.28rem .5rem;font-size:clamp(.65rem,1vw,.82rem);line-height:1.1;transition:opacity .18s,transform .18s;position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%,.25rem)}.vinylSlot:hover .vinylTitle{opacity:1;transform:translate(-50%)}.vinylSlot:has(.vinylCover:focus-visible) .vinylTitle{opacity:1;transform:translate(-50%)}.playerArea{filter:drop-shadow(.72rem .88rem .82rem #140f0c6b);pointer-events:none}.playerArea:after{z-index:0;filter:blur(.9rem);content:"";pointer-events:none;background:#140f0c6b;border-radius:50%;height:6%;position:absolute;bottom:6%;left:8%;right:8%}.tableImage{z-index:1;filter:sepia(.17)saturate(.73)brightness(.77)contrast(1.06);width:100%;height:auto;display:block;position:relative}.playerTarget{pointer-events:none;border-radius:50%}.room{--scene-render-width:min(100vw, calc(100svh * 1672 / 941));--scene-render-height:calc(var(--scene-render-width) * 941 / 1672);--scene-horizontal-gap:max(0px, calc(100vw - var(--scene-render-width)));--scene-vertical-gap:max(0px, calc(100svh - var(--scene-render-height)));--scene-left-gap:calc(var(--scene-horizontal-gap) / 2);--scene-top-gap:calc(var(--scene-vertical-gap) / 2);--floor-anchor-shift:calc(var(--scene-vertical-gap) * .26);isolation:isolate;width:100%;min-height:100svh;position:relative;overflow:hidden}.roomAmbientFill{z-index:var(--layer-backdrop);pointer-events:none;background-image:url(/assets/wall%20_%20borderline-iSW9f3kH.png);background-position:50%;background-size:100% 100%;position:absolute;inset:0}.sceneCanvas{width:var(--scene-render-width);aspect-ratio:1672/941;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);container-type:inline-size}.posterWall{--poster-frame-width:.48cqw;z-index:var(--layer-foreground);pointer-events:none;position:absolute;inset:0}.namePosterDisplay{width:15.7895%;position:absolute;top:7.65144%;left:17.3445%}.guitarMount{z-index:var(--layer-foreground);pointer-events:none;width:9.33014%;position:absolute;top:7.65144%;left:4.48565%}.contactVinyls{z-index:4;pointer-events:auto;width:19.0191%;height:21.4665%;position:absolute;top:49.0967%;left:14.1148%}.contactVinyls .contactVinyl{width:33.9623%;position:absolute}.contactVinyl[data-contact=github]{top:0;left:0}.contactVinyl[data-contact=email]{top:1.9802%;left:45.9119%}.contactVinyl[data-contact=linkedin]{top:48.5149%;left:23.2704%}.contactVinyl[data-contact=resume]{top:48.5149%;left:67.2956%}.wallPlant{z-index:var(--layer-plants);width:14.9522%;height:auto;transform:translate(calc(-1 * var(--scene-left-gap)), calc(-1 * var(--scene-top-gap)));top:0;left:-4.1866%}.potPlant{z-index:var(--layer-plants);width:13.4569%;height:auto;transform:translateY(var(--floor-anchor-shift));top:48.2465%;left:-1.79426%}.windowImage{z-index:var(--layer-wall-objects);width:20.5742%;height:auto;position:absolute;top:5.52604%;left:74.8804%}.rackArea{z-index:var(--layer-wall-objects);width:30.3828%;height:100%;position:absolute;top:0;left:34.8086%}.albumShelf{--shelf-seat:58%;width:100%;height:0;position:absolute;left:0}.upperShelf{top:21.4665%}.lowerShelf{--shelf-seat:56%;top:39.8512%}.vinylSlot{--album-rotate-x:4deg;width:26.378%;position:absolute;bottom:0}.vinylSlot[data-album-section=about]{--album-rotate-x:5.5deg;left:3.93701%}.vinylSlot[data-album-section=projects]{--album-rotate-x:4.2deg;left:33.8583%}.vinylSlot[data-album-section=experience]{--album-rotate-x:6.2deg;left:63.7795%}.vinylSlot[data-album-section=skills]{--album-rotate-x:5deg;left:7.87402%}.vinylSlot[data-album-section=albums]{--album-rotate-x:4.5deg;left:37.7953%}.playerArea{z-index:var(--layer-foreground);width:28.7081%;transform:translateY(var(--floor-anchor-shift));position:absolute;top:45.8023%;left:35.6459%}.playerTarget{z-index:3;position:absolute;transform:translate(-50%,-50%)}.cabinetArtwork{aspect-ratio:1099/839;position:relative}.cabinetArtwork .tableImage{clip-path:inset(35.8% 0 0)}.cabinetTop{z-index:1;clip-path:inset(0 0 64.2%);filter:sepia(.17)saturate(.73)brightness(.77)contrast(1.06);width:100%;height:100%;position:absolute;inset:0}.turntableStage{z-index:2;aspect-ratio:3/2;width:44%;position:absolute;top:-3%;left:25%}.turntableImage{width:100%;height:100%;display:block}.tonearmPerspective{aspect-ratio:427/640;transform-origin:50% 20%;pointer-events:none;position:absolute}.tonearmImage{transform-origin:50% 20%;width:100%;height:100%;transform:rotate(var(--arm-angle));transition:transform var(--arm-duration) cubic-bezier(.3, 0, .2, 1);display:block}.tonearmOverlay{z-index:22;pointer-events:none;position:fixed}.recordTravel{z-index:var(--layer-record);pointer-events:none;width:160px;height:160px;position:fixed;top:0;left:0}.recordTravel.isMoving{z-index:24;will-change:transform, clip-path}.recordTilt{filter:drop-shadow(0 .08rem .05rem #fff2d61a);border-radius:50%;width:100%;height:100%;position:relative}.recordSurface{border-radius:50%;width:100%;height:100%;position:relative}.recordSurface:before{z-index:1;content:"";pointer-events:none;background:repeating-radial-gradient(circle,#0000 0 3.4%,#fff4da0f 3.62%,#04030314 3.86%,#0000 4.12% 5.6%);border-radius:50%;position:absolute;inset:1.1%;-webkit-mask:radial-gradient(circle,#0000 0 14%,#000 16%);mask:radial-gradient(circle,#0000 0 14%,#000 16%)}.recordTexture{z-index:0;width:102.81%;height:102.81%;position:absolute;top:-1.1%;left:-1.405%}.recordLabel{z-index:2;aspect-ratio:1;background:#e7d7b4;border:1px solid #d5c09a;border-radius:50%;width:25%;animation:.2s both recordLabelEnter;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 .08rem .12rem #0c090759,inset .08rem .08rem .08rem #fff7e12e,inset -.08rem -.1rem .1rem #4a36252e}.recordLabel img{object-fit:cover;opacity:.82;width:100%;height:100%}.recordHole{z-index:4;aspect-ratio:1;background:#292622;border-radius:50%;width:3%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 .6px #bfaf90}.recordSheen{z-index:3;pointer-events:none;background:radial-gradient(at 30% 24%,#fff7e22e,#0000 25%),conic-gradient(from 30deg,#0000 8%,#faeacc1f 20%,#0000 31% 63%,#faeacc12 73%,#0000 84%);border-radius:50%;position:absolute;inset:0;box-shadow:inset .14rem .12rem .16rem #fff6de21,inset -.24rem -.28rem .3rem #08060547}.recordShadow{z-index:19;filter:blur(.06rem);pointer-events:none;background:#16100a61;border-radius:50%;position:fixed;transform:translate(-50%,-50%);box-shadow:0 .08rem .12rem #16100a47,0 .24rem .36rem #16100a2e}@keyframes recordLabelEnter{0%{opacity:0}to{opacity:1}}.portfolioOverlayPosition{--paper:#eee3ca;--print:#3b3026;--accent:#59613e;--rule:#4a332140;z-index:var(--layer-dialog);background:#191b1394;justify-content:center;align-items:center;padding:3.5rem 4vw;animation:.28s both bookletBackdropEnter;display:flex;position:fixed;inset:0}.portfolioOverlayPosition.isClosing{animation:.24s both bookletBackdropExit}.portfolioOverlay{width:min(88vw,72rem);height:calc(100svh - 7rem);max-height:calc(100svh - 7rem);color:var(--print);background-color:var(--paper);background-image:repeating-linear-gradient(0deg,#0000 0 3px,#68461f06 3px 4px),radial-gradient(at 10% 0,#faf1da,#0000 75%);border:1px solid #c5b18a;border-radius:3px 6px 6px 3px;flex-direction:column;animation:.32s cubic-bezier(.2,.7,.3,1) both bookletEnter;display:flex;position:relative;overflow:hidden;box-shadow:2px 2px #d3c4a5,4px 4px #a8997d,0 24px 64px #13100b5c}.portfolioOverlay.isClosing{pointer-events:none;animation:.24s both overlayExit}.portfolioOverlay p{margin:0}.portfolioContent{flex:1;min-height:0;overflow:hidden}.bookletBar{border-bottom:1px solid var(--rule);background:#e6dac0;flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;min-height:3.4rem;padding:.35rem .8rem .35rem 1.5rem;display:flex}.bookletBarLabel,.closeLabel{color:#625642;font:.65rem Courier New,monospace}.closeButton{min-height:2.75rem;color:var(--print);cursor:pointer;background:0 0;border-radius:2rem;flex-shrink:0;align-items:center;gap:.85rem;padding:0;display:inline-flex}.closeIcon{aspect-ratio:1;border:1px solid var(--rule);border-radius:50%;place-items:center;width:2.75rem;font-size:1.7rem;line-height:1;transition:background-color .16s;display:grid}.closeButton:hover:not(:disabled) .closeIcon{background:#d7c6a4}.closeButton:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.closeButton:disabled{cursor:default}.bookletSpread{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:stretch;height:100%;display:grid}.bookletIdentity{background:linear-gradient(90deg,#0000 92%,#50392214 99%,#5039222b);border-right:1px solid #6f563740;flex-direction:column;min-width:0;padding:clamp(1.8rem,3.2vw,3.25rem);display:flex}.bookletCover{width:min(82%,42svh,21rem);margin:clamp(3rem,2.5svh,1.5rem) auto 2rem}.bookletCover img{aspect-ratio:1;object-fit:cover;width:100%;display:block;transform:rotate(-5deg);box-shadow:2px 4px 7px #2a1f1540}.bookletHeading{margin-top:auto}.portfolioOverlay h1{color:var(--print);letter-spacing:-.065em;overflow-wrap:anywhere;text-wrap:balance;margin:0 0 .7rem;font-size:clamp(2.9rem,5.6vw,5.6rem);font-weight:400;line-height:.98}.portfolioOverlay h1>span{color:var(--accent)}[data-booklet-section=experience] h1{font-size:clamp(2.3rem,4.3vw,4.3rem)}.portfolioOverlay .bookletIntro{color:#6b5b46;max-width:28ch;font-size:1.15rem;font-style:italic;line-height:1.4}.bookletNotes{overscroll-behavior:contain;scrollbar-color:#a99573 transparent;scrollbar-width:thin;background:linear-gradient(90deg,#ffffff38,#0000 9%);min-width:0;min-height:0;padding:clamp(1.8rem,3.2vw,3.25rem);overflow-y:auto}.bookletNotes h2{letter-spacing:-.03em;margin:.32rem 0 .5rem;font-size:clamp(1.25rem,1.9vw,1.9rem);font-weight:400;line-height:1.15}.bookletNotes .entryDescription,.bookletNotes .entryList{color:#665743;overflow-wrap:anywhere;max-width:68ch;margin-top:.9rem;font-size:.95rem;line-height:1.65}.bookletNotes .entryMeta{color:#76634c;overflow-wrap:anywhere;margin-top:.55rem;font:.73rem/1.5 Courier New,monospace}.bookletNotes h2+.entryMeta{margin-top:.5rem}.bookletNotes .entryMeta+.entryMeta{margin-top:.25rem}.bookletNotes .entryList{padding-left:1.3rem}.bookletNotes .entryList>li{padding-left:.15rem}.bookletNotes .entryList>li+li{margin-top:.65rem}.bookletNotes .entryDescription+.entryDescription{margin-top:1rem}.projectTracks{margin:0;padding:0;list-style:none}.projectTracks>li{border-bottom:1px solid var(--rule);grid-template-columns:2.3rem minmax(0,1fr);gap:.65rem;padding:1.8rem 0;display:grid}.trackNumber{color:var(--accent);font-size:1.9rem;font-style:italic;line-height:1}.aboutIntroduction{border-bottom:1px solid var(--rule);padding-bottom:2rem}.aboutIntroduction .entryDescription{font-size:1.05rem;line-height:1.75}.experienceTimeline{border-left:1px solid var(--rule);margin:1.8rem 0 0 .35rem;padding:0 0 0 1.8rem;list-style:none}.experienceTimeline>li{padding:0 0 2rem;position:relative}.experienceTimeline>li:last-child{padding-bottom:.5rem}.experienceTimeline>li:before{background:var(--accent);content:"";border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:.3rem;left:-2.08rem}.portfolioOverlay .sectionNote{color:#665743;font-size:.9rem;line-height:1.65}.skillGroups{gap:1.45rem;display:grid}.skillGroups section{border-bottom:1px solid var(--rule);padding:0 0 1.35rem}.skillGroups section:last-child{border-bottom:0;padding-bottom:0}.skillGroups h2{color:var(--accent);letter-spacing:.09em;text-transform:uppercase;margin:0 0 .75rem;font:700 .78rem/1.2 Courier New,monospace}.skillTags{flex-wrap:wrap;gap:.55rem 1rem;margin:0;padding:0;list-style:none;display:flex}.skillTags li{color:#554735;white-space:nowrap;align-items:center;font:700 .78rem/1.35 Courier New,monospace;display:inline-flex}.skillTags li:before{color:#a07e43;content:"•";margin-right:.38rem}@keyframes bookletBackdropEnter{0%{opacity:0}to{opacity:1}}@keyframes bookletBackdropExit{0%{opacity:1}to{opacity:0}}@keyframes bookletEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes overlayExit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}@media (width<=1000px){.portfolioOverlayPosition{padding:2rem}.portfolioOverlay{width:100%;height:calc(100svh - 4rem);max-height:calc(100svh - 4rem)}.bookletIdentity,.bookletNotes{padding:1.8rem}.projectTracks>li{padding:1.4rem 0}}@media (width<=600px){.portfolioOverlayPosition{padding:.65rem}.portfolioOverlay{height:calc(100svh - 1.3rem);max-height:calc(100svh - 1.3rem)}.portfolioContent{overscroll-behavior:contain;scrollbar-color:#a99573 transparent;scrollbar-width:thin;overflow-y:auto}.bookletBar{gap:.5rem;padding-left:1rem}.closeLabel{display:none}.bookletSpread{grid-template-columns:minmax(0,1fr);height:auto}.bookletIdentity{border-right:0;border-bottom:1px solid var(--rule);background:linear-gradient(#0000 88%,#50392212);min-height:0;padding:1.65rem;position:static}.bookletNotes{overflow-y:visible}.bookletCover{width:60%;max-width:12rem;margin-top:.5rem;margin-bottom:1.65rem}.portfolioOverlay h1{font-size:3.9rem}[data-booklet-section=experience] h1{font-size:clamp(2.2rem,10vw,3.6rem)}.bookletNotes{padding:1.65rem}.projectTracks h2{font-size:1.4rem}.projectTracks>li{grid-template-columns:1.8rem minmax(0,1fr)}.skillGroups{gap:1.2rem}.skillTags{gap:.45rem .8rem}.skillTags li{font-size:.72rem}}@media (width<=360px){.portfolioOverlay h1{font-size:3.4rem}[data-booklet-section=experience] h1{font-size:2.2rem}}
