.app-shell{--frame-gap: clamp(.9rem, 2vw, 1.9rem);--outer-bottom-gap: clamp(.28rem, .9vw, .8rem)}.app-shell{position:relative;height:100dvh;width:100%;padding:var(--frame-gap);overflow:hidden}.grain-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:1;z-index:0;width:100%;height:100%;mix-blend-mode:normal}:root[data-theme=dark] .grain-overlay{opacity:.94}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.theme-switcher{position:fixed;top:calc(var(--frame-gap) * .3);right:var(--frame-gap);z-index:3;display:flex;gap:1rem}.theme-choice{display:inline-flex;align-items:center;gap:.45rem;border:0;background:transparent;color:var(--text);padding:0;font:inherit;font-size:.7rem;font-weight:200;letter-spacing:.08em;cursor:pointer}.theme-choice-box{width:.8rem;height:.8rem;border:1px solid var(--text);background:transparent;transition:background-color .18s ease}.theme-choice.is-active .theme-choice-box{background:var(--text)}.site-frame{position:relative;z-index:1;width:100%;height:100%;border:1px solid var(--line);background:var(--surface);display:grid;grid-template-columns:clamp(190px,24vw,360px) minmax(0,1fr);overflow:hidden;isolation:isolate}.sidebar,.content-area{position:relative;min-width:0;min-height:0}.sidebar{z-index:2;padding:2rem 1.8rem 2rem 2rem;display:flex;flex-direction:column;align-items:flex-start;background:transparent}.sidebar-title-wrap{display:flex;flex-direction:column;align-items:flex-start;font-size:clamp(1.58rem,1.24rem + .9vw,2.24rem);min-height:3.7rem;width:max-content;max-width:none;position:relative;z-index:3}.site-title-link{color:inherit;text-decoration:none}.site-title{margin:0;max-width:100%;font-size:1em;font-weight:200;line-height:1;letter-spacing:.03em;white-space:nowrap;text-wrap:nowrap}.site-subtitle{margin:.72em 0 0;font-size:.4em;font-weight:200;line-height:1;white-space:nowrap;text-wrap:nowrap}.menu-list{list-style:none;padding:0;margin:2.2rem 0 0;display:grid;gap:.8rem}.menu-item{display:inline-block}.menu-link{position:relative;display:inline-flex;align-items:center;width:fit-content;min-height:1.1rem;padding:.24rem .4rem;border:1px solid transparent;text-decoration:none;font-size:.82rem;font-weight:300;line-height:1.1;overflow:hidden}.menu-link:before,.menu-link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.menu-link:before{background:linear-gradient(90deg,rgba(var(--graphite-rgb),.08),rgba(var(--graphite-rgb),.18),rgba(var(--graphite-rgb),.06));opacity:0;transform:scaleX(0);transform-origin:right center;transition:transform .62s cubic-bezier(.22,1,.36,1),opacity .42s ease}.menu-link:after{border:1px solid rgba(var(--graphite-rgb),.42);opacity:0;transform:scaleX(0);transform-origin:right center;transition:transform .62s cubic-bezier(.22,1,.36,1),opacity .42s ease}.menu-link:hover:before,.menu-link:hover:after,.menu-link:focus-visible:before,.menu-link:focus-visible:after{opacity:1;transform:scaleX(1);transform-origin:left center}.menu-link-text{position:relative;display:inline-block;z-index:1}.menu-link-text.is-bullet{font-size:1.1rem;line-height:1;transform:translateY(-.02em)}.menu-link-cursor{position:relative;z-index:1;width:1px;height:1em;margin-left:.08rem;background:currentColor;animation:menuCursorBlink .85s step-end infinite}@keyframes menuCursorBlink{0%,45%{opacity:1}46%,to{opacity:0}}.content-area{--page-start-offset: 0px;z-index:1;padding:0;height:100%;overflow:hidden;position:relative;background:transparent}.content-area.content-area--guarded .page-canvas{clip-path:inset(var(--page-start-offset) 0 0 0);will-change:scroll-position,clip-path}.page-transition{position:relative;z-index:1;height:100%;min-height:0;animation:fadeIn .32s ease;overflow:hidden}.page-canvas{height:100%;min-height:0;padding-top:var(--page-start-offset);overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;will-change:scroll-position}.page-canvas::-webkit-scrollbar{display:none}.page{min-height:100%;display:block}.page-empty{width:100%;height:100%}.info-page{display:grid;place-items:center;padding:1.5rem}.info-links{display:grid;width:min(100%,10.5rem);justify-items:center;gap:.9rem}.info-link-button{width:100%;justify-content:center;padding:.7rem 1.1rem;color:var(--text);background:transparent;font:inherit;letter-spacing:.04em;cursor:pointer}.info-link-text{display:inline-flex;align-items:center;justify-content:space-between;width:100%;gap:.45rem}.info-link-arrow{font-size:.88em;line-height:1;transform:translateY(-.08em)}.projects-page{display:flex;justify-content:flex-end;align-items:flex-start;padding:0 1.8rem 1.8rem}.projects-list{display:grid;justify-items:end;gap:1rem}.project-entry{display:block}.project-entry-link{display:inline-flex;flex-direction:column;align-items:flex-end;gap:.4rem;min-height:auto;padding:.6rem .72rem;margin-right:-.12rem;font-size:clamp(2.45rem,4vw,4rem);font-weight:200;line-height:.94;letter-spacing:.03em;text-align:right}.project-entry-title,.project-entry-date{position:relative;z-index:1}.project-entry-title{display:block}.project-entry-link[aria-disabled=true]{cursor:default}.project-entry-date{margin:0;font-size:.82rem;font-weight:300;line-height:1.1;color:var(--muted)}.career-page{display:flex;justify-content:flex-end;padding:0 clamp(1.3rem,3vw,2.6rem) clamp(1.3rem,3vw,2.4rem)}.career-sheet{width:min(100%,60rem);padding:0 0 .2rem;background:transparent}.career-contact-list{list-style:none;padding:0;margin:0;display:grid;gap:.36rem;font-size:.78rem}.career-section{margin-top:1.85rem}.career-section-heading{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;column-gap:.85rem;margin-bottom:1rem;font-size:.82rem;font-weight:300;line-height:1;letter-spacing:.12em;text-transform:uppercase}.career-section-heading span{display:block;white-space:nowrap}.career-section-heading:after{content:"";display:block;height:1px;background:rgba(var(--graphite-rgb),.34)}.career-entry-group{display:grid;gap:1rem}.career-entry{display:grid;grid-template-columns:minmax(8.4rem,10.2rem) minmax(0,1fr);gap:1rem}.career-entry-meta{font-size:.72rem;color:var(--muted)}.career-entry-meta p,.career-entry-body p,.career-license,.career-footer p{margin:0}.career-entry-location{margin-top:.18rem}.career-entry-title{margin:0;font-size:.94rem;font-weight:300}.career-entry-detail,.career-entry-description,.career-entry-institution{margin-top:.32rem;font-size:.78rem;line-height:1.5}.career-entry-institution{font-style:italic}.career-entry-dash-line{position:relative;padding-left:.9rem}.career-entry-dash-line:before,.career-entry-list li:before,.career-bullet-columns li:before,.career-skill-grid li:before,.career-inline-list li:before{content:"-";position:absolute;left:0;top:0}.career-entry-list,.career-bullet-columns,.career-skill-grid,.career-inline-list{margin:0;padding-left:0;list-style:none}.career-entry-list{margin-top:.46rem;display:grid;gap:.2rem;font-size:.76rem;line-height:1.45}.career-bullet-columns{display:grid;gap:.38rem;font-size:.78rem;line-height:1.55}.career-entry-list li,.career-bullet-columns li,.career-skill-grid li,.career-inline-list li{position:relative;padding-left:.9rem}.career-skill-grid{columns:2;column-gap:2rem;font-size:.78rem;line-height:1.55}.career-skill-grid li{break-inside:avoid;margin-bottom:.2rem}.career-inline-list{display:grid;gap:.38rem;font-size:.78rem;line-height:1.5}.career-license{font-size:.78rem;line-height:1.5}.career-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid rgba(var(--graphite-rgb),.22);font-size:.7rem;color:var(--muted)}.home-page{position:relative}.home-poem{position:absolute;right:-1.2rem;top:auto;bottom:1.2rem;width:25rem;max-width:none;transform-origin:bottom right}.poem-line{margin:0;font-size:.86rem;font-weight:200;line-height:1.38;letter-spacing:.01em;text-align:left;white-space:nowrap}.poem-line+.poem-line{margin-top:.22rem}.poem-indent-1{padding-left:2ch}.poem-indent-2{padding-left:4ch}.poem-indent-3{padding-left:6ch}.poem-indent-4{padding-left:8ch}.poem-indent-5{padding-left:10ch}.poem-indent-6{padding-left:12ch}.site-footer{position:fixed;left:var(--frame-gap);bottom:var(--outer-bottom-gap);z-index:3;font-size:.68rem;font-weight:300;color:var(--muted)}@media (max-width: 1240px){.app-shell{--frame-gap: clamp(1.05rem, 2.8vw, 1.85rem)}.sidebar{padding:2rem 1.35rem 1.65rem 1.6rem}.sidebar-title-wrap{font-size:clamp(1.52rem,1.18rem + .96vw,2rem)}.menu-list{gap:.68rem}.menu-link{font-size:.78rem}.project-entry-link{font-size:clamp(2.1rem,4vw,3.1rem)}.project-entry-date{font-size:.78rem}}@media (max-width: 980px){.app-shell{--frame-gap: clamp(1.15rem, 4vw, 1.95rem)}.theme-switcher{top:calc(var(--frame-gap) * .28);right:var(--frame-gap);gap:.85rem}.sidebar{padding:2rem 1.5rem 1.5rem}.content-area{padding:0}.home-page{position:relative}.home-poem{right:-.6rem;top:auto;bottom:1.15rem;transform:scale(.88)}.projects-page{justify-content:flex-end;padding:0 1.5rem 1.5rem}.career-page{justify-content:flex-start;padding:0 1.5rem 1.5rem}.info-page{place-items:center;padding:1.5rem}.info-links{justify-items:center}.career-entry{grid-template-columns:1fr;gap:.45rem}.career-skill-grid{columns:1}.career-footer{gap:0}}@media (max-width: 640px){.app-shell{--frame-gap: clamp(1.2rem, 5vw, 1.65rem)}.theme-switcher{top:calc(var(--frame-gap) * .28);right:var(--frame-gap);gap:.6rem}.theme-choice{font-size:.62rem}.theme-choice-box{width:.68rem;height:.68rem}.sidebar{padding:2rem 1rem .9rem}.sidebar-title-wrap{font-size:clamp(1.46rem,5vw,1.78rem)}.menu-list{gap:.55rem}.menu-link{padding:.2rem .32rem;font-size:.74rem}.project-entry-link{font-size:clamp(1.9rem,10vw,2.8rem)}.project-entry-date{font-size:.74rem}.content-area{min-height:0}.projects-page{justify-content:flex-end;padding:0 1rem 1rem}.career-page{justify-content:flex-start;padding:0 1rem 1rem}.info-page{place-items:center;padding:1rem}.info-links{justify-items:center}.sidebar-title-wrap{position:sticky;top:0;padding-bottom:.45rem;background:transparent}.career-sheet{padding-bottom:.2rem}.career-section-heading{grid-template-columns:1fr;row-gap:.45rem}.career-section-heading span{white-space:normal}.home-poem{right:-.95rem;bottom:1.15rem;transform:scale(.74)}.site-footer{font-size:.62rem}}@media (max-width: 440px){.app-shell{--frame-gap: clamp(1.15rem, 5.4vw, 1.45rem)}.sidebar{padding:2rem .95rem .8rem}.home-poem{right:-1.15rem;bottom:1.15rem;transform:scale(.64)}}:root{--bg: #e9e1d3;--surface: #efe7da;--text: #171410;--muted: #686056;--line: rgba(23, 20, 16, .18);--grain: rgba(23, 20, 16, .06);--graphite-rgb: 24, 21, 18;--graphite-idle-alpha: .016;--graphite-wave-alpha: .11;--graphite-max-alpha: .3}:root[data-theme=dark]{--bg: #15110f;--surface: #191512;--text: #f0e7da;--muted: #b8ae9f;--line: rgba(240, 231, 218, .18);--grain: rgba(240, 231, 218, .05);--graphite-rgb: 224, 216, 206;--graphite-idle-alpha: .02;--graphite-wave-alpha: .13;--graphite-max-alpha: .34}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;font-weight:200;background:var(--bg);color:var(--text);letter-spacing:.01em;transition:background-color .24s ease,color .24s ease}a{color:inherit}
