:root{color:#111;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--color-bg:#f0f0f0;--color-text:#111;--color-muted:#5f5f5f;--color-border:#e6e2dc;--color-brown:#8b5e3c;--color-brown-dark:#6e4b2a;--color-blue:#3a5f8a;--color-blue-light:#5c7fa3;--color-blue-bg:#f4f7fb;--page-bg:var(--color-bg);--panel-bg:#fff;--panel-border:var(--color-border);--dark-bg:#111;--dark-panel:#1c1c1c;--text-main:var(--color-text);--text-soft:var(--color-muted);--text-inverse:var(--color-bg);--accent:var(--color-blue);--accent-strong:var(--color-brown);--shadow:0 10px 30px #1111110a;--font-heading:clamp(2.8rem, 4vw, 3.4rem);--font-subheading:clamp(1.4rem, 2vw, 1.7rem);--font-body:1rem;background:#f0f0f0;font-family:Inter,Helvetica Neue,Helvetica,Arial,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--color-bg);min-width:320px;color:var(--text-main);margin:0;font-family:Inter,Helvetica Neue,Helvetica,Arial,system-ui,sans-serif}a,button,input,textarea{font:inherit}button{cursor:pointer;border:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}#app{min-height:100vh}.portfolio-shell{background:var(--page-bg);position:relative;overflow:hidden}.top-progress{background:var(--color-blue);z-index:30;width:0;max-width:100vw;height:4px;transition:width .12s ease-out;position:fixed;inset:0 auto auto 0}.hero-section{background:var(--color-bg);border-bottom:1px solid var(--color-border);align-items:stretch;min-height:100vh;padding:0;display:flex;position:relative}.hero-pattern{pointer-events:none;background:radial-gradient(#11111114 1px,#0000 1.5px) 0 0/24px 24px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000008c,#0000 88%);mask-image:linear-gradient(90deg,#0000008c,#0000 88%)}.hero-copy{z-index:1;text-align:center;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:860px;min-height:100vh;margin:0 auto;padding:4rem clamp(1.5rem,4vw,4rem) 3rem;display:flex;position:relative}.eyebrow{color:var(--text-soft);letter-spacing:.34em;text-transform:uppercase;margin:0 0 1rem;font-size:.92rem}.hero-name,.hero-subtitle,.section-heading h2,.journey-intro h3,.skills-block h3,.project-group-header h3,.contact-heading h2,.timeline-company h4,.project-card h4,.cert-card h4,.education-card h3,.education-courses h4{font-family:Inter,Helvetica Neue,Helvetica,Arial,system-ui,sans-serif}.hero-name{font-size:var(--font-heading);letter-spacing:.02em;color:var(--color-text);margin:0;line-height:.92}.hero-subtitle{font-size:var(--font-heading);letter-spacing:.08em;color:#fefae0b3;margin:.25rem 0 1rem;font-weight:300}.hero-divider{background:var(--color-border);width:12rem;height:2px;margin:1.5rem 0}.hero-role{max-width:34rem;font-size:var(--font-subheading);color:var(--text-soft);margin:0 0 1.35rem;font-weight:500}.hero-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.65rem;width:min(100%,24rem);margin-inline:auto;display:flex}.social-link-shell{display:inline-flex;position:relative}.social-link-shell.has-preview{z-index:2}.hero-section-nav{margin-top:1.5rem;flex-wrap:wrap;justify-content:center;gap:.8rem;width:min(100%,32rem);margin-inline:auto;display:flex}.section-jump{border:1px solid var(--color-border);color:var(--color-text);font-size:var(--font-body);background:0 0;border-radius:999px;align-items:center;gap:.55rem;padding:.7rem 1rem;font-weight:600;transition:color .24s,border-color .24s,background .24s;display:inline-flex}.section-jump:hover{background:var(--color-blue-bg);border-color:var(--color-blue);color:var(--color-blue)}.section-jump-icon{background:#f5f5f5;border-radius:999px;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;display:inline-flex}.icon-button,.pill-button{border:1px solid var(--color-border);height:2.55rem;color:var(--color-text);background:#fff;border-radius:6px;transition:color .24s,background .24s,border-color .24s}.icon-button{place-items:center;width:2.55rem;font-weight:700;display:inline-grid}.social-preview{opacity:0;pointer-events:none;background:linear-gradient(135deg,#fffffffa,#f4f7fbfa);border:1px solid #3a5f8a38;border-radius:.9rem;width:16rem;padding:.9rem 1rem;transition:opacity .18s,transform .18s;position:absolute;bottom:calc(100% + .8rem);left:50%;transform:translate(-50%,.4rem);box-shadow:0 16px 40px #1111111f}.social-link-shell.has-preview:hover .social-preview,.social-link-shell.has-preview:focus-within .social-preview{opacity:1;transform:translate(-50%)}.social-preview-eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--color-blue);font-size:.72rem;font-weight:800}.social-preview-handle{color:var(--color-text);margin-top:.35rem;font-size:1rem;font-weight:800}.social-preview-copy{color:var(--text-soft);margin:.45rem 0 0;font-size:.9rem;line-height:1.45}.social-preview-tags{flex-wrap:wrap;gap:.4rem;margin-top:.7rem;display:flex}.social-preview-tags span{background:var(--color-blue-bg);color:var(--color-blue);border-radius:999px;align-items:center;padding:.28rem .55rem;font-size:.78rem;font-weight:700;display:inline-flex}.social-icon{width:1.15rem;height:1.15rem}.social-wordmark{font-size:var(--font-body);font-weight:800;line-height:1}.indeed-wordmark{color:#2557a7;letter-spacing:-.08em}.icon-button-disabled{opacity:.58;cursor:not-allowed}.pill-button{background:var(--color-brown);border-color:var(--color-brown);color:var(--color-bg);padding:0 1.1rem;font-weight:700}.icon-button:hover,.submit-button:hover{color:var(--color-blue);border-color:var(--color-blue);background:var(--color-blue-bg)}.pill-button:hover{background:var(--color-brown-dark);border-color:var(--color-brown-dark);color:var(--color-bg)}.scroll-cue{color:var(--text-soft);background:0 0;align-items:center;gap:.5rem;margin-top:2.2rem;padding:0;display:inline-flex}.scroll-arrow{font-size:var(--font-body)}main{position:relative}.content-section{padding:clamp(4.5rem,8vw,7rem) 1.5rem;position:relative}.about-section{align-items:flex-start;min-height:calc(100vh - 1.5rem);padding-top:clamp(1rem,2vw,1.5rem);padding-bottom:clamp(.75rem,2vw,1.25rem);display:flex}.about-section .section-inner{width:min(1180px,100%)}.about-section .section-heading{margin-bottom:1rem}.about-section .section-heading p{max-width:72rem}.section-light{background:var(--page-bg)}.section-alt{background:var(--color-bg);border-top:1px solid var(--color-border)}#skills.content-section{min-height:100vh;padding-top:clamp(1rem,2vw,1.4rem);padding-bottom:clamp(.7rem,1.6vw,1rem)}#skills .section-heading{margin-bottom:1.2rem}#projects.content-section{padding-top:clamp(1rem,2vw,1.4rem)}.section-inner{width:min(1120px,100%);margin:0 auto}.section-heading{align-items:flex-start;gap:.9rem;margin-bottom:2.1rem;display:flex}.section-marker{color:var(--accent);font-size:var(--font-body);margin-top:.55rem}.section-heading h2{font-size:var(--font-heading);letter-spacing:-.03em;color:var(--color-brown);margin:0;line-height:.95}.section-heading p{max-width:62rem;color:var(--text-soft);font-size:var(--font-body);margin:.7rem 0 0;line-height:1.55}.section-kicker{max-width:58rem;font-size:var(--font-subheading);letter-spacing:0;color:var(--text-soft);text-align:center;margin:0 auto 1.2rem;font-style:italic;line-height:1.35}.journey-block{gap:.85rem;display:grid}.journey-intro h3,.skills-block h3,.project-group-header h3{font-size:var(--font-subheading);color:var(--color-text);margin:0 0 .6em}.journey-intro p,.project-group-header p{color:var(--text-soft);font-size:var(--font-body);margin:0;line-height:1.45}.journey-summary{max-width:68rem}.journey-timeline{gap:.65rem;display:grid;position:relative}.journey-timeline:before{content:"";background:var(--color-border);width:2px;position:absolute;top:.2rem;bottom:.2rem;left:5.1rem}.journey-card{grid-template-columns:4rem 2.2rem minmax(0,1fr);align-items:start;gap:.95rem;display:grid;position:relative}.journey-year{z-index:1;width:100%;color:var(--color-text);text-align:right;padding-top:.95rem;font-size:.92rem;font-weight:700;position:relative}.journey-node{z-index:1;margin-top:1.05rem;background:var(--color-brown);border:4px solid var(--color-bg);border-radius:999px;width:1.4rem;height:1.4rem;margin-inline:auto;position:relative;box-shadow:0 0 0 1px #8b5e3c29}.journey-card-shell{border:1px solid var(--color-border);min-width:0;box-shadow:none;background:#fff;border-radius:1rem;padding:.9rem 1rem}.journey-toggle{text-align:left;cursor:pointer;background:0 0;width:100%;padding:0;transition:color .24s}.journey-toggle:hover h4,.journey-toggle:hover .journey-role{color:var(--color-blue)}.journey-card-top{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.3rem;display:flex}.journey-kind{background:var(--color-blue-bg);color:var(--color-blue);border-radius:999px;align-items:center;padding:.2rem .58rem;font-size:.85rem;font-weight:700;display:inline-flex}.journey-date{color:#606c38;font-size:.86rem;font-weight:700}.journey-card h4,.project-card h4,.cert-card h4{font-size:var(--font-subheading);letter-spacing:-.03em;margin:0;line-height:1.05}.journey-role{color:#283618;margin:.12rem 0 0;font-size:.92rem;font-weight:700}.journey-meta{color:var(--text-soft);margin:.28rem 0 0;font-size:.92rem;line-height:1.34}.journey-details{border-top:1px solid #606c3829;margin-top:.55rem;padding-top:.65rem}.journey-points{color:#4c5b2b;margin:0;padding-left:1.2rem;font-size:.9rem;line-height:1.34}.journey-points li+li{margin-top:.28rem}.journey-education-footer{gap:.8rem;margin-top:.9rem;display:grid}.journey-courses{flex-wrap:wrap;gap:.55rem;display:flex}.course-pill{color:#283618;background:#606c381f;border-radius:999px;align-items:center;padding:.34rem .68rem;font-size:.9rem;display:inline-flex}.skills-block+.skills-block{margin-top:1rem}.skill-cloud{flex-wrap:wrap;gap:.42rem;display:flex}.skill-pill{border:1px solid var(--color-border);color:var(--color-text);background:#fff;border-radius:.45rem;align-items:center;gap:.6rem;padding:.46rem .72rem;font-size:.96rem;line-height:1;transition:border-color .24s,color .24s;display:inline-flex}.skill-pill:hover{border-color:var(--color-blue);color:var(--color-blue)}.skill-mark,.tech-tag-mark{min-width:1.5rem;height:1.5rem;font-size:var(--font-body);letter-spacing:-.02em;border:1px solid #0000;border-radius:.38rem;justify-content:center;align-items:center;padding:0 .3rem;font-weight:800;line-height:1;display:inline-flex}.skill-icon-image{object-fit:contain;width:1rem;height:1rem;display:block}.course-list{color:#4c5b2b;margin:0;padding-left:1.2rem;line-height:1.6}.course-list li{font-size:var(--font-body)}.transcript-button{color:var(--color-blue);font-size:var(--font-body);border:1px solid var(--color-blue);background:0 0;border-radius:6px;justify-content:center;align-self:flex-start;align-items:center;margin-top:1.4rem;padding:.8rem 1.15rem;font-weight:600;transition:background .24s,color .24s,border-color .24s;display:inline-flex}.transcript-button:hover{background:var(--color-blue-bg);color:var(--color-blue)}.project-group+.project-group{margin-top:2.8rem}.project-group-header{gap:.45rem;margin-bottom:1rem;display:grid}.project-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;display:grid}.project-card{border:1px solid var(--color-border);min-height:22rem;box-shadow:none;background:#fff;border-radius:12px;transition:border-color .24s;position:relative;overflow:hidden}.project-card:hover{border-color:var(--color-blue)}.project-overlay{display:none}.project-content{z-index:1;height:100%;color:var(--color-text);grid-template-rows:5.4rem 8.2rem 5.4rem auto;padding:1.1rem;display:grid;position:relative}.project-card.expanded .project-content{grid-template-rows:5.4rem auto 5.4rem auto}.project-title-row,.project-description-row,.project-tags-row{min-width:0;overflow:hidden}.project-title-row{align-items:flex-start;display:flex}.project-title-row h4{width:100%}.project-description-row{padding-top:.6rem;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;align-content:start;gap:.45rem;padding-inline:0;display:grid}.project-description-text{font-size:var(--font-body);color:var(--text-soft);-webkit-line-clamp:4;-webkit-box-orient:vertical;margin:0;line-height:1.45;display:-webkit-box;overflow:hidden}.project-card.expanded .project-description-text{display:block;overflow:visible}.project-description-hint{color:var(--color-blue);font-size:.9rem;font-weight:600}.tag-list{flex-wrap:wrap;align-content:flex-start;gap:.35rem;padding-top:1rem;display:flex;overflow:hidden}.tech-tag{color:var(--text-soft);font-size:var(--font-body);background:#f7f7f7;border-radius:999px;align-items:center;gap:.28rem;padding:.18rem .42rem .18rem .2rem;display:inline-flex}.project-actions{align-self:end;gap:.55rem;margin-top:.95rem;display:flex}.project-action-icon{border:1px solid var(--color-blue);width:2.8rem;height:2.8rem;color:var(--color-blue);background:0 0;border-radius:999px;place-items:center;transition:background .18s,border-color .18s;display:inline-grid}.project-action-icon:hover{background:var(--color-blue-bg);border-color:var(--color-blue)}.showcase-section{border-top:1px solid var(--color-border);align-items:center;min-height:100vh;display:flex}.showcase-section .section-inner,.quotes-section .section-inner{width:min(1180px,100%)}.showcase-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.showcase-card{border:1px solid var(--color-border);background:#fff;border-radius:1rem;gap:1rem;min-height:100%;padding:1.4rem;display:grid}.showcase-card-featured{background:linear-gradient(#fffffffa,#f4f7fbeb)}.showcase-card-secondary{background:linear-gradient(#f4f7fbe0,#fffffffa)}.showcase-card-top{gap:.35rem;display:grid}.showcase-kicker{letter-spacing:.18em;text-transform:uppercase;color:var(--color-blue);font-size:.76rem;font-weight:800}.showcase-card h3{font-size:var(--font-subheading);color:var(--color-text);margin:0}.showcase-card p{color:var(--text-soft);margin:0;line-height:1.55}.blog-preview-meta{color:var(--color-blue);letter-spacing:.04em;text-transform:uppercase;font-size:.85rem;font-weight:700}.showcase-tag-row{flex-wrap:wrap;gap:.55rem;display:flex}.showcase-tag{color:var(--color-blue);background:#3a5f8a14;border-radius:999px;align-items:center;padding:.35rem .68rem;font-size:.86rem;font-weight:700;display:inline-flex}.featured-photo-card{border:1px solid var(--color-border);background:#fff;border-radius:.95rem;overflow:hidden}.featured-photo-image,.featured-photo-placeholder{aspect-ratio:4/5;width:100%}.featured-photo-image{object-fit:cover;display:block}.featured-photo-placeholder{color:#111111c7;letter-spacing:.1em;text-transform:uppercase;background:linear-gradient(135deg,#8b5e3c38,#3a5f8a33);place-items:center;font-size:1rem;font-weight:800;display:grid}.featured-photo-copy{gap:.45rem;padding:.85rem .9rem 1rem;display:grid}.featured-photo-copy h4{color:var(--color-text);margin:0;font-size:1rem}.featured-photo-copy p{color:var(--text-soft);margin:0;font-size:.92rem;line-height:1.45}.showcase-link{background:var(--color-blue);color:#fff;border-radius:.7rem;justify-content:center;align-self:flex-start;align-items:center;min-height:2.75rem;padding:.78rem 1.1rem;font-weight:700;transition:background .18s,transform .18s;display:inline-flex}.showcase-link:hover{background:var(--color-blue-light);transform:translateY(-1px)}.showcase-link-disabled{color:var(--text-soft);border:1px solid var(--color-border);background:#eff1f4}.showcase-mini-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;display:grid}.showcase-mini-grid span{min-height:4.6rem;color:var(--color-text);letter-spacing:.04em;text-transform:uppercase;background:linear-gradient(135deg,#8b5e3c2e,#3a5f8a2e);border-radius:.9rem;place-items:center;font-size:.86rem;font-weight:700;display:grid}.photography-gallery-card{align-content:start}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;display:grid}.photo-card{border:1px solid var(--color-border);background:#fff;border-radius:.95rem;overflow:hidden}.photo-card-image,.photo-card-placeholder{aspect-ratio:4/5;width:100%}.photo-card-image{object-fit:cover;display:block}.photo-card-placeholder{color:#111111c7;letter-spacing:.16em;background:linear-gradient(135deg,#8b5e3c38,#3a5f8a33);place-items:center;font-size:1.35rem;font-weight:800;display:grid}.photo-card-copy{gap:.45rem;padding:.85rem .9rem 1rem;display:grid}.photo-card-copy h4{color:var(--color-text);margin:0;font-size:1rem}.photo-card-copy p{color:var(--text-soft);margin:0;font-size:.92rem;line-height:1.45}.photo-card-file{color:var(--color-blue);font-size:.8rem;font-weight:700}.showcase-list{color:#4c5b2b;margin:0;padding-left:1.2rem;line-height:1.5}.showcase-list li+li{margin-top:.45rem}.blog-read-more{color:var(--color-blue);border-bottom:1px solid #0000;align-self:flex-start;align-items:center;margin-top:auto;font-weight:700;transition:border-color .18s,color .18s;display:inline-flex}.blog-read-more:hover{color:var(--color-blue-light);border-color:currentColor}.quotes-section{border-top:1px solid var(--color-border);align-items:center;min-height:100vh;display:flex}.quotes-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:1rem;display:grid}.quote-card{border:1px solid var(--color-border);background:linear-gradient(#fffffffa,#f4f7fbe6);border-radius:1rem;grid-template-rows:minmax(9.5rem,auto) auto 1fr;gap:.9rem;height:100%;padding:1.5rem;display:grid}.quote-text{color:var(--color-text);text-wrap:balance;margin:0;font-size:clamp(1.15rem,1.8vw,1.45rem);line-height:1.45}.quote-author{color:var(--color-blue);letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #3a5f8a24;margin:0;padding-top:.9rem;font-size:.92rem;font-weight:800}.quote-note{color:var(--text-soft);align-self:end;margin:0;line-height:1.55}.contact-section{background:var(--color-bg);border-top:1px solid var(--color-border);place-items:center;min-height:100vh;padding:5rem 1.5rem 3rem;display:grid;position:relative;overflow:hidden}.contact-backdrop{display:none}.contact-card{z-index:1;border:1px solid var(--color-border);width:min(430px,100%);box-shadow:none;background:#fff;border-radius:12px;padding:1.8rem;position:relative}.contact-heading{margin-bottom:1.4rem}.contact-form{gap:1rem;display:grid}.contact-form label{color:#283618;gap:.45rem;font-weight:600;display:grid}.contact-form span{font-size:var(--font-body)}.contact-form input,.contact-form textarea{border:1px solid var(--color-border);color:#283618;background:#fff;outline:none;width:100%;padding:.82rem .9rem}.contact-form input:focus,.contact-form textarea:focus{border-color:#606c38;box-shadow:0 0 0 3px #606c382e}.contact-honeypot{opacity:0;pointer-events:none;position:absolute;left:-9999px}.contact-note{color:#4b5a2a;background:#fefae0d1;border:1px solid #606c3838;padding:.8rem .9rem;font-size:.95rem;line-height:1.5}.form-status{border:1px solid #0000;margin:0;padding:.8rem .9rem;font-size:.95rem;line-height:1.5}.form-status-success{color:#1f5130;background:#4f9d691f;border-color:#4f9d693d}.form-status-error{color:#7a1f1f;background:#cc5d5d1f;border-color:#cc5d5d38}.submit-button{background:var(--color-brown);color:var(--color-bg);padding:.9rem 1rem;font-weight:800;transition:transform .18s,background .18s}.submit-button:disabled{opacity:.7;cursor:wait}.submit-button:hover{background:var(--color-brown-dark)}.site-footer{background:var(--color-bg);color:var(--text-soft);border-top:1px solid var(--color-border);font-size:var(--font-body);justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1.5rem,4vw,4rem);display:flex}.site-footer p{margin:0}.footer-links{gap:1rem;display:flex}.footer-link-disabled{opacity:.5;pointer-events:none}@media (width<=1180px){.hero-section{min-height:auto}.hero-copy{min-height:auto;padding:5rem 1.5rem 1rem}.hero-pattern{inset:0}.project-grid,.cert-grid,.showcase-grid,.quotes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-timeline:before{left:4.7rem}}@media (width<=760px){.content-section,.hero-section{padding-inline:1rem}.project-actions,.site-footer,.project-group-header,.section-heading{flex-direction:column;align-items:flex-start}.hero-copy{padding-inline:0}.hero-actions{justify-content:center;gap:.7rem;width:min(100%,20rem)}.pill-button{min-width:8.75rem}.hero-section-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;width:min(100%,24rem);display:grid}.section-jump{justify-content:center;width:100%}.project-grid,.cert-grid,.showcase-grid,.quotes-grid,.photo-grid{grid-template-columns:1fr}.showcase-section,.quotes-section{align-items:stretch;min-height:auto}.journey-timeline{gap:1rem}.journey-timeline:before{left:1rem}.journey-card{grid-template-columns:1fr;gap:.5rem}.journey-year{text-align:left;width:auto;padding-top:0;padding-left:1.9rem}.journey-node{margin:0;position:absolute;top:.05rem;left:.3rem}.contact-card{padding:1.25rem}}@media (width<=520px){.hero-copy{padding-top:4.5rem}.hero-actions{grid-template-columns:repeat(5,minmax(0,1fr));width:100%;display:grid}.icon-button,.pill-button{width:100%}.pill-button{grid-column:1/-1}.hero-section-nav{width:100%}.social-preview{display:none}}
