@media screen{html.v-blueprint{--background:210 42% 97%;--foreground:214 72% 16%;--muted-foreground:213 26% 40%;--border:212 42% 78%;--card:210 50% 99%;--card-foreground:214 72% 16%;--popover:210 50% 99%;--popover-foreground:214 72% 16%;--primary:214 72% 16%;--primary-foreground:210 50% 99%;--secondary:210 40% 92%;--secondary-foreground:214 72% 16%;--muted:210 40% 92%;--accent:8 74% 48%;--accent-foreground:0 0% 100%;--input:212 42% 78%;--ring:8 74% 48%;--radius:0rem;--font-display:var(--font-v-barlow-condensed),"Arial Narrow",Arial,sans-serif;--font-body:var(--font-v-plex-sans),"Segoe UI",Arial,sans-serif;--font-mono:var(--font-v-plex-mono),ui-monospace,Consolas,monospace;--bp-ink:hsl(var(--foreground));--bp-line:rgba(77,136,203,.5);--bp-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cpath d='M20.5 0V100M40.5 0V100M60.5 0V100M80.5 0V100M0 20.5H100M0 40.5H100M0 60.5H100M0 80.5H100' stroke='rgba(54,135,226,.08)' fill='none'/%3E%3Cpath d='M0.5 0V100M0 0.5H100' stroke='rgba(54,135,226,.2)' fill='none'/%3E%3C/svg%3E");--bp-mark:hsl(var(--accent));--bp-panel:hsl(var(--card)/.78);--bp-corners:linear-gradient(var(--bp-mark),var(--bp-mark)) top left /14px 1.5px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) top left /1.5px 14px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) top right /14px 1.5px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) top right /1.5px 14px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) bottom left /14px 1.5px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) bottom left /1.5px 14px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) bottom right /14px 1.5px no-repeat,linear-gradient(var(--bp-mark),var(--bp-mark)) bottom right /1.5px 14px no-repeat}html.v-blueprint.dark{--background:212 70% 22%;--foreground:210 100% 96%;--muted-foreground:210 50% 80%;--border:210 50% 50%;--card:212 66% 26%;--card-foreground:210 100% 96%;--popover:212 66% 26%;--popover-foreground:210 100% 96%;--primary:210 100% 96%;--primary-foreground:212 70% 22%;--secondary:212 60% 28%;--secondary-foreground:210 100% 96%;--muted:212 60% 28%;--accent:46 100% 70%;--accent-foreground:212 72% 16%;--input:210 50% 50%;--ring:46 100% 70%;--bp-line:rgba(197,224,252,.32);--bp-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cpath d='M20.5 0V100M40.5 0V100M60.5 0V100M80.5 0V100M0 20.5H100M0 40.5H100M0 60.5H100M0 80.5H100' stroke='rgba(255,255,255,.05)' fill='none'/%3E%3Cpath d='M0.5 0V100M0 0.5H100' stroke='rgba(255,255,255,.12)' fill='none'/%3E%3C/svg%3E");--bp-panel:hsl(var(--card)/.55)}html.v-blueprint body{font-size:16px;line-height:1.7;background-image:var(--bp-grid);background-position:-1px -1px}html.v-blueprint.dark body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,18,45,.45))}.v-blueprint h1,.v-blueprint h2{font-family:var(--font-display);font-weight:600;text-transform:uppercase}.v-blueprint main{counter-reset:bp-sec bp-item bp-detail}.v-blueprint .site-shell{width:calc(100% - 48px);max-width:1114px;padding:0 36px;border-left:1.5px solid var(--bp-ink);border-right:1.5px solid var(--bp-ink);min-height:100vh}.v-blueprint .site-header{min-height:0;padding:0;gap:0;align-items:stretch;border-bottom:1.5px solid var(--bp-ink)}.v-blueprint .wordmark{padding:16px 22px 14px 0;border-right:1px solid var(--bp-line)}.v-blueprint .wordmark:before{content:"Drawing no. HF-001";display:block;margin-bottom:2px;font:500 9.5px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:hsl(var(--muted-foreground))}.v-blueprint .wordmark-name{font-family:var(--font-display);font-weight:700;font-size:25px;line-height:1;letter-spacing:.05em;text-transform:uppercase}.v-blueprint .site-nav{gap:0;align-items:stretch}.v-blueprint .site-nav a{display:flex;align-items:center;padding:0 18px;font:500 11.5px/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border-left:1px solid var(--bp-line)}.v-blueprint .site-nav a:after{left:18px;bottom:14px;height:2px;background:hsl(var(--accent))}.v-blueprint .site-nav a:focus-visible:after,.v-blueprint .site-nav a:hover:after,.v-blueprint .site-nav a[aria-current=page]:after{width:calc(100% - 36px)}.v-blueprint .site-nav a:hover{color:hsl(var(--accent))}.v-blueprint .theme-toggle{align-self:center;margin-left:18px;border-radius:0;border:1px solid var(--bp-ink)}.v-blueprint .theme-toggle:hover{background:hsl(var(--foreground));color:hsl(var(--background))}.v-blueprint .eyebrow{font-family:var(--font-mono);font-weight:500;letter-spacing:.14em;color:hsl(var(--accent))}.v-blueprint .tech-list{font-size:11px;letter-spacing:.04em;text-transform:uppercase}.v-blueprint .tech-list:before{content:"Spec: ";color:hsl(var(--accent))}.v-blueprint .text-link{font:500 12px/1.7 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.v-blueprint .inline-link,.v-blueprint .text-link{text-decoration-color:hsl(var(--accent))}.v-blueprint .button{border-radius:0;font:500 12px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;padding:15px 22px;border:1.5px solid var(--bp-ink);background:var(--bp-panel)}.v-blueprint .button-outline:focus-visible,.v-blueprint .button-outline:hover{background:hsl(var(--foreground));color:hsl(var(--background))}.v-blueprint .hero{grid-template-columns:minmax(0,1fr) 250px;grid-template-rows:auto 1fr;gap:0 64px;align-items:start;padding:64px 0 76px;border-bottom:1px solid var(--bp-line)}.v-blueprint .hero-copy{grid-row:1/span 2}.v-blueprint .hero h1{position:relative;display:inline-block;padding-bottom:30px;margin:0 0 22px;font-weight:700;font-size:clamp(64px,9.4vw,128px);line-height:.9;letter-spacing:.01em}.v-blueprint .hero h1:after{content:"";position:absolute;left:0;right:0;bottom:6px;height:14px;border-left:1px solid hsl(var(--accent));border-right:1px solid hsl(var(--accent));background:linear-gradient(hsl(var(--accent)),hsl(var(--accent))) 50% /100% 1px no-repeat}.v-blueprint .hero h1:before{content:"Full scale";position:absolute;left:50%;bottom:3px;z-index:1;padding:0 10px;font:500 10px/20px var(--font-mono);letter-spacing:.16em;color:hsl(var(--accent));background:hsl(var(--background));transform:translateX(-50%)}.v-blueprint .hero-role{font:500 13px/1.6 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:hsl(var(--foreground))}.v-blueprint .hero-role:before{content:"Spec — ";color:hsl(var(--accent))}.v-blueprint .hero-description{max-width:600px;margin-top:18px;font-size:17px;line-height:1.75;color:hsl(var(--foreground))}.v-blueprint .hero-actions{margin-top:32px}.v-blueprint .portrait{grid-column:2;grid-row:1;width:250px;height:250px;margin-top:14px;padding:10px;border-radius:0;border:1.5px solid var(--bp-ink);background:hsl(var(--card));outline:1px dashed hsl(var(--accent));outline-offset:12px;filter:grayscale(1) sepia(.35) hue-rotate(175deg) saturate(1.3) contrast(1.06)}html.v-blueprint.dark .portrait{filter:grayscale(1) sepia(1) hue-rotate(172deg) saturate(2.4) brightness(.92) contrast(1.1)}.v-blueprint .hero:after{content:"Detail A — subject";grid-column:2;grid-row:2;margin-top:26px;padding-top:8px;font:500 10px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:hsl(var(--accent));border-top:1px solid hsl(var(--accent))}.v-blueprint .contact-note h2,.v-blueprint .resume-section .section-topline h2,.v-blueprint .resume-section>h2,.v-blueprint .section-title,.v-blueprint .working-together h2{counter-increment:bp-sec}.v-blueprint .resume-section .section-topline h2:before,.v-blueprint .resume-section>h2:before,.v-blueprint .section-title:before{content:counter(bp-sec,decimal-leading-zero);display:inline-block;margin-right:14px;padding:1px 7px;font:500 12px/1.6 var(--font-mono);letter-spacing:.06em;vertical-align:8px;color:hsl(var(--accent));border:1px solid hsl(var(--accent))}.v-blueprint .section-heading h2,.v-blueprint .section-title{font-size:38px;line-height:1.1;letter-spacing:.03em;margin:0 0 26px}.v-blueprint .home-section{margin-top:70px}.v-blueprint .selected-work{margin-top:56px}.v-blueprint .section-topline{align-items:center;margin-bottom:26px;padding-bottom:12px;border-bottom:1.5px solid var(--bp-ink)}.v-blueprint .section-topline .section-title{margin:0}.v-blueprint :is(.project-row,.skill-group,.resume-projects article,.contact-address,.service-row){position:relative;background:var(--bp-corners),var(--bp-panel);border:1px solid var(--bp-line)}.v-blueprint .selected-projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;border-top:0}.v-blueprint .project-row{counter-increment:bp-item;display:flex;flex-direction:column;gap:12px;padding:30px 24px 24px}.v-blueprint .project-row:after{content:"A-" counter(bp-item,decimal-leading-zero);position:absolute;top:8px;right:14px;font:500 10px/1.4 var(--font-mono);letter-spacing:.12em;color:hsl(var(--muted-foreground))}.v-blueprint .project-context{font:500 10.5px/1.6 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.v-blueprint .project-row .project-context{max-width:none}.v-blueprint .project-row h3{margin-top:6px;font-family:var(--font-display);font-weight:600;font-size:26px;line-height:1.05;letter-spacing:.03em;text-transform:uppercase}.v-blueprint .project-row h3 a{text-decoration:none}.v-blueprint .project-row h3 a:hover{color:hsl(var(--accent))}.v-blueprint .project-row-description{display:flex;flex-direction:column;flex:1}.v-blueprint .project-row-description>p{flex:1;font-size:15px;line-height:1.7;color:hsl(var(--foreground))}.v-blueprint .project-row .tech-list{padding-top:10px;border-top:1px dashed var(--bp-line)}.v-blueprint .about-section{grid-template-columns:300px minmax(0,1fr);gap:40px}.v-blueprint .about-section .section-title{font-size:34px}.v-blueprint .about-copy{counter-reset:bp-note;max-width:660px;font-size:16px;line-height:1.75;color:hsl(var(--foreground))}.v-blueprint .about-copy:before{content:"General notes";display:block;margin-bottom:14px;padding-bottom:8px;font:500 11px/1.4 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:hsl(var(--accent));border-bottom:1px solid var(--bp-line)}.v-blueprint .about-copy p{position:relative;counter-increment:bp-note;padding-left:36px}.v-blueprint .about-copy p:before{content:counter(bp-note) ".";position:absolute;left:0;font:500 13px/1.75 var(--font-mono);color:hsl(var(--accent))}.v-blueprint .about-copy>.text-link{margin-left:36px}.v-blueprint .contact-note{grid-template-columns:300px minmax(0,1fr);gap:0;margin-top:80px;padding:0;border:1.5px solid var(--bp-ink);background:var(--bp-panel)}.v-blueprint .contact-note:before{content:"Title block — correspondence";grid-column:1/-1;padding:8px 18px;font:500 10.5px/1.4 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:hsl(var(--accent));border-bottom:1px solid var(--bp-ink)}.v-blueprint .contact-note h2{padding:24px 22px;font-size:40px;font-weight:700;letter-spacing:.03em;line-height:1;border-right:1px solid var(--bp-ink)}.v-blueprint .contact-note>div{padding:24px 26px}.v-blueprint .contact-note p{max-width:600px;font-size:16px;color:hsl(var(--foreground))}.v-blueprint .site-footer{margin:60px 0 0;padding:0;border:1.5px solid var(--bp-ink);border-bottom:0;background:var(--bp-panel)}.v-blueprint .footer-top{padding:16px 20px}.v-blueprint .footer-signature{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.05em;text-transform:uppercase}.v-blueprint .footer-socials a{font:500 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.v-blueprint .footer-bottom{margin-top:0;padding:10px 20px;font:500 10.5px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:hsl(var(--foreground));border-top:1px solid var(--bp-ink)}.v-blueprint .page-content{padding-top:54px}.v-blueprint .not-found h1,.v-blueprint .page-intro h1{font-weight:700;font-size:clamp(56px,8vw,104px);line-height:.92;letter-spacing:.01em}.v-blueprint .page-intro>p:not(.eyebrow){max-width:640px;font-size:17px;line-height:1.75;color:hsl(var(--foreground))}.v-blueprint .project-toolbar{border-top:1.5px solid var(--bp-ink);border-bottom:1px solid var(--bp-line)}.v-blueprint .project-filters button{font:500 11.5px/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.v-blueprint .project-filters button span{color:hsl(var(--accent))}.v-blueprint .project-count{font:500 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.v-blueprint .project-detail{counter-increment:bp-detail;grid-template-columns:200px minmax(0,1fr);border-bottom:1px solid var(--bp-line)}.v-blueprint .project-detail-side:before{content:"Dwg. A-" counter(bp-detail,decimal-leading-zero);display:block;margin-bottom:8px;padding:4px 8px;width:fit-content;font:500 11px/1.4 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--bp-ink)}.v-blueprint .project-detail h2{font-size:36px;font-weight:600;line-height:1.02;letter-spacing:.025em}.v-blueprint .project-detail h2 a{text-decoration-color:hsl(var(--accent))}.v-blueprint .project-detail-main>p:not(.tech-list):not(.project-context){font-size:16px;line-height:1.75;color:hsl(var(--foreground))}.v-blueprint .project-details-disclosure summary{font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:hsl(var(--accent))}.v-blueprint .experience-bullets li::marker,.v-blueprint .project-details-disclosure li::marker{color:hsl(var(--accent))}.v-blueprint .resume-topline{padding-bottom:14px;border-bottom:1px solid var(--bp-line);margin-bottom:30px}.v-blueprint .resume-intro>.resume-title{font:500 13px/1.6 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.v-blueprint .resume-contact{font:500 11.5px var(--font-mono);letter-spacing:.06em}.v-blueprint .resume-intro>p:last-child{font-size:16px;line-height:1.75}.v-blueprint .resume-section .section-topline h2,.v-blueprint .resume-section>h2{font-size:36px;letter-spacing:.03em}.v-blueprint .resume-section .section-topline,.v-blueprint .resume-section>h2{padding-bottom:12px;border-bottom:1.5px solid var(--bp-ink)}.v-blueprint .resume-section .section-topline{margin-bottom:22px}.v-blueprint .resume-section .section-topline h2{margin:0}.v-blueprint .education-row,.v-blueprint .experience-row{border-top:1px solid var(--bp-line)}.v-blueprint .experience-list .experience-row:first-child{border-top:0}.v-blueprint .experience-period{font-size:11px;letter-spacing:.06em;color:hsl(var(--accent));text-transform:uppercase}.v-blueprint .education-row h3,.v-blueprint .experience-row h3{font-family:var(--font-display);font-weight:600;font-size:25px;letter-spacing:.03em;text-transform:uppercase}.v-blueprint .education-row>div>p,.v-blueprint .experience-role{font:500 12px var(--font-mono);letter-spacing:.04em}.v-blueprint .experience-bullets{font-size:15px;line-height:1.7;color:hsl(var(--foreground))}.v-blueprint .resume-projects,.v-blueprint .skill-groups{gap:18px;border-top:0;padding-top:0}.v-blueprint .resume-projects article,.v-blueprint .skill-group{padding:22px}.v-blueprint .resume-projects h3,.v-blueprint .skill-group h3{font-family:var(--font-display);font-weight:600;font-size:22px;letter-spacing:.03em;text-transform:uppercase}.v-blueprint .resume-projects p:not(.tech-list):not(.project-context),.v-blueprint .skill-group p:not(.tech-list){font-size:14.5px;line-height:1.7;color:hsl(var(--foreground))}.v-blueprint .resume-end{font:500 12px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-top:1.5px solid var(--bp-ink);border-bottom:1.5px solid var(--bp-ink)}.v-blueprint .contact-address{padding:36px;gap:40px}.v-blueprint .big-email{font-family:var(--font-mono);font-weight:500;font-size:clamp(22px,3.2vw,36px);letter-spacing:-.02em;text-decoration-color:hsl(var(--accent))}.v-blueprint .contact-address>p{font-size:15.5px;color:hsl(var(--foreground))}.v-blueprint .consulting-services{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.v-blueprint .consulting-services .section-title{grid-column:1/-1;padding-bottom:12px;margin-bottom:8px;border-bottom:1.5px solid var(--bp-ink)}.v-blueprint .service-row{display:block;padding:26px 24px 22px}.v-blueprint .service-row h3{margin-bottom:8px;font-family:var(--font-display);font-weight:600;font-size:23px;letter-spacing:.03em;line-height:1.1;text-transform:uppercase}.v-blueprint .service-row p:not(.tech-list),.v-blueprint .working-together p{font-size:15px;line-height:1.7;color:hsl(var(--foreground))}.v-blueprint .working-together{border-top:1.5px solid var(--bp-ink);border-bottom:1.5px solid var(--bp-ink);margin-top:50px}.v-blueprint .working-together h2{font-size:32px;letter-spacing:.03em}.v-blueprint .piano-caption{font:500 12px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:hsl(var(--accent))}.v-blueprint .piano{background:var(--bp-panel);border-top-width:1.5px;border:1.5px solid var(--bp-ink);border-radius:0;box-shadow:8px 8px 0 -1px hsl(var(--background)),8px 8px 0 0 var(--bp-line)}.v-blueprint .piano-key{border-radius:0}.v-blueprint .white-key{background:transparent;border:1px solid var(--bp-ink);color:hsl(var(--foreground))}.v-blueprint .black-key{background:hsl(var(--foreground));border:1px solid var(--bp-ink);color:hsl(var(--background))}.v-blueprint .white-key.is-playing,.v-blueprint .white-key:hover{background:hsl(var(--accent)/.25)}.v-blueprint .black-key.is-playing,.v-blueprint .black-key:hover{background:hsl(var(--accent))}.v-blueprint .music-platforms{border-top:1.5px solid var(--bp-ink);border-bottom:1px solid var(--bp-line)}.v-blueprint .track-row{border-bottom:1px solid var(--bp-line);grid-template-columns:46px 1fr 70px 90px}.v-blueprint .project-number{display:grid;place-items:center;width:34px;height:34px;color:hsl(var(--accent));border:1px solid hsl(var(--accent));border-radius:50%}.v-blueprint .track-row h2{font-size:30px;font-weight:600;letter-spacing:.03em}.v-blueprint .track-row h2 a{text-decoration:none}.v-blueprint .track-row h2 a:hover{color:hsl(var(--accent))}.v-blueprint .track-play,.v-blueprint .track-row p{font:500 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.v-blueprint .music-footnote{font-family:var(--font-display);font-style:normal;font-weight:600;text-transform:uppercase;letter-spacing:.04em}}@media screen and (max-width:1000px){.v-blueprint .site-nav a{padding:0 12px}.v-blueprint .site-nav a:after{left:12px}.v-blueprint .site-nav a:hover:after,.v-blueprint .site-nav a[aria-current=page]:after{width:calc(100% - 24px)}}@media screen and (max-width:850px){.v-blueprint .site-shell{padding:0 24px}.v-blueprint .hero{grid-template-columns:minmax(0,1fr) 190px;gap:0 40px}.v-blueprint .portrait{width:190px;height:190px}.v-blueprint .about-section,.v-blueprint .contact-note{grid-template-columns:1fr;gap:20px}.v-blueprint .contact-note{gap:0}.v-blueprint .contact-note h2{border-right:0;border-bottom:1px solid var(--bp-line)}.v-blueprint .consulting-services{grid-template-columns:1fr}}@media screen and (max-width:680px){.v-blueprint .site-header{padding:0 0 6px}.v-blueprint .wordmark{border-right:0;padding:16px 0 8px}.v-blueprint .site-nav a{padding:10px 0;border-left:0;font-size:10.5px;letter-spacing:.06em}.v-blueprint .site-nav a:after{left:0;bottom:4px}.v-blueprint .site-nav a:hover:after,.v-blueprint .site-nav a[aria-current=page]:after{width:100%}.v-blueprint .theme-toggle{margin-left:0}}@media screen and (max-width:600px){.v-blueprint .site-shell{width:calc(100% - 16px);padding:0 16px}.v-blueprint .hero{padding:36px 0 50px}.v-blueprint .hero:after{display:none}.v-blueprint .hero h1{font-size:clamp(56px,18vw,76px)}.v-blueprint .portrait{width:120px;height:120px;padding:6px;outline-offset:7px;margin:8px 0 0 8px}.v-blueprint .section-title{font-size:30px}.v-blueprint .about-copy>.text-link{margin-left:0}.v-blueprint .contact-note h2{font-size:32px}.v-blueprint .page-intro h1{font-size:56px}.v-blueprint .contact-address{padding:26px 20px}.v-blueprint .track-row{grid-template-columns:40px minmax(0,1fr) 34px}.v-blueprint .track-row h2{font-size:24px}}@media screen{html.v-concert{--background:42 52% 95%;--foreground:20 26% 12%;--muted-foreground:22 12% 37%;--border:36 26% 78%;--card:42 60% 98%;--card-foreground:20 26% 12%;--popover:42 60% 98%;--popover-foreground:20 26% 12%;--primary:20 26% 12%;--primary-foreground:42 52% 95%;--secondary:40 36% 89%;--secondary-foreground:20 26% 12%;--muted:40 36% 89%;--accent:352 62% 31%;--accent-foreground:42 52% 96%;--input:36 26% 78%;--ring:352 62% 31%;--radius:0rem;--font-display:var(--font-v-cormorant),"Cormorant Garamond",Garamond,Georgia,serif;--font-body:var(--font-v-eb-garamond),Garamond,Georgia,serif;--font-mono:var(--font-v-eb-garamond),Garamond,Georgia,serif;--ct-gold:40 48% 44%;--ct-ivory:#fbf6e9;--ct-ebony:#1d1311;--ct-staff:repeating-linear-gradient(to bottom,hsl(var(--ct-gold)) 0 1px,transparent 1px 6px)}html.v-concert.dark{--background:350 26% 7%;--foreground:38 42% 88%;--muted-foreground:34 16% 66%;--border:350 14% 22%;--card:350 24% 10%;--card-foreground:38 42% 88%;--popover:350 24% 10%;--popover-foreground:38 42% 88%;--primary:38 42% 88%;--primary-foreground:350 26% 7%;--secondary:350 18% 14%;--secondary-foreground:38 42% 88%;--muted:350 18% 14%;--accent:40 58% 66%;--accent-foreground:350 26% 7%;--input:350 14% 22%;--ring:40 58% 66%;--ct-gold:40 52% 60%}html.v-concert body{font-size:18px;line-height:1.6;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E")}.v-concert h1,.v-concert h2{font-weight:500}.v-concert main{counter-reset:ct-mvt ct-track}.v-concert .experience-period,.v-concert .eyebrow,.v-concert .project-context,.v-concert .tech-list{font-family:var(--font-body);font-variant-caps:all-small-caps;letter-spacing:.12em;text-transform:none}.v-concert .site-header{position:relative;display:flex;flex-direction:column;justify-content:center;gap:8px;min-height:0;padding:30px 0 0;border-bottom:0}.v-concert .site-header:after{content:"";align-self:stretch;height:6px;margin-top:12px;border-top:1px solid hsl(var(--ct-gold));border-bottom:1px solid hsl(var(--ct-gold))}.v-concert .wordmark{margin:0}.v-concert .wordmark-name{font-family:var(--font-display);font-weight:500;font-size:30px;letter-spacing:.2em;text-transform:uppercase}.v-concert .site-nav{gap:32px;justify-content:center}.v-concert .site-nav a{padding:4px 0;font-size:17px;font-style:italic}.v-concert .site-nav a+a:before{content:"·";position:absolute;left:-19px;font-style:normal;color:hsl(var(--ct-gold))}.v-concert .site-nav a:after{background:hsl(var(--accent));bottom:2px}.v-concert .site-nav a:hover{color:hsl(var(--accent))}.v-concert .theme-toggle{position:absolute;top:30px;right:0;border-color:hsl(var(--ct-gold));color:hsl(var(--ct-gold))}.v-concert .theme-toggle:hover{background:hsl(var(--ct-gold)/.12)}.v-concert .eyebrow{font-size:15px;color:hsl(var(--accent))}.v-concert .tech-list{font-size:15px;color:hsl(var(--ct-gold))}.v-concert .text-link{font-size:17px;font-style:italic}.v-concert .inline-link,.v-concert .text-link{text-decoration-color:hsl(var(--ct-gold))}.v-concert .button{min-height:46px;padding:10px 26px;border-radius:0;font-family:var(--font-body);font-size:17px;font-variant-caps:all-small-caps;letter-spacing:.16em;border:1px solid hsl(var(--ct-gold));outline:1px solid hsl(var(--ct-gold)/.5);outline-offset:3px}.v-concert .button-outline:focus-visible,.v-concert .button-outline:hover{color:hsl(var(--accent-foreground));background:hsl(var(--accent))}.v-concert .hero{grid-template-columns:240px minmax(0,1fr);gap:72px;align-items:center;padding:64px 0 74px}.v-concert .portrait{grid-column:1;grid-row:1;width:240px;height:300px;padding:7px;border-radius:50%;background:hsl(var(--card));border:1px solid hsl(var(--ct-gold));outline:1px solid hsl(var(--ct-gold)/.55);outline-offset:7px;filter:sepia(.32) saturate(.72) contrast(1.03)}.v-concert .hero-copy{grid-column:2;grid-row:1}.v-concert .hero h1{position:relative;margin:0 0 22px;padding-bottom:46px;font-style:italic;font-size:clamp(62px,8.2vw,108px);line-height:.95;letter-spacing:-.01em}.v-concert .hero h1:after{content:"";position:absolute;left:0;bottom:0;width:min(380px,85%);height:25px;background:var(--ct-staff);opacity:.85}.v-concert .hero h1:before{content:"\1D11E";position:absolute;left:2px;bottom:-15px;z-index:1;font-family:Segoe UI Symbol,Apple Symbols,Noto Music,serif;font-style:normal;font-size:58px;line-height:1;color:hsl(var(--accent))}.v-concert .hero-role{font-size:21px;font-variant-caps:all-small-caps;letter-spacing:.14em;color:hsl(var(--accent))}.v-concert .hero-description{max-width:600px;margin-top:14px;font-size:19px;line-height:1.6;color:hsl(var(--foreground))}.v-concert .hero-actions{margin-top:30px;gap:30px}.v-concert .contact-note h2,.v-concert .resume-section .section-topline h2,.v-concert .resume-section>h2,.v-concert .section-title,.v-concert .working-together h2{counter-increment:ct-mvt}.v-concert .contact-note h2:before,.v-concert .resume-section .section-topline h2:before,.v-concert .resume-section>h2:before,.v-concert .section-title:before,.v-concert .working-together h2:before{content:counter(ct-mvt,upper-roman) ".";margin-right:.3em;font-style:normal;color:hsl(var(--accent))}.v-concert .section-heading h2,.v-concert .section-title{font-style:italic;font-size:46px;line-height:1.15;letter-spacing:-.005em;margin:0 0 10px}.v-concert .contact-note,.v-concert .home-section{margin-top:64px}.v-concert .contact-note:before,.v-concert .home-section:before{content:"\2766";display:block;grid-column:1/-1;margin-bottom:34px;font-family:Segoe UI Symbol,Apple Symbols,serif;font-size:24px;text-align:center;color:hsl(var(--ct-gold))}.v-concert .selected-work{margin-top:10px}.v-concert .section-topline{flex-direction:column;align-items:center;gap:0;margin-bottom:30px;text-align:center}.v-concert .section-topline .section-title{margin:0 0 4px}.v-concert .selected-projects{max-width:840px;margin:0 auto;border-top:0}.v-concert .project-row{display:block;padding:18px 0 24px;border-bottom:0}.v-concert .project-row-title{display:flex;align-items:baseline;gap:12px}.v-concert .project-row h3{order:1;margin:0;font-family:var(--font-display);font-size:30px;font-weight:600;line-height:1.15}.v-concert .project-row h3 a{text-decoration:none}.v-concert .project-row h3 a:hover{color:hsl(var(--accent))}.v-concert .project-row-title:after{content:"";order:2;flex:1 1 40px;min-width:40px;border-bottom:2px dotted hsl(var(--foreground)/.35)}.v-concert .project-row .project-context{order:3;max-width:none;font-size:16px;white-space:nowrap;color:hsl(var(--muted-foreground))}.v-concert .project-row-description{margin-top:6px}.v-concert .project-row-description>p{max-width:680px;font-size:18px;font-style:italic;line-height:1.55;color:hsl(var(--foreground)/.88)}.v-concert .project-row .tech-list{margin-top:6px}.v-concert .about-section{display:block;max-width:700px;margin-left:auto;margin-right:auto}.v-concert .about-section>div:first-child{display:flex;flex-direction:column;align-items:center;margin-bottom:26px}.v-concert .about-copy{max-width:none;font-size:19px;line-height:1.65;text-align:justify;hyphens:auto;color:hsl(var(--foreground))}.v-concert .about-copy p:first-child:first-letter{float:left;padding:6px 10px 0 0;font-family:var(--font-display);font-size:4em;font-weight:600;line-height:.78;color:hsl(var(--accent))}.v-concert .about-copy>.text-link{display:flex;justify-content:center;margin-top:22px}.v-concert .contact-note{display:block;max-width:680px;margin-left:auto;margin-right:auto;padding:0;text-align:center;border:0}.v-concert .contact-note h2{margin-bottom:14px;font-style:italic;font-size:46px}.v-concert .contact-note p{max-width:none;font-size:19px;color:hsl(var(--foreground))}.v-concert .site-footer{margin-top:80px;padding-top:0;text-align:center}.v-concert .site-footer:before{content:"Fine";display:block;margin-bottom:26px;font-family:var(--font-display);font-style:italic;font-size:32px;color:hsl(var(--accent))}.v-concert .footer-top{flex-direction:column;gap:12px;padding-top:24px;border-top:1px solid hsl(var(--ct-gold))}.v-concert .footer-signature{font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:.2em;text-transform:uppercase}.v-concert .footer-socials a{font-size:16px;font-style:italic;text-decoration-color:hsl(var(--ct-gold))}.v-concert .footer-bottom{justify-content:center;gap:28px;font-size:15px;font-variant-caps:all-small-caps;letter-spacing:.12em;border-top:0}.v-concert .page-content{padding-top:50px}.v-concert .page-intro{max-width:760px;margin:0 auto;text-align:center}.v-concert .not-found h1,.v-concert .page-intro h1{font-style:italic;font-size:clamp(54px,7vw,86px);line-height:1}.v-concert .not-found h1:after,.v-concert .page-intro h1:after{content:"";display:block;width:140px;height:25px;margin:22px auto 0;background:var(--ct-staff);opacity:.8}.v-concert .page-intro>p:not(.eyebrow){margin:0 auto;font-size:20px;font-style:italic;line-height:1.55;color:hsl(var(--foreground))}.v-concert .project-toolbar{justify-content:center;border-top:1px solid hsl(var(--ct-gold));border-bottom:1px solid hsl(var(--ct-gold))}.v-concert .project-filters button{font-size:18px;font-variant-caps:all-small-caps;letter-spacing:.12em}.v-concert .project-filters button span{font-family:var(--font-body);font-size:14px;color:hsl(var(--ct-gold))}.v-concert .project-filters button[aria-pressed=true]{color:hsl(var(--accent))}.v-concert .project-count{display:none}.v-concert .project-detail{grid-template-columns:210px minmax(0,1fr);border-bottom:1px solid hsl(var(--border))}.v-concert .project-detail-side .eyebrow{font-size:16px;color:hsl(var(--ct-gold))}.v-concert .project-context{font-size:16px;color:hsl(var(--muted-foreground))}.v-concert .project-detail h2{font-size:38px;font-weight:600;line-height:1.1}.v-concert .project-detail h2 a{text-decoration-color:hsl(var(--ct-gold))}.v-concert .project-detail-main>p:not(.tech-list):not(.project-context){font-size:18.5px;line-height:1.6;color:hsl(var(--foreground))}.v-concert .project-details-disclosure summary{font-size:17px;font-style:italic;color:hsl(var(--accent))}.v-concert .project-details-disclosure ul{font-size:17px}.v-concert .experience-bullets li::marker,.v-concert .project-details-disclosure li::marker{color:hsl(var(--ct-gold))}.v-concert .resume-topline .eyebrow{color:hsl(var(--ct-gold))}.v-concert .resume-intro{max-width:820px}.v-concert .resume-intro>.resume-title{font-size:20px;font-style:italic}.v-concert .resume-contact{justify-content:center;font-size:16px;font-variant-caps:all-small-caps;letter-spacing:.1em}.v-concert .resume-intro>p:last-child{max-width:720px;margin:0 auto;font-size:18px}.v-concert .resume-section{margin-bottom:56px}.v-concert .resume-section .section-topline h2,.v-concert .resume-section>h2{font-style:italic;font-size:42px;text-align:center}.v-concert .resume-section .section-topline{flex-direction:column;align-items:center}.v-concert .education-row,.v-concert .experience-row{grid-template-columns:170px minmax(0,1fr);border-top:1px solid hsl(var(--border))}.v-concert .experience-period{font-size:16px;color:hsl(var(--ct-gold))}.v-concert .education-row h3,.v-concert .experience-row h3{font-family:var(--font-display);font-size:28px;font-weight:600;line-height:1.15}.v-concert .education-row>div>p,.v-concert .experience-role{font-size:17px;font-style:italic}.v-concert .experience-bullets{font-size:17.5px;line-height:1.55;color:hsl(var(--foreground))}.v-concert .resume-projects,.v-concert .skill-groups{border-top:1px solid hsl(var(--border))}.v-concert .resume-projects h3,.v-concert .skill-group h3{font-family:var(--font-display);font-size:24px;font-weight:600}.v-concert .resume-projects p:not(.tech-list):not(.project-context),.v-concert .skill-group p:not(.tech-list){font-size:17px;line-height:1.55;color:hsl(var(--foreground))}.v-concert .resume-end{justify-content:center;gap:24px;font-size:19px;font-style:italic}.v-concert .contact-address,.v-concert .resume-end{border-top:1px solid hsl(var(--ct-gold));border-bottom:1px solid hsl(var(--ct-gold))}.v-concert .contact-address .eyebrow{font-size:17px}.v-concert .big-email{font-family:var(--font-display);font-style:italic;font-weight:500;letter-spacing:0;color:hsl(var(--accent));text-decoration-color:hsl(var(--ct-gold))}.v-concert .copy-email button{font-size:15px}.v-concert .contact-address>p{font-size:18px;font-style:italic;color:hsl(var(--foreground))}.v-concert .consulting-services{max-width:840px;margin:64px auto 0}.v-concert .consulting-services .section-title{margin-bottom:26px;text-align:center}.v-concert .service-row{grid-template-columns:260px minmax(0,1fr);border-top:1px dotted hsl(var(--foreground)/.3)}.v-concert .service-row h3{font-family:var(--font-display);font-size:26px;font-weight:600;line-height:1.15}.v-concert .service-row p:not(.tech-list),.v-concert .working-together p{font-size:18px;line-height:1.55;color:hsl(var(--foreground))}.v-concert .working-together{grid-template-columns:260px minmax(0,1fr);border-top:1px solid hsl(var(--ct-gold));border-bottom:1px solid hsl(var(--ct-gold))}.v-concert .working-together h2{font-style:italic;font-size:34px}.v-concert .music-page-intro .page-intro{margin:0;text-align:left}.v-concert .music-page-intro .page-intro h1:after{margin-left:0}.v-concert .music-page-intro .page-intro>p:not(.eyebrow){margin:0}.v-concert .piano-caption{font-style:italic;font-size:22px}.v-concert .piano{background:var(--ct-ebony);border-color:var(--ct-ebony);border-radius:3px;box-shadow:0 0 0 1px hsl(var(--ct-gold)),0 14px 30px -14px rgba(0,0,0,.55)}.v-concert .white-key{background:var(--ct-ivory);border-color:#3a2a22 #3a2a22 #e3d8bd;color:#7b6a55}.v-concert .white-key.is-playing,.v-concert .white-key:hover{background:#f0dfb4}.v-concert .black-key{background:var(--ct-ebony);border-color:#0c0807 #0c0807 #3b2a25}.v-concert .black-key.is-playing,.v-concert .black-key:hover{background:#7a1f2b}.v-concert .piano-help,.v-concert .piano-key span{font-family:var(--font-body);font-size:12px}.v-concert .piano-message{font-style:italic;font-size:14px}.v-concert .music-platforms{justify-content:center;border-top:1px solid hsl(var(--ct-gold));border-bottom:1px solid hsl(var(--ct-gold))}.v-concert .music-platforms .eyebrow{margin-right:0}.v-concert .track-list{max-width:840px;margin:24px auto 0}.v-concert .track-row{counter-increment:ct-track;display:flex;align-items:baseline;gap:14px;padding:18px 0;border-bottom:0}.v-concert .project-number{order:0;width:46px;font-size:0}.v-concert .project-number:before{content:counter(ct-track,upper-roman) ".";font-family:var(--font-display);font-size:22px;font-weight:600;color:hsl(var(--accent))}.v-concert .track-row>div{order:1}.v-concert .track-row h2{display:inline;font-size:32px;font-weight:600}.v-concert .track-row h2 a{text-decoration:none}.v-concert .track-row h2 a:hover{color:hsl(var(--accent))}.v-concert .track-row p{display:inline;margin-left:12px;font-size:17px;font-style:italic;color:hsl(var(--muted-foreground))}.v-concert .track-row:after{content:"";order:2;flex:1;min-width:30px;border-bottom:2px dotted hsl(var(--foreground)/.35)}.v-concert .track-year{order:3;font-family:var(--font-body);font-size:18px;color:hsl(var(--foreground))}.v-concert .track-play{order:4;font-size:16px;font-style:italic}.v-concert .music-footnote{text-align:center;font-size:28px}}@media screen and (max-width:850px){.v-concert .hero{grid-template-columns:190px minmax(0,1fr);gap:44px}.v-concert .portrait{width:190px;height:240px}.v-concert .service-row,.v-concert .working-together{grid-template-columns:200px minmax(0,1fr)}}@media screen and (max-width:680px){.v-concert .site-header{padding-top:22px}.v-concert .wordmark-name{font-size:22px;letter-spacing:.16em}.v-concert .theme-toggle{top:18px}.v-concert .site-nav{gap:22px;max-width:none;justify-content:center}.v-concert .site-nav a{font-size:15.5px}.v-concert .site-nav a+a:before{left:-14px}.v-concert .project-row-title{flex-wrap:wrap;gap:0}.v-concert .project-row-title:after{display:none}.v-concert .project-row .project-context{order:0;white-space:normal}.v-concert .service-row,.v-concert .working-together{grid-template-columns:1fr}}@media screen and (max-width:600px){.v-concert .hero{align-items:center;padding:40px 0 54px;text-align:center}.v-concert .portrait{width:150px;height:190px;padding:5px;outline-offset:5px}.v-concert .hero h1{font-size:clamp(52px,15vw,66px)}.v-concert .hero h1:after{left:50%;transform:translateX(-50%);width:220px}.v-concert .hero h1:before{left:calc(50% - 110px)}.v-concert .hero-actions{justify-content:center}.v-concert .contact-note h2,.v-concert .section-title{font-size:38px}.v-concert .about-copy{text-align:left}.v-concert .page-intro h1{font-size:52px}.v-concert .education-row,.v-concert .experience-row{grid-template-columns:1fr}.v-concert .track-row{flex-wrap:wrap;gap:4px 10px}.v-concert .track-row:after{display:none}.v-concert .track-row>div{flex:1 1 70%}.v-concert .track-row h2{font-size:26px}.v-concert .track-row p{display:block;margin:2px 0 0}.v-concert .track-year{display:none}.v-concert .track-play{width:auto;height:auto}}@media screen{html.v-desktop{--background:180 100% 25%;--foreground:0 0% 0%;--muted-foreground:0 0% 25%;--border:0 0% 50%;--card:0 0% 75%;--card-foreground:0 0% 0%;--popover:0 0% 75%;--popover-foreground:0 0% 0%;--primary:0 0% 0%;--primary-foreground:0 0% 100%;--secondary:0 0% 75%;--secondary-foreground:0 0% 0%;--muted:0 0% 87%;--accent:240 100% 25%;--accent-foreground:0 0% 100%;--input:0 0% 50%;--ring:0 0% 0%;--radius:0rem;--font-display:var(--font-v-pixelify),Tahoma,Verdana,sans-serif;--font-body:Tahoma,"Segoe UI",Verdana,Geneva,sans-serif;--font-mono:"Lucida Console",Consolas,"Courier New",monospace;--dk-ui:Tahoma,"Segoe UI",Verdana,Geneva,sans-serif;--dk-desktop:teal;--dk-face:silver;--dk-hilite:#dfdfdf;--dk-light:#fff;--dk-shadow:grey;--dk-dark:#0a0a0a;--dk-field:#fff;--dk-text:#000;--dk-title:linear-gradient(90deg,navy,#1084d0);--dk-heading:navy;--dk-select:navy;--dk-link:#00e;--dk-raised:inset -1px -1px var(--dk-dark),inset 1px 1px var(--dk-light),inset -2px -2px var(--dk-shadow),inset 2px 2px var(--dk-hilite);--dk-sunken:inset -1px -1px var(--dk-light),inset 1px 1px var(--dk-shadow),inset -2px -2px var(--dk-hilite),inset 2px 2px var(--dk-dark);--dk-thin-sunken:inset -1px -1px var(--dk-light),inset 1px 1px var(--dk-shadow);--dk-dither:repeating-conic-gradient(var(--dk-face) 0% 25%,var(--dk-light) 0% 50%) 0 0 /2px 2px;--style-picker-offset:54px}html.v-desktop.dark{--background:256 41% 16%;--foreground:240 25% 93%;--muted-foreground:240 10% 72%;--border:240 10% 14%;--card:245 10% 25%;--card-foreground:240 25% 93%;--popover:245 10% 25%;--popover-foreground:240 25% 93%;--primary:240 25% 93%;--primary-foreground:256 41% 16%;--secondary:245 10% 25%;--secondary-foreground:240 25% 93%;--muted:245 10% 30%;--accent:270 60% 70%;--accent-foreground:0 0% 100%;--input:240 10% 14%;--ring:0 0% 100%;--dk-desktop:#221a3d;--dk-face:#3b3a48;--dk-hilite:#4f4e5f;--dk-light:#6f6e84;--dk-shadow:#1f1e28;--dk-dark:#07070a;--dk-field:#23222c;--dk-text:#ececf4;--dk-title:linear-gradient(90deg,#4a1c7a,#a24fd6);--dk-heading:#d7b8ff;--dk-select:#6b35b8;--dk-link:#a9c7ff}html.v-desktop{scroll-padding-top:20px}html.v-desktop body{padding-bottom:64px;overflow-x:clip;font-family:var(--dk-ui);font-size:14.5px;line-height:1.55;color:var(--dk-text);background:var(--dk-desktop);-webkit-font-smoothing:auto}html.v-desktop.dark body{background-image:radial-gradient(hsla(0,0%,100%,.05) 1px,transparent 0);background-size:4px 4px}.v-desktop h1,.v-desktop h2{font-weight:600}.v-desktop ::selection{background:var(--dk-select);color:#fff}.v-desktop :is(a,button,summary):focus-visible{outline:1px dotted var(--dk-text);outline-offset:-4px;border-radius:0}.v-desktop .site-header{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;height:44px;min-height:0;padding:5px 6px 4px;gap:4px;border:0;background:var(--dk-face);box-shadow:inset 0 1px var(--dk-hilite),inset 0 2px var(--dk-light)}.v-desktop .wordmark{display:flex;align-items:center;gap:7px;height:34px;margin-right:4px;padding:0 10px 0 6px;background:var(--dk-face);box-shadow:var(--dk-raised)}.v-desktop .wordmark:before{content:"H";display:grid;place-items:center;width:20px;height:20px;font:600 14px/1 var(--font-display);color:#fff;background:linear-gradient(135deg,navy,#1084d0);box-shadow:1px 1px 0 var(--dk-dark)}.v-desktop .wordmark:active{box-shadow:var(--dk-sunken)}.v-desktop .wordmark-name{font:700 13px/1 var(--dk-ui);letter-spacing:0}.v-desktop .site-nav{gap:4px;margin-right:auto}.v-desktop .site-nav a{display:flex;align-items:center;height:34px;min-width:96px;padding:0 12px;font-size:13px;background:var(--dk-face);box-shadow:var(--dk-raised)}.v-desktop .site-nav a:before{content:"";width:14px;height:12px;margin-right:7px;background:linear-gradient(var(--dk-select) 0 3px,var(--dk-field) 3px);box-shadow:inset 0 0 0 1px var(--dk-text)}.v-desktop .site-nav a:after{display:none}.v-desktop .site-nav a:hover{color:inherit}.v-desktop .site-nav a:active,.v-desktop .site-nav a[aria-current=page]{font-weight:700;background:var(--dk-dither);box-shadow:var(--dk-sunken)}html.v-desktop.dark .site-nav a[aria-current=page]{background:var(--dk-hilite)}.v-desktop .theme-toggle{width:auto;height:34px;padding:0 12px;border:0;border-radius:0;color:var(--dk-text);box-shadow:var(--dk-thin-sunken)}.v-desktop .theme-toggle,.v-desktop .theme-toggle:hover{background:var(--dk-face)}.v-desktop :is(.hero,.home-section,.contact-note,.page-intro,.project-detail,.resume-section,.contact-address,.consulting-services,.working-together,.music-page-intro,.track-list,.site-footer,.not-found){position:relative;margin-top:24px;padding:38px 18px 18px;color:var(--dk-text);background:var(--dk-face);border:0;box-shadow:var(--dk-raised),0 0 0 1px var(--dk-face)}.v-desktop :is(.hero,.page-intro,.contact-address,.music-page-intro,.track-list,.site-footer,.not-found):before,.v-desktop :is(.home-section .section-title,.contact-note h2,.project-detail h2,.resume-section>h2,.resume-section .section-topline h2,.consulting-services .section-title,.working-together h2){position:absolute;top:3px;left:3px;right:3px;z-index:1;display:flex;align-items:center;gap:6px;height:24px;margin:0;padding:0 32px 0 6px;overflow:hidden;white-space:nowrap;font:700 13px/1 var(--dk-ui);letter-spacing:0;text-transform:none;text-shadow:none;color:#fff;background:var(--dk-title)}.v-desktop :is(.hero,.page-intro,.contact-address,.music-page-intro,.track-list,.site-footer,.not-found):before{content:var(--dk-win-title,"Untitled")}.v-desktop :is(.home-section .section-title,.contact-note h2,.project-detail h2,.resume-section>h2,.resume-section .section-topline h2,.consulting-services .section-title,.working-together h2):before{content:"";flex-shrink:0;width:14px;height:12px;background:linear-gradient(navy 0 3px,#fff 3px);box-shadow:inset 0 0 0 1px #000}.v-desktop :is(.hero,.home-section,.contact-note,.page-intro,.project-detail,.resume-section,.contact-address,.consulting-services,.working-together,.music-page-intro,.track-list,.site-footer,.not-found):after{content:"\2715";position:absolute;top:7px;right:7px;z-index:2;display:grid;place-items:center;width:18px;height:16px;font:700 10px/1 var(--dk-ui);color:var(--dk-text);background:var(--dk-face);box-shadow:var(--dk-raised)}.v-desktop .project-detail h2 a{color:#fff;text-decoration:none}.v-desktop .project-detail h2 a:hover{text-decoration:underline}.v-desktop .hero{--dk-win-title:"Welcome"}.v-desktop .page-intro{--dk-win-title:"C:\\HERMAN\\WORK"}.v-desktop .resume-page .page-intro{--dk-win-title:"resume.doc - WordPad"}.v-desktop .contact-page .page-intro{--dk-win-title:"Contact"}.v-desktop .contact-address{--dk-win-title:"New Message"}.v-desktop .music-page-intro{--dk-win-title:"Media Player"}.v-desktop .track-list{--dk-win-title:"Playlist"}.v-desktop .site-footer{--dk-win-title:"Links"}.v-desktop .not-found{--dk-win-title:"Error"}.v-desktop .about-section .section-title:after{content:"- Notepad"}.v-desktop .button,.v-desktop .contact-note .text-link,.v-desktop .print-button,.v-desktop .resume-end .text-link{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;min-width:96px;padding:4px 16px;font:400 13.5px/1.2 var(--dk-ui);letter-spacing:0;text-transform:none;text-decoration:none;color:var(--dk-text);background:var(--dk-face);border:0;border-radius:0;box-shadow:var(--dk-raised),0 0 0 1px var(--dk-dark)}.v-desktop .button-outline:hover,.v-desktop .button:hover,.v-desktop .contact-note .text-link:hover{color:var(--dk-text);background:var(--dk-face)}.v-desktop .button:active,.v-desktop .contact-note .text-link:active,.v-desktop .print-button:active{box-shadow:var(--dk-sunken),0 0 0 1px var(--dk-dark);padding:5px 15px 3px 17px}.v-desktop .footer-bottom a,.v-desktop .footer-socials a,.v-desktop .inline-link,.v-desktop .resume-contact a,.v-desktop .text-link{font:inherit;font-size:14px;color:var(--dk-link);text-decoration:underline;text-decoration-color:currentColor;text-underline-offset:2px}.v-desktop .footer-socials a:hover,.v-desktop .inline-link:hover,.v-desktop .text-link:hover{color:var(--dk-link);text-decoration-thickness:1px}.v-desktop .eyebrow{font:700 11px/1.5 var(--dk-ui);letter-spacing:0;text-transform:none;color:var(--dk-text)}.v-desktop .tech-list{font:12px/1.6 var(--font-mono);color:var(--dk-text);opacity:.75}.v-desktop .hero{grid-template-columns:minmax(0,1fr) 220px;gap:34px;align-items:start;margin-top:30px;padding:46px 28px 28px}.v-desktop .hero h1{margin:0 0 14px;font-size:clamp(50px,6.6vw,82px);line-height:1;letter-spacing:0;color:var(--dk-heading);text-shadow:3px 3px 0 var(--dk-shadow)}.v-desktop .hero-role{font-size:15px;font-weight:700}.v-desktop .hero-description{max-width:620px;margin-top:12px;font-size:15px;line-height:1.6;color:var(--dk-text)}.v-desktop .hero-actions{gap:14px;margin-top:24px}.v-desktop .hero-actions .text-link{min-height:32px}.v-desktop .portrait{width:220px;height:220px;padding:3px;border-radius:0;background:var(--dk-field);box-shadow:var(--dk-sunken);filter:contrast(1.05) saturate(1.1)}.v-desktop .home-section{margin-top:24px}.v-desktop .section-topline{justify-content:flex-start;gap:16px;margin:-8px 0 10px;padding:0 2px 6px;border-bottom:1px solid var(--dk-shadow);box-shadow:0 1px var(--dk-light)}.v-desktop .section-topline .text-link{font-size:13px}.v-desktop .selected-projects{padding:2px;border:0;background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .project-row{grid-template-columns:300px minmax(0,1fr);gap:20px;padding:10px 12px;border-bottom:1px dotted var(--dk-shadow);cursor:default}.v-desktop .project-row:last-child{border-bottom:0}.v-desktop .project-row:hover{color:#fff;background:var(--dk-select)}.v-desktop .project-row:hover :is(.project-context,h3 a,.tech-list,p){color:#fff}.v-desktop .project-context{font-size:12px;color:var(--dk-text);opacity:.8}.v-desktop .project-row .project-context{max-width:none}.v-desktop .project-row h3{display:flex;align-items:center;gap:8px;margin-top:2px;font:700 15px/1.35 var(--dk-ui);letter-spacing:0}.v-desktop .project-row h3:before,.v-desktop .service-row h3:before{content:"";flex-shrink:0;width:18px;height:14px;background:linear-gradient(#ffe98a 0 4px,#f2c94c 4px);border:1px solid #7a5b00;border-radius:0 3px 0 0}.v-desktop .project-row h3 a{color:var(--dk-text);text-decoration:none}.v-desktop .project-row-description>p{font-size:14px;line-height:1.55;color:var(--dk-text)}.v-desktop .project-row .tech-list{margin-top:4px}.v-desktop .about-section{display:flex;flex-direction:column;gap:0}.v-desktop .about-section>div:first-child{display:flex;gap:16px;margin:-8px 0 6px;padding:0 2px 6px;border-bottom:1px solid var(--dk-shadow);box-shadow:0 1px var(--dk-light)}.v-desktop .about-section>div:first-child:before{content:"File   Edit   Search   Help";white-space:pre;font-size:13px}.v-desktop .about-section>div:first-child .text-link{margin-left:auto;font-size:13px}.v-desktop .about-copy{max-width:none;padding:14px 16px;font:14px/1.7 var(--font-mono);color:var(--dk-text);background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .about-copy p+p{margin-top:14px}.v-desktop .about-copy>.text-link{font-family:var(--font-mono)}.v-desktop .contact-note{grid-template-columns:44px minmax(0,1fr);gap:18px;max-width:620px;margin:28px auto 0;padding:46px 24px 24px}.v-desktop .contact-note:before{content:"i";display:grid;place-items:center;width:36px;height:36px;font:italic 700 22px/1 Georgia,serif;color:#fff;background:radial-gradient(circle at 35% 30%,#4f7dff,#0010a0);border-radius:50%;box-shadow:1px 1px 0 var(--dk-dark)}.v-desktop .contact-note p{max-width:none;font-size:14.5px;line-height:1.6;color:var(--dk-text)}.v-desktop .contact-note .text-link{margin-top:18px}.v-desktop .site-footer{margin:28px 0 30px;padding:40px 14px 10px}.v-desktop .footer-top{padding:0 4px 10px}.v-desktop .footer-signature{font:700 14px var(--dk-ui)}.v-desktop .footer-socials{gap:18px}.v-desktop .footer-socials a{font-size:13px}.v-desktop .footer-bottom{display:flex;gap:4px;margin-top:4px;padding:0;border:0;font:12px var(--dk-ui);color:var(--dk-text)}.v-desktop .footer-bottom>*{flex:1;padding:3px 8px;box-shadow:var(--dk-thin-sunken)}.v-desktop .footer-bottom>a{flex:0 0 auto}.v-desktop .page-content{padding-top:6px}.v-desktop .page-intro{max-width:none;padding:46px 28px 26px}.v-desktop .not-found h1,.v-desktop .page-intro h1{font-size:clamp(42px,5.4vw,64px);line-height:1.05;letter-spacing:0;color:var(--dk-heading);text-shadow:3px 3px 0 var(--dk-shadow)}.v-desktop .page-intro>p:not(.eyebrow){max-width:680px;font-size:15px;line-height:1.6;color:var(--dk-text)}.v-desktop .not-found{padding:46px 28px 26px}.v-desktop .not-found>p:not(.eyebrow){color:var(--dk-text)}.v-desktop .project-toolbar{margin-top:24px;padding:0 4px;border:0}.v-desktop .project-filters{gap:0;align-items:flex-end}.v-desktop .project-filters button{margin-right:-2px;padding:6px 14px 5px;font-size:13px;color:var(--dk-text);background:var(--dk-face);border-radius:4px 4px 0 0;box-shadow:inset 1px 1px var(--dk-light),inset -1px 0 var(--dk-dark),inset -2px 0 var(--dk-shadow),inset 2px 2px var(--dk-hilite)}.v-desktop .project-filters button:hover{color:var(--dk-text)}.v-desktop .project-filters button[aria-pressed=true]{z-index:1;padding:9px 16px 7px;font-weight:700}.v-desktop .project-filters button[aria-pressed=true]:after{display:none}.v-desktop .project-filters button span{font-family:var(--dk-ui);font-size:11px;color:var(--dk-text);opacity:.7}.v-desktop .project-count{color:#fff;font-size:13px}.v-desktop .project-toolbar+div>.project-detail:first-child{margin-top:0}.v-desktop .project-detail{grid-template-columns:190px minmax(0,1fr);gap:22px;margin-top:18px;padding:42px 22px 22px;scroll-margin-top:20px}.v-desktop .project-detail-side{padding:10px;background:var(--dk-field);box-shadow:var(--dk-sunken);align-self:start}.v-desktop .project-detail-side .eyebrow{font-size:12px}.v-desktop .project-detail-heading{margin:0}.v-desktop .project-detail-main>p:not(.tech-list):not(.project-context){margin-top:8px;font-size:14.5px;line-height:1.6;color:var(--dk-text)}.v-desktop .project-details-disclosure summary{padding:3px 10px;font-size:13px;color:var(--dk-text);background:var(--dk-face);box-shadow:var(--dk-raised)}.v-desktop .project-details-disclosure summary svg{width:13px;height:13px}.v-desktop .project-details-disclosure ul{padding:10px 12px 10px 30px;font-size:14px;background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .resume-topline{margin-top:24px}.v-desktop .resume-topline .eyebrow{color:#fff;font-size:13px}.v-desktop .resume-page .page-intro{margin-top:14px}.v-desktop .resume-intro>.resume-title{font-size:15px;font-weight:700}.v-desktop .resume-contact{font-size:13px}.v-desktop .resume-intro>p:last-child{max-width:none;padding:12px 14px;font-size:14.5px;line-height:1.6;background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .resume-section{margin-bottom:0;padding-top:42px}.v-desktop .resume-section .section-topline{margin:-6px 0 12px;border:0;box-shadow:none;padding:0}.v-desktop .education-row,.v-desktop .experience-row{grid-template-columns:160px minmax(0,1fr);padding:16px 4px;border-top:1px solid var(--dk-shadow);box-shadow:inset 0 1px var(--dk-light)}.v-desktop .education-row,.v-desktop .experience-list .experience-row:first-child{border-top:0;box-shadow:none;padding-top:4px}.v-desktop .experience-period{align-self:start;padding:3px 8px;font:12px var(--font-mono);color:var(--dk-text);background:var(--dk-field);box-shadow:var(--dk-thin-sunken)}.v-desktop .education-row h3,.v-desktop .experience-row h3{font:700 16px var(--dk-ui)}.v-desktop .education-row>div>p,.v-desktop .experience-role{font-size:13px;color:var(--dk-text);opacity:.8}.v-desktop .experience-bullets{font-size:14px;line-height:1.6;color:var(--dk-text)}.v-desktop .resume-projects,.v-desktop .skill-groups{gap:12px;padding-top:0;border-top:0}.v-desktop .resume-projects article,.v-desktop .skill-group{padding:12px 14px;background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .resume-projects h3,.v-desktop .skill-group h3{font:700 14.5px var(--dk-ui)}.v-desktop .resume-projects p:not(.tech-list):not(.project-context),.v-desktop .skill-group p:not(.tech-list){font-size:13.5px;line-height:1.55;color:var(--dk-text)}.v-desktop .resume-end{margin-top:24px;padding:12px 16px;font-size:14px;color:var(--dk-text);background:var(--dk-face);border:0;box-shadow:var(--dk-raised)}.v-desktop .contact-address{grid-template-columns:1.4fr 1fr;gap:26px;padding:44px 22px 22px}.v-desktop .contact-address .eyebrow{font-weight:400}.v-desktop .contact-address .eyebrow:after{content:":"}.v-desktop .big-email{display:flex;margin-top:6px;padding:8px 10px;font:400 clamp(18px,2.4vw,26px)/1.2 var(--font-mono);letter-spacing:0;color:var(--dk-text);text-decoration:none;background:var(--dk-field);box-shadow:var(--dk-sunken)}.v-desktop .big-email:hover{color:var(--dk-link)}.v-desktop .copy-email{margin-top:12px}.v-desktop .copy-email button{min-height:30px;padding:3px 14px;font-size:13px;color:var(--dk-text);text-decoration:none;background:var(--dk-face);box-shadow:var(--dk-raised),0 0 0 1px var(--dk-dark)}.v-desktop .contact-address>p{font-size:14px;color:var(--dk-text)}.v-desktop .consulting-services{padding:40px 18px 12px}.v-desktop .service-row{grid-template-columns:250px minmax(0,1fr);gap:20px;padding:14px 4px;border-top:1px solid var(--dk-shadow);box-shadow:inset 0 1px var(--dk-light)}.v-desktop .consulting-services .section-title+.service-row{border-top:0;box-shadow:none}.v-desktop .service-row h3{display:flex;align-items:center;gap:8px;font:700 15px/1.35 var(--dk-ui)}.v-desktop .service-row p:not(.tech-list),.v-desktop .working-together p{font-size:14px;line-height:1.6;color:var(--dk-text)}.v-desktop .working-together{display:block;padding:42px 22px 20px}.v-desktop .working-together p+p{margin-top:12px}.v-desktop .music-page-intro{grid-template-columns:1fr 320px;gap:30px;padding:44px 24px 22px}.v-desktop .music-page-intro .page-intro{margin:0;padding:0;background:none;box-shadow:none}.v-desktop .music-page-intro .page-intro:after,.v-desktop .music-page-intro .page-intro:before{content:none}.v-desktop .piano-widget{padding:12px;background:var(--dk-face);box-shadow:var(--dk-sunken)}.v-desktop .piano-caption{font:700 13px var(--dk-ui)}.v-desktop .piano{background:#202020;border:4px solid #202020;border-top:10px solid #202020;border-radius:0;box-shadow:var(--dk-raised)}.v-desktop .piano-key{border-radius:0}.v-desktop .white-key{background:#fff;border:1px solid #000;border-bottom:3px solid #a0a0a0;color:#404040}.v-desktop .white-key.is-playing,.v-desktop .white-key:hover{background:#c8d4ff}.v-desktop .black-key{background:#000;border:1px solid #000;border-bottom:3px solid #404040}.v-desktop .black-key.is-playing,.v-desktop .black-key:hover{background:navy}.v-desktop .piano-help,.v-desktop .piano-message{font-family:var(--dk-ui);color:var(--dk-text)}.v-desktop .music-platforms{margin-top:24px;padding:8px 14px;border:0;background:var(--dk-face);box-shadow:var(--dk-raised)}.v-desktop .music-platforms .eyebrow{font-weight:400}.v-desktop .track-list{padding:40px 14px 14px}.v-desktop .track-row{grid-template-columns:36px 1fr 70px 90px;gap:14px;padding:8px 10px;border-bottom:1px dotted var(--dk-shadow);background:var(--dk-field);cursor:default}.v-desktop .track-row:first-of-type{box-shadow:inset 0 2px var(--dk-dark)}.v-desktop .track-row:hover{background:var(--dk-select)}.v-desktop .track-row:hover :is(h2 a,p,span,.track-play){color:#fff}.v-desktop .project-number,.v-desktop .track-year{font:12px var(--font-mono);color:var(--dk-text)}.v-desktop .track-row h2{font:700 15px var(--dk-ui);letter-spacing:0}.v-desktop .track-row h2 a{color:var(--dk-text);text-decoration:none}.v-desktop .track-row p{margin-top:0;font-size:12px;color:var(--dk-text);opacity:.8}.v-desktop .track-play{font-size:13px;color:var(--dk-link)}.v-desktop .music-footnote{margin:24px 0 0;font:700 16px var(--dk-ui);color:#fff}.v-desktop .music-footnote span{color:#fff}}@media screen and (max-width:850px){.v-desktop .site-nav a{min-width:0}.v-desktop .site-nav a:before{display:none}.v-desktop .hero{grid-template-columns:minmax(0,1fr) 170px}.v-desktop .portrait{width:170px;height:170px}.v-desktop .project-row{grid-template-columns:1fr;gap:6px}.v-desktop .music-page-intro{grid-template-columns:1fr 260px}}@media screen and (max-width:760px){html.v-desktop{--style-picker-offset:12px}html.v-desktop body{padding-bottom:0}.v-desktop .site-header{position:static;flex-wrap:wrap;height:auto;margin:0 calc(50% - 50vw);padding:6px}.v-desktop .wordmark{margin-right:auto}.v-desktop .site-nav{order:3;display:flex;width:100%;max-width:none;gap:3px;margin-right:0}.v-desktop .site-nav a{flex:1 1 0;justify-content:center;height:32px;padding:0 4px;font-size:12px}.v-desktop .contact-address,.v-desktop .service-row{grid-template-columns:1fr;gap:10px}.v-desktop .contact-note{margin-top:24px}}@media screen and (max-width:680px){.v-desktop .music-page-intro,.v-desktop .project-detail{grid-template-columns:1fr}.v-desktop .education-row,.v-desktop .experience-row{grid-template-columns:1fr;gap:8px}.v-desktop .experience-period{justify-self:start}}@media screen and (max-width:600px){.v-desktop :is(.hero,.home-section,.contact-note,.page-intro,.project-detail,.resume-section,.contact-address,.consulting-services,.working-together,.music-page-intro,.track-list,.site-footer,.not-found){padding-left:12px;padding-right:12px}.v-desktop .hero{padding-top:42px}.v-desktop .hero h1{font-size:clamp(42px,13vw,56px)}.v-desktop .portrait{width:110px;height:110px}.v-desktop .about-section>div:first-child:before{content:"File   Edit"}.v-desktop .page-intro h1{font-size:42px}.v-desktop .project-filters button{padding:5px 8px;font-size:12px}.v-desktop .project-filters button[aria-pressed=true]{padding:8px 10px 6px}.v-desktop .track-row{grid-template-columns:26px minmax(0,1fr) 34px}.v-desktop .footer-bottom{flex-wrap:wrap}}@media screen{html.v-notebook{--background:48 60% 98%;--foreground:218 45% 24%;--muted-foreground:218 20% 42%;--border:208 50% 80%;--card:0 0% 100%;--card-foreground:218 45% 24%;--popover:0 0% 100%;--popover-foreground:218 45% 24%;--primary:218 45% 24%;--primary-foreground:0 0% 100%;--secondary:48 50% 93%;--secondary-foreground:218 45% 24%;--muted:48 50% 93%;--accent:352 62% 52%;--accent-foreground:0 0% 100%;--input:208 50% 80%;--ring:352 62% 52%;--radius:0rem;--font-display:var(--font-v-caveat),"Segoe Print","Comic Sans MS",cursive;--font-body:var(--font-v-patrick-hand),"Segoe Print","Comic Sans MS",cursive;--font-mono:var(--font-v-patrick-hand),"Segoe Print","Comic Sans MS",cursive;--nb-line:32px;--nb-rule:rgba(134,192,234,.55);--nb-margin:rgba(226,90,108,.55);--nb-hl:rgba(255,228,64,.65);--nb-tape:rgba(255,248,205,.7);--nb-note-ink:#26324a;--nb-s1:#fff59d;--nb-s2:#ffcdd8;--nb-s3:#bfe6fb;--nb-s4:#cdeccf;--nb-card:#fff;--nb-shadow:0 1px 1px rgba(0,0,0,.08),0 16px 22px -14px rgba(30,30,60,.45);--nb-hand:255px 15px 225px 15px/15px 225px 15px 255px;--nb-squiggle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='10' viewBox='0 0 40 10'%3E%3Cpath d='M0 5 Q 5 0 10 5 T 20 5 T 30 5 T 40 5' fill='none' stroke='%23d1495b' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E")}html.v-notebook.dark{--background:152 22% 15%;--foreground:60 22% 91%;--muted-foreground:80 10% 72%;--border:150 12% 34%;--card:152 20% 18%;--card-foreground:60 22% 91%;--popover:152 20% 18%;--popover-foreground:60 22% 91%;--primary:60 22% 91%;--primary-foreground:152 22% 15%;--secondary:152 18% 20%;--secondary-foreground:60 22% 91%;--muted:152 18% 20%;--accent:48 92% 72%;--accent-foreground:152 22% 12%;--input:150 12% 34%;--ring:48 92% 72%;--nb-hl:hsla(50,87%,73%,.22);--nb-note-ink:#edede3;--nb-s1:#f6e27f;--nb-s2:#f6a6bd;--nb-s3:#8fd3f4;--nb-s4:#a8e0a6;--nb-squiggle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='10' viewBox='0 0 40 10'%3E%3Cpath d='M0 5 Q 5 0 10 5 T 20 5 T 30 5 T 40 5' fill='none' stroke='%23f6e27f' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E")}html.v-notebook body{position:relative;font-size:19px;line-height:var(--nb-line);background-image:linear-gradient(transparent calc(var(--nb-line) - 1px),var(--nb-rule) calc(var(--nb-line) - 1px));background-size:100% var(--nb-line)}html.v-notebook.dark body{background-image:radial-gradient(ellipse 60% 40% at 18% 12%,hsla(0,0%,100%,.07),transparent 70%),radial-gradient(ellipse 50% 35% at 82% 48%,hsla(0,0%,100%,.05),transparent 70%),radial-gradient(ellipse 60% 40% at 35% 88%,hsla(0,0%,100%,.045),transparent 70%);background-size:auto;box-shadow:inset 0 0 0 12px #6e4b2a,inset 0 0 0 15px #4a311b;text-shadow:0 0 1px hsla(0,0%,100%,.3)}.v-notebook h1,.v-notebook h2{font-weight:700}.v-notebook ::selection{background:var(--nb-hl);color:inherit}.v-notebook .site-header{min-height:0;padding:22px 0 14px;border-bottom:0}.v-notebook .wordmark-name{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:0}.v-notebook .site-nav{gap:26px}.v-notebook .site-nav a{padding:4px 2px;font-family:var(--font-display);font-size:24px;font-weight:600}.v-notebook .site-nav a:after{bottom:4px;height:3px;border-radius:2px;background:hsl(var(--accent));transform:rotate(-1.5deg)}.v-notebook .site-nav a:hover{color:hsl(var(--accent))}.v-notebook .site-nav a[aria-current=page]:after{display:none}.v-notebook .site-nav a[aria-current=page]:before{content:"";position:absolute;inset:2px -10px;border:2px solid hsl(var(--accent));border-radius:50% 45% 55% 40%/55% 45% 50% 45%;transform:rotate(-4deg)}.v-notebook .theme-toggle{width:40px;height:40px;border:2px solid hsl(var(--foreground));border-radius:var(--nb-hand)}.v-notebook .theme-toggle:hover{background:var(--nb-hl)}.v-notebook .eyebrow{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:0;text-transform:none;color:hsl(var(--accent))}.v-notebook .tech-list{font-family:var(--font-body);font-size:16px;line-height:1.5;color:hsl(var(--muted-foreground))}.v-notebook .tech-list:before{content:"✎ "}.v-notebook .footer-bottom a,.v-notebook .footer-socials a,.v-notebook .inline-link,.v-notebook .resume-contact a,.v-notebook .text-link{text-decoration:underline wavy hsl(var(--accent));text-decoration-thickness:1.5px;text-underline-offset:6px}.v-notebook .text-link{font-family:var(--font-display);font-size:24px;font-weight:700;line-height:1.3}.v-notebook .inline-link:hover,.v-notebook .text-link:hover{color:hsl(var(--accent))}.v-notebook .button{min-height:48px;padding:4px 24px 6px;font-family:var(--font-display);font-size:25px;font-weight:700;border:2.5px solid hsl(var(--foreground));border-radius:var(--nb-hand);background:transparent;transition:transform .15s,background .15s}.v-notebook .button-outline:focus-visible,.v-notebook .button-outline:hover{background:var(--nb-hl);transform:rotate(-2deg)}.v-notebook .print-button{font-size:21px}.v-notebook .hero{position:relative;grid-template-columns:minmax(0,1fr) 260px;gap:60px;align-items:start;padding:48px 0 70px}.v-notebook .hero h1{font-family:var(--font-display);font-size:clamp(76px,9.4vw,124px);line-height:.95;letter-spacing:-.01em;margin:0 0 18px}.v-notebook .hero-role{display:inline;padding:2px 6px;font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1.4;background:linear-gradient(100deg,transparent 0 1%,var(--nb-hl) 2% 97%,transparent 99%);-webkit-box-decoration-break:clone;box-decoration-break:clone}.v-notebook .hero-description{max-width:620px;margin-top:22px;font-size:20px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .hero-actions{gap:26px;margin-top:30px}.v-notebook .hero-actions:after{content:"← start here!";font-family:var(--font-display);font-size:26px;font-weight:700;color:hsl(var(--accent));transform:rotate(-6deg)}.v-notebook .portrait{width:260px;height:306px;margin-top:14px;padding:12px 12px 50px;border-radius:2px;background:#fff;box-shadow:var(--nb-shadow);transform:rotate(3deg);filter:saturate(.9) contrast(1.03)}.v-notebook .hero:before{content:"";position:absolute;top:48px;right:82px;z-index:2;width:96px;height:28px;background:var(--nb-tape);box-shadow:0 1px 2px rgba(0,0,0,.1);transform:rotate(-5deg)}.v-notebook .hero:after{content:"that's me :)";position:absolute;top:322px;right:0;z-index:2;width:260px;font-family:var(--font-display);font-size:26px;font-weight:700;line-height:1;text-align:center;color:#26324a;text-shadow:none;transform:rotate(3deg)}.v-notebook .resume-section .section-topline h2,.v-notebook .resume-section>h2,.v-notebook .section-heading h2,.v-notebook .section-title{display:inline-block;padding-bottom:12px;font-family:var(--font-display);font-size:54px;line-height:1;letter-spacing:0;background:var(--nb-squiggle) left bottom /40px 10px repeat-x}.v-notebook .home-section{margin-top:64px}.v-notebook .selected-work{margin-top:10px}.v-notebook .section-topline{align-items:flex-end;margin-bottom:32px}.v-notebook .section-topline .section-title{margin:0}.v-notebook .selected-projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:36px;padding:14px 6px 6px;border-top:0}.v-notebook .project-row,.v-notebook .skill-group{position:relative;display:flex;flex-direction:column;gap:6px;padding:36px 24px 24px;color:var(--nb-note-ink);background:var(--nb-s1);border:0;box-shadow:var(--nb-shadow);transform:rotate(-1.6deg);transition:transform .2s}.v-notebook .project-row:nth-child(4n+2),.v-notebook .skill-group:nth-child(4n+2){background:var(--nb-s2);transform:rotate(1.3deg)}.v-notebook .project-row:nth-child(4n+3),.v-notebook .skill-group:nth-child(4n+3){background:var(--nb-s3);transform:rotate(-.6deg)}.v-notebook .project-row:nth-child(4n+4),.v-notebook .skill-group:nth-child(4n+4){background:var(--nb-s4);transform:rotate(.9deg)}.v-notebook .project-row:hover{transform:rotate(0deg) scale(1.03)}.v-notebook .contact-note:after,.v-notebook .project-row:before,.v-notebook .skill-group:before{content:"";position:absolute;top:-13px;left:50%;width:88px;height:26px;margin-left:-44px;background:var(--nb-tape);box-shadow:0 1px 2px rgba(0,0,0,.1);transform:rotate(-3deg)}.v-notebook .project-row .project-context{max-width:none;font-size:16px;line-height:1.3;color:var(--nb-note-ink);opacity:.75}.v-notebook .project-row h3{margin-top:2px;font-family:var(--font-display);font-size:32px;font-weight:700;line-height:1.05}.v-notebook .project-row h3 a{text-decoration:none}.v-notebook .project-row h3 a:hover{text-decoration:underline wavy;text-decoration-thickness:1.5px}.v-notebook .project-row-description{display:flex;flex-direction:column;flex:1}.v-notebook .project-row-description>p{flex:1;font-size:18px;line-height:1.45;color:var(--nb-note-ink)}.v-notebook .project-row .tech-list{margin-top:10px;color:var(--nb-note-ink);opacity:.7}.v-notebook .about-section{grid-template-columns:300px minmax(0,1fr);gap:30px}.v-notebook .about-copy{max-width:640px;font-size:20px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .about-copy p+p{margin-top:var(--nb-line)}.v-notebook .about-copy>.text-link{margin-top:20px}.v-notebook .contact-note{position:relative;display:block;max-width:760px;margin:76px auto 0;padding:18px 36px 30px;border:0;color:#26324a;background:linear-gradient(transparent 76px,#e8505b 76px 78px,transparent 78px),repeating-linear-gradient(transparent 0 31px,#b9d6f0 31px 32px) 0 78px /100% calc(100% - 78px) no-repeat,#fff;box-shadow:var(--nb-shadow);transform:rotate(-.7deg);text-shadow:none}.v-notebook .contact-note h2{height:58px;font-family:var(--font-display);font-size:48px;line-height:58px}.v-notebook .contact-note>div{padding-top:10px}.v-notebook .contact-note p{max-width:none;font-size:20px;line-height:32px;color:#26324a}.v-notebook .contact-note a{color:#26324a}.v-notebook .site-footer{margin-top:60px;padding-top:24px;border-top:2px dashed hsl(var(--foreground)/.35)}.v-notebook .footer-signature{font-family:var(--font-display);font-size:30px;font-weight:700}.v-notebook .footer-signature:before{content:"— ";color:hsl(var(--accent))}.v-notebook .footer-socials a{font-family:var(--font-display);font-size:22px;font-weight:600}.v-notebook .footer-bottom{font-size:15px;border-top:0;color:hsl(var(--muted-foreground))}.v-notebook .page-content{padding-top:40px}.v-notebook .not-found h1,.v-notebook .page-intro h1{font-family:var(--font-display);font-size:clamp(64px,8vw,100px);line-height:1;letter-spacing:0}.v-notebook .page-intro>p:not(.eyebrow){max-width:660px;font-size:21px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .project-toolbar{border-top:0;border-bottom:2px dashed hsl(var(--foreground)/.3)}.v-notebook .project-filters{gap:28px}.v-notebook .project-filters button{padding:14px 4px;font-family:var(--font-display);font-size:25px;font-weight:700}.v-notebook .project-filters button span{font-family:var(--font-body);font-size:15px;color:hsl(var(--accent))}.v-notebook .project-filters button[aria-pressed=true]:after{inset:8px -10px;height:auto;background:none;border:2px solid hsl(var(--accent));border-radius:50% 45% 55% 40%/55% 45% 50% 45%;transform:rotate(-3deg)}.v-notebook .project-count{font-size:17px}.v-notebook .project-detail{grid-template-columns:210px minmax(0,1fr);border-bottom:2px dashed hsl(var(--foreground)/.25)}.v-notebook .project-detail-side .eyebrow{display:inline;font-size:23px;line-height:1.4;color:hsl(var(--foreground));background:linear-gradient(100deg,transparent 0 1%,var(--nb-hl) 2% 97%,transparent 99%);-webkit-box-decoration-break:clone;box-decoration-break:clone}.v-notebook .project-context{font-size:16px}.v-notebook .project-detail h2{font-family:var(--font-display);font-size:44px;line-height:1}.v-notebook .project-detail h2 a{text-decoration:underline wavy hsl(var(--accent));text-decoration-thickness:1.5px;text-underline-offset:8px}.v-notebook .project-detail-main>p:not(.tech-list):not(.project-context){font-size:19px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .project-details-disclosure summary{font-family:var(--font-display);font-size:23px;font-weight:700;color:hsl(var(--accent))}.v-notebook .experience-bullets,.v-notebook .project-details-disclosure ul{font-size:18px;line-height:1.6}.v-notebook .experience-bullets li,.v-notebook .project-details-disclosure li{list-style:"→  "}.v-notebook .experience-bullets li::marker,.v-notebook .project-details-disclosure li::marker{color:hsl(var(--accent))}.v-notebook .resume-intro>.resume-title{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.2}.v-notebook .resume-contact{font-size:17px}.v-notebook .resume-intro>p:last-child{font-size:19px;line-height:var(--nb-line)}.v-notebook .resume-section{margin-bottom:56px}.v-notebook .resume-section .section-topline h2,.v-notebook .resume-section>h2{font-size:48px}.v-notebook .education-row,.v-notebook .experience-row{border-top:2px dashed hsl(var(--foreground)/.25)}.v-notebook .experience-period{font-family:var(--font-display);font-size:22px;font-weight:700;line-height:1.3;color:hsl(var(--accent))}.v-notebook .education-row h3,.v-notebook .experience-row h3{font-family:var(--font-display);font-size:34px;font-weight:700;line-height:1.1}.v-notebook .education-row>div>p,.v-notebook .experience-role{font-size:18px}.v-notebook .experience-bullets{color:hsl(var(--foreground))}.v-notebook .skill-groups{gap:34px;padding-top:24px;border-top:0}.v-notebook .skill-group{gap:4px;padding:30px 22px 22px}.v-notebook .skill-group h3{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.1}.v-notebook .skill-group p:not(.tech-list){margin-top:2px;font-size:17px;line-height:1.45;color:var(--nb-note-ink)}.v-notebook .skill-group .tech-list{color:var(--nb-note-ink);opacity:.75}.v-notebook .resume-projects{gap:30px;border-top:0}.v-notebook .resume-projects h3{font-family:var(--font-display);font-size:30px;font-weight:700}.v-notebook .resume-projects p:not(.tech-list):not(.project-context){font-size:17px;line-height:1.5}.v-notebook .resume-end{font-family:var(--font-display);font-size:26px;font-weight:700}.v-notebook .contact-address,.v-notebook .resume-end{border-top:2px dashed hsl(var(--foreground)/.3);border-bottom:2px dashed hsl(var(--foreground)/.3)}.v-notebook .big-email{font-family:var(--font-display);font-size:clamp(36px,5vw,58px);font-weight:700;letter-spacing:0}.v-notebook .copy-email button{font-size:21px}.v-notebook .contact-address>p{font-size:19px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .consulting-services .section-title{margin-bottom:22px}.v-notebook .service-row{grid-template-columns:300px minmax(0,1fr);border-top:0;padding:18px 0}.v-notebook .service-row h3{display:flex;align-items:flex-start;gap:12px;font-family:var(--font-display);font-size:29px;font-weight:700;line-height:1.1}.v-notebook .service-row h3:before{content:"✓";flex-shrink:0;display:grid;place-items:center;width:26px;height:26px;margin-top:2px;font-size:26px;color:hsl(var(--accent));border:2px solid hsl(var(--foreground));border-radius:4px 7px 5px 8px}.v-notebook .service-row p:not(.tech-list){font-size:19px;line-height:1.55;color:hsl(var(--foreground))}.v-notebook .working-together{margin-top:50px;border-top:2px dashed hsl(var(--foreground)/.3);border-bottom:2px dashed hsl(var(--foreground)/.3)}.v-notebook .working-together h2{font-family:var(--font-display);font-size:42px}.v-notebook .working-together p{font-size:19px;line-height:var(--nb-line);color:hsl(var(--foreground))}.v-notebook .piano-caption{font-family:var(--font-display);font-weight:700;font-size:28px;color:hsl(var(--accent))}.v-notebook .piano{background:hsl(var(--foreground));border-top-width:3px;border:3px solid hsl(var(--foreground));border-top:10px solid hsl(var(--foreground));border-radius:12px 18px 10px 16px;box-shadow:var(--nb-shadow)}.v-notebook .white-key{background:#fffef6;border:2px solid #26324a;border-radius:0 0 6px 4px;color:#26324a}.v-notebook .white-key.is-playing,.v-notebook .white-key:hover{background:#fff176}.v-notebook .black-key{background:#26324a;border:2px solid #26324a;border-radius:0 0 4px 5px}.v-notebook .black-key.is-playing,.v-notebook .black-key:hover{background:#e8505b}.v-notebook .piano-help,.v-notebook .piano-message{font-family:var(--font-body);font-size:15px}.v-notebook .music-platforms{border-top:2px dashed hsl(var(--foreground)/.3);border-bottom:2px dashed hsl(var(--foreground)/.3)}.v-notebook .music-platforms .eyebrow{font-size:24px}.v-notebook .track-row{grid-template-columns:50px 1fr 70px 110px;border-bottom:2px dashed hsl(var(--foreground)/.2)}.v-notebook .project-number{display:grid;place-items:center;width:40px;height:40px;font-family:var(--font-display);font-size:22px;font-weight:700;color:hsl(var(--accent));border:2px solid hsl(var(--accent));border-radius:50% 45% 55% 40%/55% 45% 50% 45%}.v-notebook .track-row h2{font-family:var(--font-display);font-size:38px;line-height:1}.v-notebook .track-row h2 a{text-decoration:none}.v-notebook .track-row h2 a:hover{text-decoration:underline wavy hsl(var(--accent));text-decoration-thickness:1.5px}.v-notebook .track-row p{font-size:17px}.v-notebook .track-year{font-family:var(--font-body);font-size:18px}.v-notebook .track-play{font-family:var(--font-display);font-size:24px;font-weight:700}.v-notebook .music-footnote{font-family:var(--font-display);font-style:normal;font-size:38px;font-weight:700;transform:rotate(-2deg)}html.v-notebook.dark .project-row,html.v-notebook.dark .skill-group{background:transparent;border:2px solid hsla(0,0%,100%,.62);border-radius:var(--nb-hand);box-shadow:none}html.v-notebook.dark .contact-note:after,html.v-notebook.dark .project-row:before,html.v-notebook.dark .skill-group:before{display:none}html.v-notebook.dark .project-row h3,html.v-notebook.dark .skill-group h3{color:var(--nb-s1)}html.v-notebook.dark .project-row:nth-child(4n+2) h3,html.v-notebook.dark .skill-group:nth-child(4n+2) h3{color:var(--nb-s2)}html.v-notebook.dark .project-row:nth-child(4n+3) h3,html.v-notebook.dark .skill-group:nth-child(4n+3) h3{color:var(--nb-s3)}html.v-notebook.dark .project-row:nth-child(4n+4) h3,html.v-notebook.dark .skill-group:nth-child(4n+4) h3{color:var(--nb-s4)}html.v-notebook.dark .project-row h3 a{color:inherit}html.v-notebook.dark .contact-note{color:hsl(var(--foreground));background:transparent;border:2px solid hsla(0,0%,100%,.62);border-radius:var(--nb-hand);box-shadow:none;text-shadow:inherit}html.v-notebook.dark .contact-note h2{color:var(--nb-s1);border-bottom:2px solid rgba(246,166,189,.7)}html.v-notebook.dark .contact-note a,html.v-notebook.dark .contact-note p,html.v-notebook.dark .hero-role{color:hsl(var(--foreground))}html.v-notebook.dark .button{border-color:hsla(0,0%,100%,.8)}html.v-notebook.dark .button-outline:hover{background:hsla(0,0%,100%,.1)}html.v-notebook.dark .piano{background:#142019;border-color:hsla(0,0%,100%,.7)}}@media screen and (min-width:1180px){html.v-notebook:not(.dark) body:before{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 560px);width:2px;background:var(--nb-margin);pointer-events:none}html.v-notebook:not(.dark) body:after{content:"";position:fixed;top:0;bottom:0;left:max(6px,calc(50% - 620px));width:30px;background:radial-gradient(circle at 50% 50%,#dad4c8 0 9px,#c2bbad 9.5px 10.5px,transparent 11px) 50% /30px 33.33% repeat-y;pointer-events:none}}@media screen and (max-width:1000px){.v-notebook .hero{grid-template-columns:minmax(0,1fr) 220px;gap:40px}.v-notebook .portrait{width:220px;height:262px;padding-bottom:44px}.v-notebook .hero:before{right:62px}.v-notebook .hero:after{top:280px;width:220px}}@media screen and (max-width:850px){.v-notebook .about-section,.v-notebook .service-row{grid-template-columns:1fr;gap:10px}.v-notebook .hero:after{display:none}}@media screen and (max-width:680px){.v-notebook .site-nav{gap:14px}.v-notebook .site-nav a{font-size:21px}}@media screen and (max-width:600px){.v-notebook .hero{padding:30px 0 50px;gap:26px}.v-notebook .hero:before{display:none}.v-notebook .hero h1{font-size:clamp(64px,19vw,84px)}.v-notebook .hero-role{font-size:25px}.v-notebook .hero-description{font-size:18px}.v-notebook .hero-actions:after{display:none}.v-notebook .portrait{width:140px;height:168px;padding:8px 8px 28px}.v-notebook .section-title{font-size:46px}.v-notebook .contact-note{padding:14px 22px 26px}.v-notebook .contact-note h2{font-size:40px}.v-notebook .page-intro h1{font-size:64px}.v-notebook .project-filters{gap:18px}.v-notebook .project-filters button{font-size:21px}.v-notebook .track-row{grid-template-columns:44px minmax(0,1fr) 40px}.v-notebook .track-row h2{font-size:32px}}@media print{html[class*=v-],html[class*=v-].dark{--background:0 0% 100%;--foreground:0 0% 0%;--muted-foreground:0 0% 25%;--border:0 0% 75%;--card:0 0% 100%;--card-foreground:0 0% 0%;--popover:0 0% 100%;--popover-foreground:0 0% 0%;--primary:0 0% 0%;--primary-foreground:0 0% 100%;--secondary:0 0% 95%;--secondary-foreground:0 0% 0%;--muted:0 0% 95%;--accent:0 0% 0%;--accent-foreground:0 0% 100%;--input:0 0% 75%;--ring:0 0% 0%;--font-display:Georgia,"Times New Roman",serif;--font-body:"Segoe UI",-apple-system,BlinkMacSystemFont,Arial,sans-serif;--font-mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace}html[class*=v-] body{background-image:none!important;background:#fff!important;line-height:1.4;font-size:10pt;color:#000}html[class*=v-] h1,html[class*=v-] h2{color:hsl(var(--foreground));-webkit-text-fill-color:currentColor!important;background:none!important;background-image:none!important;text-transform:none!important;font-style:normal!important;font-weight:600!important;letter-spacing:-1px!important;text-shadow:none!important;filter:none!important;opacity:1!important}html[class*=v-] .contact-note h2:after,html[class*=v-] .contact-note h2:before,html[class*=v-] .eyebrow:before,html[class*=v-] .hero h1:after,html[class*=v-] .hero h1:before,html[class*=v-] .not-found h1:before,html[class*=v-] .page-intro h1:before,html[class*=v-] .project-details-disclosure summary:before,html[class*=v-] .resume-section>h2:before,html[class*=v-] .section-title:after,html[class*=v-] .section-title:before,html[class*=v-] .wordmark-name:after,html[class*=v-] .wordmark-name:before{content:normal!important;display:none}html[class*=v-] .portrait{filter:grayscale(1)!important;box-shadow:none!important;outline:none!important;border:1px solid #999!important;border-radius:0!important;clip-path:none!important;width:90px!important;height:90px!important;opacity:1!important;padding:0!important;background:none!important;background-image:none!important}html[class*=v-] .button,html[class*=v-] .button-dark,html[class*=v-] .button-outline{box-shadow:none!important;transform:none!important;filter:none!important;clip-path:none!important;background:transparent!important;background-image:none!important;color:hsl(var(--foreground))!important;border:1px solid hsl(var(--border))!important;text-shadow:none!important}html[class*=v-] .contact-note,html[class*=v-] .project-detail,html[class*=v-] .project-row,html[class*=v-] .service-row,html[class*=v-] .track-row{background:transparent!important;background-image:none!important;box-shadow:none!important;border-radius:0!important}html[class*=v-] .big-email,html[class*=v-] .hero-role,html[class*=v-] .music-footnote,html[class*=v-] .wordmark-name{background:none!important;background-image:none!important;-webkit-text-fill-color:currentColor!important;color:hsl(var(--foreground))!important;text-shadow:none!important;filter:none!important}html[class*=v-] [data-variant-edit]{outline:none!important}html[class*=v-] [data-variant-typed]{animation:none!important;clip-path:none!important}.variant-caret{display:none!important}}