:root{--blue:#2196f3;--light-blue:#64b5f6;--text:#424242;--muted:#607d8b;--line:#e0e0e0;--sidebar-width:300px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text);background:#fff;margin:0;font-family:Roboto,Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5}a{color:#1976d2}a:hover{color:#0d47a1}img{max-width:100%}.skip-link{z-index:100;color:#fff;background:#1565c0;padding:.7rem 1rem;position:fixed;top:0;left:0;transform:translateY(-110%)}.skip-link:focus{transform:translateY(0)}.sidebar{z-index:30;width:var(--sidebar-width);background:#fff;position:fixed;inset:0 auto 0 0;overflow-y:auto;box-shadow:2px 0 7px #0000002e}.sidebar__identity{color:#212121;border-bottom:1px solid #eee;grid-template-columns:64px 1fr;align-items:center;gap:14px;min-height:118px;padding:22px 18px;text-decoration:none;display:grid}.sidebar__identity:hover{color:#212121;background:#fafafa}.sidebar__identity img{object-fit:cover;border-radius:50%;width:64px;height:64px}.sidebar__identity span{gap:5px;min-width:0;display:grid}.sidebar__identity strong{font-size:15px;font-weight:500}.sidebar__identity small{color:#424242;overflow-wrap:anywhere;font-size:12px}.sidebar nav{padding:8px 0 28px}.sidebar__links{display:grid}.sidebar__links a{color:#212121;border-left:2px solid #0000;min-height:45px;padding:12px 28px;font-size:14px;font-weight:600;text-decoration:none}.sidebar__links a:hover{color:#000;border-left-color:var(--blue);background:#f5f5f5}.sidebar__links a.is-active{color:#0d47a1;border-left-color:var(--blue);background:#2196f32e}.sidebar__label{color:#616161;margin:10px 0 0;padding:12px 28px 5px;font-size:13px;font-weight:700}.sidebar__links--nested a{padding-left:45px;font-weight:500}.menu-button,.sidebar-backdrop{display:none}.site-main{margin-left:var(--sidebar-width)}.hero{color:#212121;background:var(--light-blue);grid-template-columns:minmax(150px,25%) 1fr;align-items:start;gap:28px;min-height:405px;padding:44px 50px 38px;display:grid}.hero__portrait-wrap{padding-top:5px}.hero__portrait-button{cursor:pointer;background:0 0;border:0;border-radius:50%;width:min(100%,220px);padding:0;display:block;position:relative}.hero__portrait-button:focus-visible{outline-offset:5px;outline:3px solid #ffffffd9}.hero__portrait-button.is-awake{animation:.3s portrait-wake}.hero__portrait{aspect-ratio:1;object-fit:cover;border-radius:50%;width:min(100%,220px);height:auto;display:block}.hero__portrait-hint{color:#fff;letter-spacing:.05em;text-align:center;text-transform:uppercase;min-width:38px;font-size:11px;font-weight:700;position:absolute;bottom:11px;right:-8px}@keyframes portrait-wake{50%{transform:rotate(-2deg)scale(1.02)}}.hero__copy{min-width:0}.hero h1{color:#212121;margin:0 0 4px;font-size:clamp(3rem,5.5vw,4.3rem);font-weight:300;line-height:1.15}.hero__role{color:#455a64;margin:0 0 14px;font-size:1.35rem;font-weight:300}.hero__links{gap:4px;display:grid}.hero__links a,.hero__intro a{color:#fff}.hero__links a{width:fit-content;font-size:.95rem}.hero__socials{gap:9px;margin-top:5px;display:flex}.hero__socials a{border:1px solid #ffffffbf;border-radius:50%;place-items:center;width:31px;height:31px;text-decoration:none;transition:color .16s,background .16s;display:grid}.hero__socials a:hover{color:#1976d2;background:#fff}.hero__socials svg{fill:currentColor;width:16px;height:16px}.hero__intro{grid-column:1/-1;margin-top:24px}.hero__intro p{margin:8px 0}.resume-content{padding:0 0 70px}.resume-content>.container{width:min(70%,980px);margin:0 auto;padding-top:46px;scroll-margin-top:20px}.resume-content>#high-school{border-top:1px solid #eee;margin-top:38px;padding-top:36px}.resume-content h4,.resume-content h5{color:#424242;margin:0;font-size:2rem;font-weight:400;line-height:1.25}.resume-content h5{font-size:1.65rem}.resume-content h6{color:#616161;margin:6px 0 0;font-size:.9rem;font-weight:400}.resume-content p{margin:5px 0}.resume-content ul{padding-left:20px}.resume-content .row{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 8.333%;margin:20px 0 0;display:grid}.resume-content .row>.row,.resume-content .row>.card,.resume-content .row>.card-panel,.resume-content .s12{grid-column:1/-1}.resume-content .m5{grid-column:span 1;min-width:0}.card,.card-panel{background:#fff;border-radius:2px;position:relative;overflow:hidden;box-shadow:0 2px 2px #00000024,0 1px 5px #0000001f,0 3px 1px -2px #0003}.card.medium{height:400px}.card-image{background:#fff;place-items:center;min-height:185px;padding:18px;display:grid;overflow:hidden}.card.medium .card-image{height:238px}.card-image img{object-fit:contain;width:100%;height:205px;display:block}.card-image img.drumkit-logo{width:82%;height:auto}.card.medium .card-image img{height:100%}.card-image.video-container{aspect-ratio:16/9;min-height:0;padding:0;position:relative}.card-image iframe{border:0;width:100%;height:100%;min-height:280px}.card-image.video-container iframe{min-height:0;position:absolute;inset:0}.card-content{padding:20px 24px}.card-title{color:#212121;justify-content:space-between;gap:12px;margin-bottom:8px;font-weight:400;display:flex;font-size:1.35rem!important;line-height:1.35!important}.card-title.activator,.card-image .activator{cursor:pointer}.card-title.activator:focus-visible,.card-image .activator:focus-visible,.collapsible-header:focus-visible{outline-offset:-3px;outline:3px solid #2196f373}.card-title .material-icons{color:var(--blue);font-family:inherit;font-size:0!important}.card-content .card-title .material-icons{border:1px solid #90caf9;border-radius:50%;flex:0 0 28px;place-items:center;width:28px;height:28px;display:grid}.card-content .card-title .material-icons:after{content:"";border:2px solid;border-width:0 2px 2px 0;width:8px;height:8px;margin-top:4px;display:block;transform:rotate(-135deg)}.card-reveal .card-title .material-icons:after{content:"×";color:#424242;font-size:30px;line-height:1}.card-content>a,.card-content p a{overflow-wrap:anywhere}.card-reveal{z-index:3;background:#fff;padding:24px;transition:transform .25s;position:absolute;inset:0;overflow-y:auto;transform:translateY(101%)}.card.is-revealed .card-reveal{transform:translateY(0)}.card-panel{padding:20px}.responsive-table{border-collapse:collapse;width:100%}.responsive-table th,.responsive-table td{text-align:left;border-bottom:1px solid #e5e5e5;padding:12px 10px}.responsive-table th{font-weight:500}.collapsible{border:1px solid #ddd;margin:16px 0 0;list-style:none;box-shadow:0 1px 2px #00000014;padding:0!important}.collapsible-header{color:#424242;cursor:pointer;background:#fff;min-height:46px;padding:11px 14px}.collapsible-header .material-icons{color:var(--blue);margin-right:8px;font-family:inherit;font-size:0}.collapsible-header .material-icons:after{content:"★";font-size:17px}.collapsible-body{border-top:1px solid #ddd;padding:14px;display:none}.collapsible li.is-open .collapsible-body{display:block}.collection{margin:0;list-style:none;padding:0!important}.collection-item{border-bottom:1px solid #e0e0e0;padding:10px 12px}.collection-item:last-child{border-bottom:0}.collection.with-header{overflow:auto;max-height:400px!important}.collection-header{border-bottom:1px solid #e0e0e0;padding:10px 12px}.collection-header h5{font-size:1.35rem}.legacy-app-frame{background:#fff;border:0;width:100%;height:100dvh;display:block}.archive-page{background:#fafafa;min-height:100vh}.archive-header{color:#fff;text-align:center;background:#37474f;padding:64px max(6vw,28px) 54px}.archive-header h1{margin:8px 0;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:300;line-height:1.1}.archive-header p{margin:8px 0 20px}.archive-header a{color:#90caf9}.archive-eyebrow{color:#b0bec5;letter-spacing:.18em;font-size:.75rem;font-weight:700}.archive-page .resume-content>#high-school{border-top:0;margin-top:0}.modern-site{--modern-ink:#171717;--modern-muted:#717171;--modern-line:#dedede;min-height:100vh;color:var(--modern-ink);background:#fdfdfc;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.55}.modern-site a{color:inherit}.modern-shell{width:min(760px,100% - 48px);margin:0 auto}.modern-hero{grid-template-columns:1fr 112px;align-items:center;gap:64px;min-height:560px;padding:120px 0 112px;display:grid}.modern-hero h1{letter-spacing:-.045em;margin:0;font-size:clamp(2.5rem,7vw,3.6rem);font-weight:500;line-height:1.05}.modern-hero__lead{letter-spacing:-.015em;margin:24px 0 0;font-size:1.18rem;line-height:1.55}.modern-hero__lead a,.modern-hero__note a{text-underline-offset:4px;text-decoration-thickness:1px}.modern-hero__note{color:var(--modern-muted);margin:16px 0 0;font-size:.9rem}.modern-hero__location{color:var(--modern-muted);margin:5px 0 0;font-size:.9rem}.modern-hero__links{gap:18px;margin-top:26px;font-size:.88rem;display:flex}.modern-hero__links a{color:var(--modern-muted);text-decoration:none}.modern-hero__links a:hover{color:var(--modern-ink);text-underline-offset:4px;text-decoration:underline}.modern-hero__portrait .hero__portrait-button{width:100%}.modern-hero__portrait .hero__portrait{filter:grayscale();width:100%;transition:filter .2s}.modern-hero__portrait .hero__portrait-button:hover .hero__portrait{filter:grayscale(0)}.modern-hero__portrait .hero__portrait-hint{color:var(--modern-ink);bottom:-24px;right:-10px}.modern-section{border-top:1px solid var(--modern-line);padding:52px 0 68px;scroll-margin-top:20px}.modern-section h2{letter-spacing:.08em;text-transform:uppercase;margin:0 0 34px;font-size:.78rem;font-weight:600}.modern-work-row{grid-template-columns:108px 1fr;gap:24px;padding:0 0 30px;display:grid}.modern-work-row:last-child{padding-bottom:0}.modern-work-row__years,.modern-plain-list article>span{color:var(--modern-muted);font-variant-numeric:tabular-nums;padding-top:3px;font-size:.8rem}.modern-work-row h3,.modern-plain-list h3{margin:0;font-size:1rem;font-weight:600}.modern-work-row h3 a,.modern-plain-list h3 a{text-decoration:none}.modern-work-row h3 a:hover,.modern-plain-list h3 a:hover{text-underline-offset:4px;text-decoration:underline}.modern-work-row p,.modern-plain-list p{color:var(--modern-muted);margin:2px 0 0}.modern-work-row__description{font-size:.88rem}.modern-plain-list{gap:26px;display:grid}.modern-plain-list article{grid-template-columns:108px 1fr;gap:24px;display:grid}.modern-plain-list--projects article{grid-template-columns:1fr}.retro-page{background:#fff;min-height:100vh}.retro-return{z-index:40;color:#fff;background:#263238;border-radius:2px;padding:10px 14px;font-size:.78rem;text-decoration:none;position:fixed;bottom:18px;right:18px;box-shadow:0 2px 6px #00000040}.retro-return:hover{color:#fff;background:#1976d2}@media (max-width:992px){:root{--sidebar-width:0px}.site-main{margin-left:0}.menu-button{z-index:50;color:#fff;font:inherit;cursor:pointer;background:#1976d2;border:0;border-radius:2px;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex;position:fixed;top:14px;right:14px;box-shadow:0 2px 5px #00000040}.sidebar{width:min(300px,86vw);transition:transform .22s;transform:translate(-105%)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{z-index:20;background:#00000059;border:0;width:100%;display:block;position:fixed;inset:0}.resume-content>.container{width:min(88%,760px)}}@media (max-width:760px){.modern-shell{width:min(100% - 36px,760px)}.modern-hero{grid-template-columns:1fr 82px;gap:24px;min-height:500px;padding:80px 0 88px}.modern-hero__note{max-width:320px}.modern-section{padding:44px 0 54px}.modern-work-row,.modern-plain-list article{grid-template-columns:82px 1fr;gap:14px}.modern-plain-list--projects article{grid-template-columns:1fr}}@media (max-width:480px){.modern-hero{grid-template-columns:1fr}.modern-hero__portrait{grid-row:1;width:76px}.modern-work-row,.modern-plain-list article{grid-template-columns:1fr;gap:5px}.modern-work-row__years,.modern-plain-list article>span{padding:0}}@media (max-width:650px){.hero{grid-template-columns:1fr;gap:18px;padding:56px 28px 34px}.hero__portrait{width:145px}.hero h1{font-size:3rem}.hero__intro{grid-column:1;margin-top:12px}.resume-content>.container{width:calc(100% - 32px);padding-top:38px}.resume-content .row{grid-template-columns:1fr;gap:20px}.resume-content .row>*,.resume-content .m5,.resume-content .s12{grid-column:1}.responsive-table{min-width:590px}.card-panel:has(.responsive-table){overflow-x:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important}}
