@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.site-header{--nav-font-size:1.02rem;--nav-font-weight:400;--control-size:2rem;--control-radius:.5rem;--nav-ink:var(--room-nav-ink,var(--wall-light,var(--palette-porcelain)));--nav-outline:var(--room-outline,var(--nav-ink));--nav-border-color:var(--room-structural-line,color-mix(in srgb, var(--nav-outline) 22%, transparent));--nav-underline-color:color-mix(in srgb, var(--nav-ink) 72%, transparent);isolation:isolate;z-index:50;box-sizing:border-box;width:100%;height:var(--header-height);border:0;border-bottom:1px solid var(--nav-border-color);color:var(--nav-ink);font-family:var(--font-sans);box-shadow:none;background:0 0;position:relative}html:not([data-theme-ready=true]) .site-header,html:not([data-theme-ready=true]) .site-header *{transition:none!important}.header-grid{grid-template-columns:repeat(12,minmax(0,1fr));width:100%;height:100%;display:grid}.header-grid,.header-grid *{box-sizing:border-box}.brand,.primary-nav,.mode-slot{justify-content:center;align-items:center;min-width:0;display:flex}.brand{grid-column:1/3}.primary-nav{border-left:1px solid var(--nav-border-color);grid-column:3/11}.mode-slot{border-left:1px solid var(--nav-border-color);grid-column:11/13}.brand,.primary-nav a{color:inherit;font-family:inherit;font-size:var(--nav-font-size);font-weight:var(--nav-font-weight);text-align:center;text-underline-offset:.34em;line-height:1;text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:.08em;transition:text-decoration-color .14s}.brand{white-space:nowrap;width:100%;height:100%}.brand:hover,.brand:focus-visible,.primary-nav a:hover,.primary-nav a:focus-visible,.primary-nav a[aria-current=page]{color:inherit;text-decoration-color:var(--nav-underline-color)}.primary-nav ul{justify-content:space-evenly;align-items:center;width:100%;height:100%;margin:0;padding:0;list-style:none;display:flex}.primary-nav li{flex:25%;justify-content:center;align-items:center;min-width:0;height:100%;display:flex}.primary-nav a{white-space:nowrap;justify-content:center;align-items:center;height:100%;padding-inline:clamp(.25rem,1vw,1rem);display:flex}.mode-slot>astro-island{flex:none;justify-content:center;align-items:center;width:auto;min-width:0;height:100%;display:flex}.mode-slot{gap:.55rem}.mode-control,.audio-control{justify-content:center;align-items:center;width:auto;height:100%;display:flex}.header-action{width:var(--control-size);height:var(--control-size);border:1px solid var(--nav-border-color);border-radius:var(--control-radius);outline-offset:1px;color:inherit;cursor:pointer;background:0 0;outline:2px solid #0000;place-items:center;padding:0;transition:border-color .14s,outline-color .14s,color .14s;display:grid}.header-action:hover,.header-action:focus-visible{border-color:color-mix(in srgb, var(--nav-outline) 68%, transparent);outline-color:color-mix(in srgb, var(--room-outline,var(--header-accent)) 38%, transparent)}.header-action-icon{place-items:center;width:1.2rem;height:1.2rem;display:grid}.mode-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;width:1.2rem;height:1.2rem;display:none}.audio-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;width:1.2rem;height:1.2rem;display:block;overflow:visible;transform:translate(-1px)}html[data-theme=light] .mode-moon,html[data-theme=dark] .mode-sun{display:block}@media (width<=40rem){.site-header{--nav-font-size:.88rem;--control-size:1.9rem}.header-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr))}.brand{grid-area:1/1/auto/3;font-size:.9rem}.mode-slot{grid-area:1/3/auto/5}.primary-nav{border-top:1px solid var(--nav-border-color);border-left:0;grid-area:2/1/auto/5}.primary-nav a{padding-inline:.08rem}}@media (prefers-reduced-motion:reduce){.site-header,.header-action,.brand,.primary-nav a{transition:none}}.skip-link[data-astro-cid-qydmhg6g]{z-index:1000;background:var(--surface-strong);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .85rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link[data-astro-cid-qydmhg6g]:focus{transform:translateY(0)}.floor-scene{z-index:5;contain:layout paint style;pointer-events:none;position:absolute;inset:0;overflow:hidden}.floor-scene__underlay,.floor-scene__viewport,.floor-scene__lighting{bottom:0;left:0;right:0;top:var(--floor-seam-top);pointer-events:none;position:absolute}.floor-scene__underlay{z-index:1;background:var(--floor-tile-dark,var(--wall-dark,#050505))}.floor-scene__viewport{z-index:2;perspective:109vh;perspective-origin:50% 0;overflow:hidden;transform:translateZ(0)}.floor-scene__plane{transform-origin:50% 0;backface-visibility:hidden;will-change:transform;background:conic-gradient(from 90deg, var(--floor-tile-dark,var(--wall-dark,#050505)) 0 25%, var(--floor-tile-light,var(--wall-light,#f4f1e9)) 0 50%, var(--floor-tile-dark,var(--wall-dark,#050505)) 0 75%, var(--floor-tile-light,var(--wall-light,#f4f1e9)) 0) 0 0 / 168px 168px;width:calc(100% + 336px);height:42rem;position:absolute;top:0;left:-168px}.floor-scene__lighting{z-index:3;background:linear-gradient(180deg, #00000038, transparent 1.35rem), linear-gradient(180deg, color-mix(in srgb, var(--wall-light,#f4f1e9) 8%, transparent), transparent 20% 76%, #00000029), linear-gradient(108deg, transparent 0 32%, color-mix(in srgb, var(--wall-light,#f4f1e9) 2.4%, transparent) 41%, transparent 50%) 0 0 / 30rem 100% repeat-x, linear-gradient(180deg, color-mix(in srgb, var(--wall-light,#f4f1e9) 1.2%, transparent), transparent 45%);opacity:.14}@supports (height:100dvh){.floor-scene__viewport{perspective:109dvh}}@media (width<=40rem){.floor-scene__plane{height:36rem}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}body.wall-home-page{--wall-outline:var(--room-outline);--room-nav-ink:var(--room-outline);--room-label-ink:var(--room-outline);--room-control-ink:var(--room-outline);--room-structural-line:color-mix(in srgb, var(--room-outline) 22%, transparent);--header-accent:var(--room-outline);width:100%;height:100vh;min-height:100vh;position:relative;overflow:hidden}html[data-theme=light] body.wall-home-page{--room-outline:var(--palette-light-ink);--room-structural-line:#0000006b;--room-control-bg:#ffffff8a}html[data-theme=dark] body.wall-home-page{--room-outline:#fff}@supports (height:100svh){body.wall-home-page{height:100svh;min-height:100svh}}@supports (height:100dvh){body.wall-home-page{height:100dvh;min-height:100dvh}}body.wall-home-page .wall-home-main{width:100%;min-width:0;height:100%;min-height:0;padding:0;display:block;position:absolute;inset:0;overflow:hidden}body.wall-home-page .primary-room-backdrop{background:var(--wall-dark,#010101)}body.wall-home-page .primary-room-backdrop>*{visibility:hidden}.wall-home-main>astro-island{width:100%;height:100%;min-height:0;display:block}body.scrolling-primary-room>main{padding-inline:0}.page-scroll-installation{--scroll-max-width:31.25rem;--scroll-side-gap:clamp(1.25rem, 5vw, 3rem);--paper:transparent;--paper-light:transparent;--paper-mid:transparent;--paper-deep:transparent;--paper-edge:transparent;--paper-ink:#050505;--paper-muted:#050505ad;--paper-rule:#0505056b;--paper-accent:#050505;--page-line-color:var(--room-structural-line,color-mix(in srgb, var(--paper-ink) 72%, transparent));--page-line-width:1px;z-index:20;box-sizing:border-box;width:100%;min-height:var(--room-wall-min-height,0);padding:0 max(var(--scroll-side-gap), env(safe-area-inset-right)) clamp(3.5rem, 8vh, 6rem) max(var(--scroll-side-gap), env(safe-area-inset-left));color:var(--paper-ink);position:relative}html[data-theme=dark] .page-scroll-installation{--paper-ink:#fff;--paper-muted:#ffffffb3;--paper-rule:#ffffff6e;--paper-accent:#fff}.page-scroll-hanging{width:min(100%, var(--scroll-max-width));margin-inline:auto}.page-scroll-paper,.page-scroll-paper__sheet{box-sizing:border-box;width:100%;min-width:0;position:relative}.page-scroll-paper{padding:0}.page-scroll-paper__sheet{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.page-scroll-paper__sheet:before,.page-scroll-paper__sheet:after,.page-scroll-paper__roll{display:none}.page-scroll-paper__viewport{box-sizing:border-box;width:100%;min-width:0;height:auto;min-height:0;color:var(--paper-ink);user-select:text;padding:0;position:relative;overflow:visible}.page-scroll-paper__viewport:focus-visible{outline:none}.page-scroll-paper__viewport ::selection{background:color-mix(in srgb, var(--paper-accent) 22%, transparent);color:var(--paper-ink);text-shadow:none}.page-scroll-header{height:calc(var(--brick-course-height) * 6);margin-bottom:var(--page-header-gap,clamp(2rem, 4.5vh, 3rem));text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.page-scroll-header h1{color:var(--paper-accent);letter-spacing:-.045em;margin:0;font-size:clamp(2.45rem,5.5vw,3.8rem);font-weight:400;line-height:.96}.page-scroll-header__rule{width:100%;height:var(--page-line-width);background:var(--page-line-color);margin:0;position:absolute;bottom:0;left:0;right:0}@media (width<=40rem){.page-scroll-installation{--scroll-side-gap:clamp(1rem, 5.5vw, 1.45rem);--scroll-max-width:31.25rem;padding-bottom:3.5rem}.page-scroll-header h1{font-size:clamp(2.25rem,12vw,3.15rem)}.page-scroll-header{margin-bottom:var(--page-header-gap,clamp(1.65rem, 5vh, 2.25rem))}}.about-room-main{background:0 0}.about-scroll-installation{--about-rule-gap:clamp(2rem, 4.5vh, 3rem)}.about-scroll-installation .page-scroll-header{margin-bottom:var(--about-rule-gap)}.about-scroll-paper__viewport{--about-body-font-size:clamp(1.05rem, 1.55vw, 1.12rem);display:block}.about-scroll-rule{width:100%;height:var(--page-line-width);margin:0;margin-top:var(--about-rule-gap);background:var(--page-line-color)}.about-scroll-portrait-wrap{--about-frame-outline:color-mix(in srgb, var(--paper-accent) 52%, var(--paper-ink));float:left;width:clamp(8rem,29%,8.6rem);margin:.04rem clamp(1rem,2vw,1.25rem) .42rem 0}.about-scroll-portrait-frame{aspect-ratio:1;box-sizing:border-box;border:1px solid var(--paper-accent);background:0 0;width:100%;display:block;position:relative}.about-scroll-portrait-glass{background:0 0;display:block;position:absolute;inset:0;overflow:hidden}.about-scroll-portrait{z-index:1;object-fit:cover;width:100%;height:100%;display:block;position:relative}.about-scroll-portrait-shade,.about-scroll-portrait-reflection,.about-scroll-portrait-sill{display:none}.about-scroll-intro{max-width:none;color:var(--paper-ink);font-size:var(--about-body-font-size);margin:0;line-height:1.58}.about-scroll-intro:after{clear:both;content:"";display:block}.about-scroll-intro p{margin:0}.about-scroll-intro p+p{margin-top:1.18em}.about-scroll-intro__lead{padding-top:.55em}.about-scroll-intro__lead:first-letter{float:left;color:var(--paper-accent);letter-spacing:-.035em;margin:-.18em .07em 0 0;font-size:2.75em;font-weight:600;line-height:.55}.about-scroll-sections{border-bottom:var(--page-line-width) solid var(--page-line-color);max-width:none;margin:0 auto}.about-scroll-section{position:relative}.about-scroll-section+.about-scroll-section{border-top:var(--page-line-width) solid var(--page-line-color);margin-top:0}.about-scroll-section__toggle{width:100%;min-height:var(--about-row-height,3rem);color:var(--paper-ink);cursor:pointer;letter-spacing:.03em;text-align:left;text-transform:uppercase;appearance:none;background:0 0;border:0;justify-content:space-between;align-items:center;gap:1rem;margin:0;padding:.1rem .15rem .1rem 0;font-size:clamp(1.04rem,1.85vw,1.18rem);font-weight:600;line-height:1.15;display:flex}.about-scroll-section__toggle svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.55px;transform-origin:50%;flex:none;width:1.38rem;height:1.38rem;transition:transform .62s cubic-bezier(.22,1,.36,1)}.about-scroll-section.is-open .about-scroll-section__toggle svg{transform:rotate(90deg)}.about-scroll-section__toggle:hover,.about-scroll-section__toggle:focus-visible{color:var(--paper-ink);text-underline-offset:.22em;text-decoration:underline .06em}.about-scroll-section__toggle:focus-visible{outline:1px solid color-mix(in srgb, var(--paper-ink) 46%, transparent);outline-offset:.18rem}.about-scroll-section__panel{grid-template-rows:0fr;transition:grid-template-rows .64s cubic-bezier(.22,1,.36,1);display:grid}.about-scroll-section.is-open .about-scroll-section__panel{grid-template-rows:1fr}.about-scroll-section__content{min-height:0;color:var(--paper-ink);font-size:var(--about-body-font-size);line-height:1.55;overflow:hidden}.about-scroll-section__body{opacity:0;padding:.18rem clamp(1.25rem,4vw,2rem) 1.25rem 0;transition:opacity .42s}.about-scroll-section.is-open .about-scroll-section__body{opacity:1;transition-delay:.12s}.about-scroll-section__content p{margin:0}.about-scroll-section__content p+p{margin-top:.72em}.about-scroll-section__links{flex-wrap:wrap;gap:.45rem 1rem;margin-top:.86rem;display:flex}.about-scroll-section__links a{color:var(--paper-ink);text-decoration-color:color-mix(in srgb, currentColor 42%, transparent);align-items:center;gap:.32rem;font-size:.94em;display:inline-flex}.about-scroll-section__links a:hover,.about-scroll-section__links a:focus-visible{color:var(--paper-ink);text-decoration-color:currentColor}.about-scroll-section__links svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px;width:.86rem;height:.86rem}@media (width<=40rem){.about-scroll-installation{--about-rule-gap:clamp(1.65rem, 5vh, 2.25rem)}.about-scroll-paper__viewport{--about-body-font-size:clamp(1rem, 4.2vw, 1.08rem)}.about-scroll-portrait-wrap{float:left;width:clamp(7rem,29vw,7.8rem);margin:.04rem .9rem .4rem 0}.about-scroll-intro{line-height:1.57}.about-scroll-sections{margin-top:0}.about-scroll-section__toggle{--about-row-height:3.15rem}}@media (width<=25rem){.about-scroll-paper__viewport{--about-body-font-size:.96rem}.about-scroll-portrait-wrap{width:clamp(6.35rem,29vw,7rem);margin-right:.78rem}}@media (prefers-reduced-motion:reduce){.about-scroll-section__toggle svg,.about-scroll-section__panel,.about-scroll-section__body{transition:none}}body.projects-wall-page,.projects-wall-main{width:100%;position:relative}.projects-wall-main{z-index:3;min-width:0;padding:0;overflow:visible}.project-index{--project-hover:color-mix(in srgb, var(--paper-accent) 7%, transparent);--project-entry-padding:.66rem;--page-header-gap:0}.project-scroll-viewport{padding-inline:0}.project-sheet-scroll{outline:none;width:100%;min-width:0;overflow-x:hidden}.project-sheet-scroll:focus-visible{outline:1px solid color-mix(in srgb, var(--paper-accent) 56%, transparent);outline-offset:.25rem}.project-sheet{width:100%;min-width:0}.project-sheet table{border-collapse:collapse;table-layout:fixed;width:100%}.project-sheet__name-column{width:42%}.project-sheet__description-column{width:58%}.project-sheet thead{display:none}.project-sheet th,.project-sheet td{padding:var(--project-entry-padding) 0;color:var(--paper-ink);text-align:left;vertical-align:top;overflow-wrap:break-word;font-size:clamp(.94rem,1vw,1rem);font-weight:400;line-height:1.35}.project-sheet tbody tr>*{border-top:var(--page-line-width) solid var(--page-line-color);border-bottom:var(--page-line-width) solid var(--page-line-color)}.project-sheet tbody tr>*+*{padding-left:clamp(.9rem,2vw,1.15rem)}.project-sheet tbody tr:first-child>*{border-top:0}.project-sheet thead th,.project-sheet__name{overflow-wrap:normal;word-break:normal}.project-sheet tbody th{vertical-align:top}.project-sheet tbody tr{cursor:pointer;transition:background-color var(--duration-fast) ease;position:relative}.project-sheet tbody tr:hover{background:var(--project-hover)}.project-sheet tbody tr:has(.project-sheet__name:focus-visible){background:var(--project-hover);outline:2px solid var(--paper-accent);outline-offset:-2px}.project-sheet__name{min-width:0;color:var(--paper-ink);letter-spacing:.045em;text-transform:uppercase;align-items:flex-start;font-size:clamp(.88rem,1vw,.96rem);font-weight:600;line-height:1.2;text-decoration:none;display:flex}.project-sheet__name:hover,.project-sheet__name:focus-visible{color:var(--paper-accent)}.project-sheet__name:focus-visible{outline:none}.project-sheet__name-title{text-underline-offset:.25em;overflow-wrap:break-word;min-width:0;text-decoration-line:none;text-decoration-thickness:.07em}.project-sheet__name:hover .project-sheet__name-title,.project-sheet__name:focus-visible .project-sheet__name-title,.project-sheet tbody tr:hover .project-sheet__name-title{text-decoration-line:underline;text-decoration-color:currentColor}.project-sheet__description{color:var(--paper-muted)!important}@media (width<=64rem){.project-scroll-viewport{padding-inline:0}}@media (width<=40rem){.project-scroll-viewport{padding-inline:0}.project-sheet{min-width:0}.project-sheet th,.project-sheet td{font-size:.88rem}.project-sheet tbody tr>*+*{padding-left:clamp(.7rem,3vw,.9rem)}.project-sheet__name{letter-spacing:.04em;font-size:clamp(.82rem,3vw,.88rem)}.project-sheet__name-column{width:43%}.project-sheet__description-column{width:57%}}@media (prefers-reduced-motion:reduce){.project-sheet tbody tr{transition:none}}body.resume-wall-page,.resume-wall-main{width:100%;position:relative}.resume-wall-main{z-index:3;background:0 0;min-width:0;padding:0;overflow:visible}.resume-scroll-viewport{padding-inline:0}.resume-gallery{gap:clamp(1rem,2vw,1.35rem);width:100%;min-width:0;display:grid}.resume-switcher{min-width:0;color:var(--paper-ink);border:0;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:.1rem;display:flex}.resume-switcher__tabs{align-items:center;gap:clamp(1.25rem,2.4vw,2rem);min-width:0;display:flex}.resume-switcher__tab,.resume-switcher__download{box-sizing:border-box;color:var(--paper-ink);letter-spacing:.045em;opacity:.74;text-transform:uppercase;background:0 0;border:0;outline:none;font-size:clamp(.86rem,1vw,.94rem);font-weight:400;line-height:1;transition:opacity .14s;position:relative}.resume-switcher__tab{cursor:pointer;padding:.5rem 0}.resume-switcher__tab:after,.resume-switcher__download:after{content:"";opacity:0;background:currentColor;height:1px;position:absolute;bottom:.08rem;left:0;right:0}.resume-switcher__tab[aria-selected=true],.resume-switcher__tab:hover,.resume-switcher__tab:focus-visible,.resume-switcher__download:hover,.resume-switcher__download:focus-visible{color:var(--paper-accent);opacity:1}.resume-switcher__tab[aria-selected=true]:after,.resume-switcher__tab:hover:after,.resume-switcher__tab:focus-visible:after,.resume-switcher__download:hover:after,.resume-switcher__download:focus-visible:after{opacity:1}.resume-switcher__download{user-select:none;white-space:nowrap;flex:none;justify-content:center;align-items:center;gap:.42rem;min-height:2rem;padding:.5rem 0;text-decoration:none;display:inline-flex}.resume-switcher__download-icon{font-size:1rem;line-height:.75;transform:translateY(-.05rem)}.resume-scrolls__stage{outline:none;grid-template-columns:minmax(0,1fr);width:100%;min-width:0;display:grid}.resume-scrolls__stage:focus-visible{outline:1px solid color-mix(in srgb, var(--paper-accent) 55%, transparent);outline-offset:.3rem}.resume-scroll{outline:none;width:100%;min-width:0;container-type:inline-size}.resume-scroll__sheet{background:0 0;border:0;overflow:visible}.resume-scroll:focus-visible{outline:2px solid var(--paper-accent);outline-offset:.25rem}@media (width<=64rem){.resume-scroll-viewport{padding-inline:0}}@media (width<=40rem){.resume-scroll-viewport{padding-inline:0}.resume-gallery{gap:.78rem}.resume-switcher{gap:.75rem}.resume-switcher__tabs{gap:clamp(.8rem,4vw,1.25rem)}.resume-switcher__tab,.resume-switcher__download{letter-spacing:.025em;font-size:clamp(.8rem,3vw,.86rem)}}@media (width<=25rem){.resume-switcher{align-items:flex-start}.resume-switcher__tabs{flex-direction:column;align-items:flex-start;gap:.15rem}}@media (prefers-reduced-motion:reduce){.resume-switcher__tab,.resume-switcher__download,.resume-switcher__tab:after,.resume-switcher__download:after{transition:none}}.generated-resume{--resume-name:clamp(1.75rem, 6cqw, 2.8rem);--resume-section:clamp(1.08rem, 2.65cqw, 1.24rem);--resume-entry:clamp(.98rem, 2.3cqw, 1.08rem);--resume-detail:clamp(.92rem, 2.12cqw, 1rem);--resume-meta:clamp(.84rem, 1.95cqw, .92rem);box-sizing:border-box;width:100%;min-width:0;color:var(--paper-ink);font-family:var(--font-site);font-size:var(--resume-detail);font-kerning:normal;font-variant-numeric:lining-nums tabular-nums;hyphens:none;overflow-wrap:break-word;text-rendering:optimizelegibility;user-select:text;background:0 0;padding:clamp(1.4rem,4cqw,2.2rem) 0 0;font-weight:400;line-height:1.48}.generated-resume ::selection{background:color-mix(in srgb, var(--paper-ink) 22%, transparent);color:var(--paper-ink)}.generated-resume p,.generated-resume h1,.generated-resume table,.generated-resume ul{margin-block:0}.generated-resume strong,.generated-resume b{font-weight:700}.generated-resume a,.generated-resume a:visited{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 38%, transparent);text-underline-offset:.2em;text-decoration-thickness:.06em}.generated-resume a:hover,.generated-resume a:focus-visible{color:var(--paper-ink);text-decoration-color:currentColor}.generated-resume .center{text-align:left;border:0;flex-wrap:wrap;justify-content:flex-start;align-items:flex-start;gap:.2rem 0;padding-bottom:clamp(1.1rem,3.5cqw,1.7rem);display:flex}.generated-resume .center p{margin:0}.generated-resume .center p:first-child{color:var(--paper-ink);font-size:var(--resume-name);letter-spacing:.075em;flex:0 0 100%;font-weight:700;line-height:1}.generated-resume .center p:nth-child(n+2){color:var(--paper-muted);font-size:var(--resume-meta);flex:0 0 100%;line-height:1.3}.generated-resume--clarinet .center p:nth-child(2) span{flex-direction:column;align-items:flex-start;display:flex}.generated-resume--clarinet .center p:nth-child(2) a+a:before,.generated-resume .center>p:nth-child(n+3) a:before{display:none}.generated-resume h1{border:0;border-bottom:var(--page-line-width,1px) solid var(--page-line-color,currentColor);color:var(--paper-ink);font-size:var(--resume-section);letter-spacing:.14em;text-transform:uppercase;margin-top:clamp(2.1rem,5.4cqw,2.95rem);padding:0 0 .4rem;font-weight:700;line-height:1.2}.generated-resume h1#education{margin-top:clamp(1.6rem,4.2cqw,2.25rem)}.generated-resume h1+p{margin-top:.8rem}.generated-resume h1+p strong{color:var(--paper-ink);font-size:var(--resume-entry);letter-spacing:.025em}.generated-resume table,.generated-resume tbody{border:0;width:100%;display:block}.generated-resume table{border-collapse:collapse;margin-top:.72rem}.generated-resume table+table{margin-top:.16rem}.generated-resume tr{border:0;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.25rem 1rem;min-width:0;display:grid}.generated-resume tr+tr{margin-top:.62rem}.generated-resume td{min-width:0;color:var(--paper-ink);vertical-align:baseline;border:0;padding:0;text-align:left!important}.generated-resume td:last-child{color:var(--paper-muted);font-size:var(--resume-meta);text-align:right!important}.generated-resume table:has(tr:only-child):has(strong){margin-top:1.12rem}.generated-resume h1+table:has(tr:only-child):has(strong),.generated-resume h1+p+table{margin-top:.72rem}.generated-resume table:has(tr:only-child):has(strong) td:first-child{color:var(--paper-ink);font-size:var(--resume-entry);letter-spacing:.025em}.generated-resume table:has(tr:only-child):has(strong) td:last-child{font-style:italic}.generated-resume table:has(tr:only-child):has(strong)+table tr{grid-template-columns:minmax(0,1fr);gap:.18rem}.generated-resume table:has(tr:only-child):has(strong)+table td:first-child{color:color-mix(in srgb, var(--paper-ink) 84%, transparent);font-size:var(--resume-detail)}.generated-resume table:has(tr:only-child):has(strong)+table td:last-child{color:var(--paper-muted);font-size:var(--resume-meta);line-height:1.35;text-align:left!important}.generated-resume table:has(tr:nth-child(2)) tr{grid-template-columns:minmax(6.8rem,auto) minmax(0,1fr);align-items:start;gap:.25rem 1rem}.generated-resume table:has(tr:nth-child(2)) td:last-child{color:var(--paper-ink);font-size:var(--resume-detail);text-align:left!important}.generated-resume ul{color:color-mix(in srgb, var(--paper-ink) 82%, transparent);margin-top:.7rem;margin-left:1.05rem;padding:0;list-style-position:outside}.generated-resume li{margin:.36rem 0;padding-left:.32rem}.generated-resume li::marker{color:color-mix(in srgb, var(--paper-ink) 48%, transparent);font-size:.8em}.generated-resume li p{margin:0}@container (width<=34rem){.generated-resume{--resume-name:clamp(1.55rem, 8cqw, 2.1rem);--resume-section:clamp(1rem, 4.1cqw, 1.12rem);--resume-entry:clamp(.93rem, 3.6cqw, 1.01rem);--resume-detail:clamp(.88rem, 3.4cqw, .96rem);--resume-meta:clamp(.8rem, 3.05cqw, .87rem);padding:1.25rem 0 0}.generated-resume .center{text-align:left;justify-content:flex-start}.generated-resume .center p:nth-child(n+2){flex:0 0 100%}.generated-resume .center p:nth-child(2) a+a:before,.generated-resume .center>p:nth-child(n+3) a:before{display:none}.generated-resume tr,.generated-resume table:has(tr:nth-child(2)) tr{grid-template-columns:minmax(0,1fr);gap:.12rem}.generated-resume td:last-child,.generated-resume table:has(tr:nth-child(2)) td:last-child{text-align:left!important}.generated-resume ul{margin-left:.9rem}}@media (width<=25rem){.generated-resume{--resume-section:1.02rem;--resume-entry:.94rem;--resume-detail:.86rem;--resume-meta:.79rem}}body.room-theme-contact main,.contact-room-main{padding-inline:0}.contact-page{--contact-ink:var(--paper-ink);--contact-muted:var(--paper-muted);--contact-placeholder:color-mix(in srgb, var(--paper-muted) 88%, transparent);--contact-line:var(--paper-rule);--contact-line-strong:color-mix(in srgb, var(--paper-ink) 55%, transparent);--contact-surface:#ffffff36;--contact-field:#ffffff5c;--contact-hover:color-mix(in srgb, var(--paper-accent) 7%, transparent)}.contact-scroll-viewport{padding-inline:0}.contact-wall{width:100%;position:relative}.contact-station{width:100%;min-width:0;display:block}.contact-panel{box-sizing:border-box;box-shadow:none;background:0 0;border:0;border-radius:0;position:relative}.contact-compose{padding:0}.contact-kicker,.contact-topics legend,.contact-note>span{color:var(--contact-muted);font-family:var(--font-mono);letter-spacing:.095em;text-transform:uppercase;margin:0;font-size:clamp(.78rem,.9vw,.86rem);font-weight:600;line-height:1.2}.contact-topics legend{color:var(--contact-ink);letter-spacing:.085em;font-size:clamp(.84rem,1vw,.92rem)}.contact-email-row{grid-template-columns:minmax(0,1fr) auto;justify-content:stretch;align-items:center;gap:.7rem;margin-top:clamp(.45rem,.8vw,.6rem);display:grid}.contact-email-address{min-width:0;color:var(--contact-ink);letter-spacing:-.015em;text-underline-offset:.22em;overflow-wrap:anywhere;font-size:clamp(1.2rem,5vw,1.58rem);font-weight:500;line-height:1.08;text-decoration-color:#0000;text-decoration-thickness:.06em}.contact-email-address:hover,.contact-email-address:focus-visible{color:var(--paper-accent);text-decoration-color:currentColor}.contact-copy,.contact-compose-button{border:1px solid var(--paper-accent);min-height:3rem;color:var(--contact-ink);font-family:var(--font-mono);letter-spacing:.055em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:0;justify-content:center;align-items:center;gap:.5rem;padding:.72rem 1.15rem;font-size:.82rem;font-weight:650;line-height:1;display:inline-flex}.contact-copy:hover,.contact-copy:focus-visible,.contact-copy[data-copied=true],.contact-compose-button:hover,.contact-compose-button:focus-visible{border-color:var(--paper-accent);background:var(--contact-hover);color:var(--contact-ink)}.contact-copy{flex:none;min-width:5.25rem;min-height:2.25rem;margin:0;padding-block:.4rem}.contact-copy svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4px;width:.9rem;height:.9rem}.contact-rule{width:100%;height:var(--page-line-width);background:var(--page-line-color);margin-top:clamp(1.6rem,3.5vw,2.2rem);display:block}.contact-topics{border:0;min-width:0;margin:clamp(1.45rem,3vw,1.9rem) 0 0;padding:0}.contact-topics legend{margin-bottom:.75rem}.contact-topic-grid{grid-template-columns:minmax(0,1fr);gap:.42rem;display:grid}.contact-topic{border:var(--page-line-width) solid var(--page-line-color);min-width:0;min-height:3rem;color:var(--contact-muted);letter-spacing:.035em;text-transform:uppercase;cursor:pointer;background:0 0;align-items:center;gap:.72rem;padding:.58rem .78rem;font-size:clamp(.86rem,2.9vw,.94rem);font-weight:600;line-height:1.15;display:flex;position:relative}.contact-topic:hover{background:color-mix(in srgb, var(--paper-accent) 4%, transparent);color:var(--contact-ink)}.contact-topic:has(input:checked){border-color:var(--paper-accent);background:color-mix(in srgb, var(--paper-accent) 6%, transparent);color:var(--contact-ink)}.contact-topic input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.contact-topic__dot{border:1px solid var(--contact-line-strong);background:0 0;border-radius:50%;flex:none;width:.74rem;height:.74rem;box-shadow:inset 0 0 0 .15rem #0000}.contact-topic input:checked+.contact-topic__dot{border-color:var(--paper-accent);background:var(--paper-accent);box-shadow:inset 0 0 0 .14rem var(--paper-light)}.contact-topic:has(input:focus-visible){outline:2px solid var(--paper-accent);outline-offset:2px}.contact-note{gap:.7rem;margin-top:clamp(1.55rem,3vw,1.95rem);display:grid}.contact-note textarea{resize:vertical;border:1px solid var(--contact-line-strong);background:color-mix(in srgb, var(--paper-accent) 3%, transparent);width:100%;min-height:7.5rem;max-height:13rem;color:var(--contact-ink);caret-color:var(--paper-accent);border-radius:0;outline:none;padding:.9rem .95rem;font-size:clamp(.94rem,1.08vw,1.02rem);line-height:1.45}.contact-note textarea::placeholder{color:var(--contact-placeholder)}.contact-note textarea:hover{border-color:var(--contact-line-strong)}.contact-note textarea:focus{border-color:var(--paper-accent);box-shadow:inset 0 0 0 1px var(--paper-accent)}.contact-compose-button{width:100%;margin-top:1rem}.contact-compose-button__arrow,.contact-social-card__arrow{width:1.12rem;height:.76rem;display:block}.contact-compose-button__arrow svg,.contact-social-card__arrow svg{fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:1.25px;width:100%;height:100%;overflow:visible}.contact-social-grid{border-top:var(--page-line-width) solid var(--page-line-color);border-bottom:var(--page-line-width) solid var(--page-line-color);grid-template-columns:minmax(0,1fr);gap:0;margin-top:clamp(2.2rem,5vw,3.15rem);display:grid}.contact-social-card+.contact-social-card{border-top:var(--page-line-width) solid var(--page-line-color)}.contact-social-card{min-width:0;min-height:4rem;color:var(--contact-ink);user-select:none;outline:none;grid-column:1;grid-template-rows:auto auto;grid-template-columns:2.4rem minmax(0,1fr) auto;align-content:center;align-items:center;column-gap:1rem;padding:.45rem 0;text-decoration:none;display:grid;grid-row:auto!important}.contact-social-card:hover,.contact-social-card:focus-visible{background:var(--contact-hover);color:var(--paper-accent)}.contact-social-card__icon,.contact-social-card__cup{background:0 0;border:0;grid-area:1/1/3;place-self:center start;place-items:center;width:2.4rem;height:2.4rem;display:grid}.contact-social-card__icon svg{fill:currentColor;width:55%;height:55%;display:block}.contact-social-card__cup img{object-fit:contain;filter:grayscale()contrast(1.15);opacity:.82;width:auto;max-width:64%;height:61%;display:block}.contact-social-card__title,.contact-social-card__detail{min-width:0;display:block}.contact-social-card__title{letter-spacing:-.01em;grid-area:1/2;align-self:end;margin-top:0;font-size:clamp(1rem,1.2vw,1.12rem);font-weight:650;line-height:1.1}.contact-social-card__detail{color:var(--contact-muted);text-overflow:ellipsis;white-space:nowrap;grid-area:2/2;align-self:start;margin-top:.16rem;font-size:clamp(.8rem,.82vw,.86rem);line-height:1.2;overflow:hidden}.contact-social-card__arrow{color:var(--contact-muted);transition:transform var(--duration-fast) ease;grid-area:1/3/3;justify-self:end}.contact-social-card:hover .contact-social-card__arrow,.contact-social-card:focus-visible .contact-social-card__arrow{color:var(--paper-accent);transform:translate(2px,-2px)}@media (prefers-reduced-motion:reduce){.contact-copy,.contact-compose-button,.contact-social-card__arrow{transition:none}}.wall-stage{--hallway-half-width:max(55vw, 29rem);--hallway-half-height:max(58vh, 23rem);--hallway-grout-color:#ffffff1f;--hallway-end-color:var(--wall-dark);--hallway-painting-width:520px;--hallway-painting-height:628px;--hallway-hint-ink:#e2e2e2e0;--hallway-hint-halo:#0000008c;--wall-control-bottom-gap:clamp(.7rem, 1.7vh, 1.05rem);--wall-control-safe-bottom:max(var(--wall-control-bottom-gap), calc(env(safe-area-inset-bottom,0px) + var(--wall-control-bottom-gap)));cursor:default;touch-action:none;overscroll-behavior:contain;user-select:none;background:0 0;width:100%;height:100%;min-height:25rem;position:relative;overflow:hidden}html[data-theme=light] .wall-stage{--hallway-grout-color:#071f2324;--hallway-hint-ink:#0c1010c2;--hallway-hint-halo:#ffffff9e}.hallway-metrics{width:var(--hallway-half-width);height:var(--hallway-half-height);outline:0 solid;outline-color:var(--hallway-end-color);border:0 solid;border-top-color:var(--wall-baseboard);border-right-color:var(--wall-trim-line);border-bottom-color:var(--hallway-grout-color);background-color:var(--wall-light);color:var(--wall-dark);visibility:hidden;pointer-events:none;position:absolute;top:0;left:0}.hallway-metrics__frame{width:var(--hallway-painting-width);height:var(--hallway-painting-height);display:block}.home-floor-seam-probe{visibility:hidden;pointer-events:none;top:var(--floor-seam-top);width:1px;height:1px;position:absolute;left:0}.wall-stage--hallway.wall-stage--scene-ready{cursor:grab}.wall-stage--dragging{cursor:grabbing}.wall-stage--hallway.wall-stage--scene-ready.wall-stage--pointing{cursor:pointer}.hallway-scene{z-index:6;background:var(--hallway-end-color);perspective:clamp(760px,82vw,1120px);perspective-origin:50% 49%;opacity:0;pointer-events:none;transition:opacity .24s ease-out;position:absolute;inset:0;overflow:hidden}.wall-stage--scene-ready .hallway-scene{opacity:1;pointer-events:auto}.hallway-canvas{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hallway-destinations ul{margin:0;padding:0;list-style:none}.hallway-destinations a{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hallway-destinations a:focus-visible{z-index:20;outline:2px solid var(--room-outline);outline-offset:.2rem;clip-path:none;background:var(--room-control-bg,#000000b8);width:auto;height:auto;color:var(--room-label-ink);font-family:var(--font-site);letter-spacing:.14em;text-transform:uppercase;border-radius:.4rem;padding:.45rem .9rem;font-size:.82rem;top:50%;left:50%;overflow:visible;transform:translate(-50%,6rem)}.wall-navigation-hint{z-index:18;left:50%;top:calc(var(--baseboard-top) - 60px);max-width:calc(100vw - 7rem);color:var(--hallway-hint-ink,#d0d0d0);font-family:var(--font-site);letter-spacing:.045em;text-align:center;text-shadow:0 1px 3px var(--hallway-hint-halo,#000000ad);white-space:nowrap;opacity:.88;pointer-events:none;margin:0;font-size:clamp(.68rem,1vw,.78rem);font-weight:400;line-height:1;transition:top .42s,opacity .32s;position:absolute;transform:translate(-50%,calc(.075em - 50%))}.wall-stage--hallway.wall-stage--interacted .wall-navigation-hint{opacity:.4}.wall-stage--hallway .wall-navigation-hint{top:calc(var(--header-height) + clamp(.7rem, 2.2vh, 1.35rem));bottom:auto;transform:translate(-50%)}.wall-corner-control{--wall-control-ink:var(--room-control-ink,var(--wall-light));--wall-control-outline:var(--room-outline,var(--wall-control-ink));--wall-control-bg:var(--room-control-bg,color-mix(in srgb, var(--wall-dark) 82%, transparent));z-index:19;bottom:var(--wall-control-safe-bottom);border:1px solid color-mix(in srgb, var(--wall-control-outline) 28%, transparent);outline-offset:1px;background:var(--wall-control-bg);width:2.2rem;height:2.2rem;color:color-mix(in srgb, var(--wall-control-ink) 68%, transparent);cursor:pointer;opacity:.84;border-radius:.56rem;outline:2px solid #0000;place-items:center;padding:0;transition:opacity .16s,border-color .16s,color .16s,outline-color .16s;display:grid;position:absolute}.wall-motion-toggle{right:max(clamp(.9rem, 2.4vw, 1.7rem), calc(env(safe-area-inset-right,0px) + .75rem))}.wall-corner-control:hover,.wall-corner-control:focus-visible{border-color:color-mix(in srgb, var(--wall-control-outline) 46%, transparent);color:color-mix(in srgb, var(--wall-control-ink) 90%, transparent);opacity:1}.wall-corner-control:focus-visible{outline:1px solid var(--wall-control-outline);outline-offset:.18rem}.wall-corner-control__icon{width:1.15rem;height:1.15rem;margin:0;display:block;overflow:visible}@media (height<=42rem) and (width>=40.001rem){.wall-stage{--hallway-half-width:max(55vw, 25rem);--hallway-half-height:max(58vh, 14rem);--hallway-painting-width:420px;--hallway-painting-height:508px}}@media (width<=40rem){.wall-stage{--hallway-half-width:max(66vw, 15.5rem);--hallway-half-height:max(58vh, 15.5rem);--hallway-painting-width:360px;--hallway-painting-height:435px;--wall-control-bottom-gap:.48rem}.hallway-scene{perspective:clamp(640px,178vw,820px);perspective-origin:50%}.wall-navigation-hint{letter-spacing:.035em;max-width:calc(100vw - 5.5rem);font-size:.66rem}.wall-motion-toggle{right:max(.75rem, calc(env(safe-area-inset-right,0px) + .6rem))}}@media (width<=40rem) and (height<=36rem){.wall-stage{--hallway-half-height:max(58vh, 12.5rem);--hallway-painting-width:300px;--hallway-painting-height:362px}}@media (prefers-reduced-motion:reduce){.hallway-scene,.wall-navigation-hint,.wall-corner-control{transition:none}}.wall-stage--inactive{visibility:hidden;pointer-events:none}body.primary-room-page:not(.scrolling-primary-room){width:100%;height:100vh;min-height:100vh;position:relative;overflow:hidden}@supports (height:100svh){body.primary-room-page:not(.scrolling-primary-room){height:100svh;min-height:100svh}}@supports (height:100dvh){body.primary-room-page:not(.scrolling-primary-room){height:100dvh;min-height:100dvh}}body.primary-room-page>.site-header{z-index:50;position:absolute;top:0;left:0;right:0}body.primary-room-page>main{z-index:1;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:block;position:absolute;inset:0;overflow:hidden}.primary-room-backdrop{width:100%;height:100%;min-height:100%}body.primary-room-page .wall-stage,body.primary-room-page .contact-page{background:0 0}.primary-room-engine{z-index:2;pointer-events:none;min-width:0;min-height:0;position:absolute;inset:0}.primary-room-engine__wall{pointer-events:auto;position:absolute;inset:0}.primary-room-engine__wall[hidden]{display:none!important}.primary-room-engine__wall>.wall-stage{width:100%;height:100%}body.primary-room-page>main{z-index:3;pointer-events:none}body.primary-room-page>main .contact-page,body.primary-room-page.contact-room-page>main{pointer-events:auto}body.primary-room-page.scrolling-primary-room{--content-room-floor-height:clamp(5.2rem, 18svh, 9.8rem);overscroll-behavior-x:none;width:100%;min-height:100svh;position:relative;overflow:hidden auto}body.primary-room-page.scrolling-primary-room>.site-header{z-index:50;width:100%;position:relative}body.primary-room-page.scrolling-primary-room>main{--room-wall-min-height:calc(100svh - var(--header-height) - var(--content-room-floor-height));z-index:3;box-sizing:border-box;width:100%;min-height:calc(100svh - var(--header-height));padding-bottom:var(--content-room-floor-height);pointer-events:auto;position:relative;inset:auto;overflow:visible}body.primary-room-page.scrolling-primary-room>.primary-room-backdrop{--floor-height:var(--content-room-floor-height);height:100%;min-height:100%}@media (width<=40rem){body.primary-room-page.scrolling-primary-room{--content-room-floor-height:6.4rem}body.primary-room-page.scrolling-primary-room>.primary-room-backdrop{--floor-height:var(--content-room-floor-height)}}
