:root{--color-text: #111;--color-text-secondary: #444;--color-background: #fff;--color-accent: #0077b6;--color-accent-hover: #005082;--color-accent-active: #00a8e8;--color-border: #ddd;--font-sans: "Helvetica Neue", "Arial", sans-serif;--max-width: 680px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:16px;line-height:1.7;color:var(--color-text);background:var(--color-background);margin:0;padding:0;min-height:100vh;display:flex;flex-direction:column}main{flex:1}h1{font-family:var(--font-sans);font-size:2.25rem;font-weight:700;letter-spacing:-.03em;margin-bottom:.75rem;line-height:1.1}h2{font-family:var(--font-sans);font-size:1.25rem;font-weight:600;margin-top:2.5rem;margin-bottom:.75rem;color:var(--color-text)}h3{font-family:var(--font-sans);font-size:1rem;font-weight:600;margin-top:2rem;margin-bottom:.5rem;color:var(--color-text)}h4{font-family:var(--font-sans);font-size:.9rem;font-weight:600;margin-top:1rem;margin-bottom:.35rem;color:var(--color-text);line-height:1.3}p{margin-bottom:1rem;color:var(--color-text-secondary)}strong{font-weight:600;color:var(--color-text)}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-hover)}a:active{color:var(--color-accent-active)}a:visited{color:var(--color-accent)}.hero-banner{position:relative;width:100%;height:180px;background-image:url(/images/hero-home.jpg);background-size:cover;background-position:center}.hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,#ffffff4d,#fff)}.site-header{background:#fffffff2;backdrop-filter:blur(8px);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--color-border)}.site-header nav{max-width:var(--max-width);margin:0 auto;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:flex-start}.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:.5rem;margin-right:1rem}.hamburger{display:block;width:20px;height:2px;background:var(--color-text);position:relative;transition:background .2s ease}.hamburger:before,.hamburger:after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--color-text);transition:transform .2s ease}.hamburger:before{top:-6px}.hamburger:after{top:6px}.menu-toggle[aria-expanded=true] .hamburger{background:transparent}.menu-toggle[aria-expanded=true] .hamburger:before{transform:rotate(45deg);top:0}.menu-toggle[aria-expanded=true] .hamburger:after{transform:rotate(-45deg);top:0}.nav-links{display:flex;gap:2rem}.nav-links a{font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;padding-bottom:2px;border-bottom:2px solid transparent}.nav-links a:hover{text-decoration:none;border-bottom-color:var(--color-accent)}.nav-links a.active{color:var(--color-text);pointer-events:none;border-bottom-color:var(--color-text)}@media(max-width:600px){.menu-toggle{display:block}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;gap:0;border-bottom:1px solid var(--color-border);box-shadow:0 4px 12px #0000001a}.nav-links.open{display:flex}.nav-links a{padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.nav-links a:last-child{border-bottom:none}.nav-links a:hover,.nav-links a.active{border-bottom-color:var(--color-border);background:#f9f9f9}}.content-wrapper{max-width:var(--max-width);margin:0 auto;padding:1.5rem 1.5rem 3rem}.subheader{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.5rem;gap:1rem}@media(max-width:500px){.subheader{flex-direction:column;align-items:flex-start;gap:.5rem}}.breadcrumbs{font-size:.8rem;color:var(--color-text-secondary);text-transform:lowercase}.breadcrumbs a{color:var(--color-accent)}.breadcrumbs a:hover{color:var(--color-accent-hover)}.breadcrumbs .separator{margin:0 .5rem;color:var(--color-border)}.breadcrumbs .current{color:var(--color-text)}.action-link{font-size:.8rem;white-space:nowrap}.intro-with-photo{display:flex;align-items:flex-start;gap:1.5rem;margin-bottom:1.5rem}.headshot{width:100px;height:100px;border-radius:50%;object-fit:cover;flex-shrink:0}.intro-text h1{margin-bottom:.5rem}.intro-text .intro{margin-bottom:0}@media(max-width:500px){.intro-with-photo{flex-direction:column;align-items:center;text-align:center}.headshot{width:120px;height:120px}}.intro-with-photo-wrap{margin-bottom:1.5rem}.headshot-float{float:left;width:100px;height:100px;border-radius:50%;object-fit:cover;margin-right:1.25rem;margin-bottom:.5rem;shape-outside:circle(50%)}.intro-with-photo-wrap h1{margin-bottom:.5rem}.intro-with-photo-wrap .intro{margin-bottom:0}.intro-with-photo-wrap:after{content:"";display:table;clear:both}@media(max-width:500px){.headshot-float{float:none;display:block;margin:0 auto 1rem;width:120px;height:120px}.intro-with-photo-wrap{text-align:center}}.intro-with-polaroid{display:flex;gap:2rem;align-items:flex-start;margin-bottom:1rem}.intro-with-polaroid .intro{flex:1;margin-bottom:0}.polaroid{flex-shrink:0;background:#fff;padding:.75rem .75rem 2.5rem;box-shadow:0 4px 12px #00000026;transform:rotate(2deg);max-width:180px}.polaroid img{width:100%;display:block}.polaroid-caption{display:block;text-align:center;font-size:.75rem;color:var(--color-text-secondary);margin-top:.5rem;font-style:italic}@media(max-width:600px){.intro-with-polaroid{flex-direction:column;align-items:center}.intro-with-polaroid .intro{text-align:center}.polaroid{transform:rotate(1deg);max-width:200px}}ul{list-style:none;margin-top:1.5rem}li{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border)}li:last-child{border-bottom:none}li p{margin-top:.5rem;margin-bottom:0;font-size:.95rem}.portfolio-title{font-size:1.1rem;font-weight:600;color:var(--color-accent);border-bottom:1px solid transparent;transition:border-color .2s ease}.portfolio-title:hover{text-decoration:none;border-bottom:1px solid var(--color-accent)}.portfolio-company{font-weight:400;color:var(--color-text-secondary)}.intro{font-size:1.2rem;line-height:1.6;color:var(--color-text-secondary);margin-bottom:2rem}article{margin-top:1rem}article>p:first-of-type{font-size:1.1rem;color:var(--color-text);line-height:1.7}article ul{margin-top:1rem;margin-bottom:1.5rem}article li{margin-bottom:.5rem;padding-bottom:0;border-bottom:none;padding-left:1rem;position:relative}article li:before{content:"—";position:absolute;left:0;color:var(--color-text-secondary)}hr{border:none;border-top:1px solid var(--color-border);margin:2.5rem 0}.meta{font-size:.85rem;color:var(--color-text-secondary);margin-bottom:1.5rem}ul.variants{margin-top:1rem}ul.variants li{margin-bottom:1rem;padding-bottom:1rem}ul.variants li:last-child{border-bottom:none}.page-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.75rem}.page-header h1{margin-bottom:0}.see-all{font-size:.85rem;white-space:nowrap}.resume-entry{margin-bottom:1.5rem}.resume-entry h3{margin-top:0;margin-bottom:0;line-height:1.3}.resume-entry h3 .company{color:var(--color-text)}.resume-entry h3 .company:before{content:", "}.resume-entry .meta{margin-top:.1rem;margin-bottom:.5rem;line-height:1.3}.resume-entry p{margin-bottom:.5rem;line-height:1.4}.resume-entry>h4,.resume-entry>ul{margin-left:1.5rem}ul.resume-list{margin-top:.5rem;margin-bottom:0}ul.resume-list li{margin-bottom:.4rem;padding-bottom:0;border-bottom:none;padding-left:1rem;position:relative;line-height:1.4}ul.resume-list li:before{content:"•";position:absolute;left:0;color:var(--color-text-secondary)}ul.resume-list li:last-child{margin-bottom:0}ul.resume-list li h4{margin-top:0;margin-bottom:0}ul.resume-list li .meta{margin-top:.1rem}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-top:1rem;margin-bottom:1rem}@media(max-width:600px){.skills-grid{grid-template-columns:1fr}}.skill-category h3{margin-top:0;margin-bottom:.15rem;font-size:.95rem;line-height:1.3}.skill-category p{font-size:.9rem;margin-bottom:0;line-height:1.4}.two-column-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem 1.5rem;margin-top:1rem}.two-column-grid .resume-entry{margin-bottom:0}.two-column-grid .resume-entry h3{font-size:.95rem}@media(max-width:600px){.two-column-grid{grid-template-columns:1fr}}.page-nav{display:block;text-align:center;padding:1rem 1.5rem;margin-bottom:1.5rem;background-color:#fffbeb;border:1px solid #e5e5e5;border-radius:4px;font-size:.8rem;text-transform:lowercase;color:var(--color-text-secondary)}.return-to-top{display:block;text-align:right;font-size:.8rem;margin-top:1rem;margin-bottom:2rem;padding-top:1rem;border-top:1px solid var(--color-border)}form{margin-top:1.5rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-size:.85rem;font-weight:500;margin-bottom:.35rem;color:var(--color-text)}.form-group input,.form-group textarea{width:100%;padding:.6rem .75rem;font-family:var(--font-sans);font-size:1rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-background);color:var(--color-text);transition:border-color .2s ease}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-accent)}.form-group textarea{resize:vertical;min-height:120px}button[type=submit]{display:inline-block;padding:.75rem 1.5rem;font-family:var(--font-sans);font-size:.9rem;font-weight:500;color:#fff;background-color:var(--color-accent);border:none;border-radius:4px;cursor:pointer;transition:background-color .2s ease}button[type=submit]:hover{background-color:var(--color-accent-hover)}.hidden{display:none}.timeline{position:relative;margin:2rem 0 3rem;padding-left:2rem}.timeline:before{content:"";position:absolute;left:6px;top:0;bottom:0;width:2px;background-color:var(--color-border)}.timeline-item{position:relative;margin-bottom:2rem}.timeline-item:last-child{margin-bottom:0}.timeline-marker{position:absolute;left:-2rem;top:.35rem;width:14px;height:14px;border-radius:50%;background-color:var(--color-background);border:2px solid var(--color-border)}.timeline-marker.highlight{background-color:var(--color-accent);border-color:var(--color-accent)}.timeline-content{padding-left:.5rem}.timeline-date{display:inline-block;font-size:.75rem;font-weight:600;color:var(--color-accent);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.timeline-content h3{font-size:1rem;font-weight:600;margin:0 0 .35rem;line-height:1.3}.timeline-content p{font-size:.9rem;line-height:1.5;margin:0;color:var(--color-text-secondary)}.callout{padding:1rem 1.5rem;margin-top:2.5rem;background-color:#fffbeb;border:1px solid #e5e5e5;border-radius:4px;font-size:.9rem}.portfolio-hero{width:calc(100% + 3rem);margin-left:-1.5rem;margin-top:-1.5rem;margin-bottom:1.5rem;height:220px;background-size:cover;background-position:center;border-bottom:1px solid var(--color-border)}.portfolio-gallery{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--color-border)}.portfolio-gallery h2{margin-top:0;margin-bottom:1rem}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}@media(max-width:500px){.gallery-grid{grid-template-columns:1fr}}.gallery-item{position:relative;cursor:pointer;overflow:hidden;border-radius:4px;border:1px solid var(--color-border);background:#f9f9f9}.gallery-item img{width:100%;height:150px;object-fit:cover;display:block;transition:transform .2s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.gallery-item:hover img{transform:scale(1.05)}.gallery-item-caption{font-size:.75rem;color:var(--color-text-secondary);padding:.5rem;text-align:center;background:#fff}.lightbox{display:none;position:fixed;inset:0;background:#000000e6;z-index:1000;justify-content:center;align-items:center;padding:2rem}.lightbox.active{display:flex}.lightbox-content{position:relative;max-width:90vw;max-height:90vh}.lightbox-content img{max-width:100%;max-height:85vh;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}.lightbox-caption{color:#fff;text-align:center;margin-top:1rem;font-size:.9rem}.lightbox-close{position:absolute;top:-2.5rem;right:0;background:none;border:none;color:#fff;font-size:2rem;cursor:pointer;line-height:1;padding:.5rem}.lightbox-close:hover{color:var(--color-accent)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1a;border:none;color:#fff;font-size:2rem;cursor:pointer;padding:1rem .75rem;line-height:1}.lightbox-nav:hover{background:#fff3}.lightbox-prev{left:-4rem}.lightbox-next{right:-4rem}@media(max-width:768px){.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}}.gallery-item,.lightbox-content{-webkit-touch-callout:none}.portfolio-download{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border);font-size:.9rem}.portfolio-list{margin-top:1.5rem}.portfolio-list-item{display:flex;gap:1.25rem;margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border)}.portfolio-list-item:last-child{border-bottom:none}.portfolio-thumbnail{flex-shrink:0;width:140px;height:90px;overflow:hidden;border-radius:4px;border:1px solid var(--color-border)}.portfolio-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.portfolio-thumbnail:hover img{transform:scale(1.05)}.portfolio-list-content{flex:1;min-width:0}.portfolio-list-content p{margin-top:.35rem;margin-bottom:0;font-size:.9rem;line-height:1.5}@media(max-width:500px){.portfolio-list-item{flex-direction:column;gap:.75rem}.portfolio-thumbnail{width:100%;height:160px}}.site-footer{background:#f9f9f9;border-top:1px solid var(--color-border);padding:2rem 1.5rem;margin-top:3rem}.footer-content{max-width:var(--max-width);margin:0 auto;text-align:center}.footer-links{margin-bottom:1rem}.footer-links a{font-size:.85rem;font-weight:500}.footer-separator{margin:0 .75rem;color:var(--color-text-secondary)}.footer-credit{font-size:.8rem;color:var(--color-text-secondary)}.footer-credit p{margin-bottom:.5rem;font-size:.8rem}.footer-credit p:last-child{margin-bottom:0}.footer-credit a{color:var(--color-text-secondary);text-decoration:underline}.footer-credit a:hover{color:var(--color-accent)}.variant-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:1rem}@media(max-width:600px){.variant-cards{grid-template-columns:1fr}}.variant-card{display:block;padding:1.25rem;border:1px solid var(--color-border);border-radius:6px;background:#fff;transition:border-color .2s ease,box-shadow .2s ease}.variant-card:hover{border-color:var(--color-accent);box-shadow:0 2px 8px #00000014;text-decoration:none}.variant-card h3{margin:0 0 .5rem;font-size:1rem;color:var(--color-text)}.variant-card p{font-size:.9rem;margin-bottom:.75rem;color:var(--color-text-secondary)}.variant-highlights{margin:0;padding:0;list-style:none}.variant-highlights li{font-size:.8rem;color:var(--color-accent);margin-bottom:.25rem;padding-bottom:0;border-bottom:none;padding-left:1rem;position:relative}.variant-highlights li:before{content:"→";position:absolute;left:0;color:var(--color-accent)}.variant-highlights li:last-child{margin-bottom:0}.highlight-box{background:#f8fafc;border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:4px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem}.highlight-box h3{margin:0 0 .75rem;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text)}.highlight-box ul{margin:0;padding:0;list-style:none}.highlight-box li{font-size:.9rem;line-height:1.5;margin-bottom:.75rem;padding-bottom:0;border-bottom:none;padding-left:0;color:var(--color-text-secondary)}.highlight-box li:last-child{margin-bottom:0}.highlight-box li strong{color:var(--color-text)}.arrow-links{margin-top:2rem}.cta-buttons{display:flex;gap:1rem;margin-top:2.5rem}.btn{display:inline-block;padding:.75rem 1.5rem;font-size:.9rem;font-weight:500;border-radius:4px;text-align:center;transition:all .2s ease}.btn-primary{background-color:var(--color-accent);color:#fff;border:1px solid var(--color-accent)}.btn-primary:hover{background-color:var(--color-accent-hover);border-color:var(--color-accent-hover);color:#fff;text-decoration:none}.btn-secondary{background-color:#fff;color:var(--color-accent);border:1px solid var(--color-border)}.btn-secondary:hover{border-color:var(--color-accent);text-decoration:none}@media(max-width:500px){.cta-buttons{flex-direction:column}.btn{width:100%}}
