*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--cream:#fafaf8;--warm-bg:#f0efeb;--sand:#e2e1dc;--rose:#c84b31;--rose-dk:#a83a22;--ink:#111;--ink-soft:#444;--muted:#888;--font-serif:"Playfair Display", Georgia, serif;--font-sans:"Inter", system-ui, sans-serif;--nav-h:64px;--byline-h:36px;--max-w:1100px}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--cream);color:var(--ink);font-size:1rem;font-weight:300;line-height:1.7}h1,h2,h3{font-family:var(--font-serif);font-weight:600;line-height:1.2}a{color:inherit;text-decoration:none}a:hover{color:var(--rose)}ul{list-style:none}.nav{height:var(--nav-h);backdrop-filter:blur(8px);z-index:100;border-bottom:1px solid var(--sand);background:#faf7f2eb;justify-content:space-between;align-items:center;padding:0 2.5rem;display:flex;position:fixed;top:0;left:0;right:0}.nav-logo{font-family:var(--font-serif);color:var(--rose);letter-spacing:.05em;font-size:1.25rem;font-weight:600}.nav-links{gap:2.5rem;list-style:none;display:flex}.nav-links a{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-size:.875rem;font-weight:400;transition:color .2s}.nav-links a:hover{color:var(--rose)}.nav-toggle{cursor:pointer;z-index:101;background:0 0;border:none;flex-direction:column;gap:5px;padding:4px;display:none}.nav-toggle-bar{background:var(--ink);border-radius:1px;width:22px;height:2px;transition:transform .25s,opacity .25s;display:block}.nav-toggle[aria-expanded=true] .nav-toggle-bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle[aria-expanded=true] .nav-toggle-bar:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] .nav-toggle-bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.btn{letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border-radius:2px;padding:.75rem 1.75rem;font-size:.875rem;font-weight:500;transition:background .2s,color .2s,box-shadow .2s;display:inline-block}.btn-primary{background:var(--rose);color:#fff}.btn-primary:hover{background:var(--rose-dk);color:#fff;box-shadow:0 4px 16px #a2674f59}.btn-secondary{color:var(--rose);border:1.5px solid var(--rose);background:0 0}.btn-secondary:hover{background:var(--rose);color:#fff}.hero{text-align:center;min-height:80vh;padding:calc(var(--nav-h) + 4rem) 2rem 4rem;background:var(--warm-bg);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.hero-eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--rose);margin-bottom:1rem;font-size:.8rem;font-weight:500}.hero-name{color:var(--ink);margin-bottom:1.5rem;font-size:clamp(3.5rem,10vw,7rem);line-height:1.05}.hero-tagline{max-width:480px;color:var(--ink-soft);font-size:1.1rem;font-style:italic;font-family:var(--font-serif);margin-bottom:2.5rem;font-weight:400}.hero-scroll-hint{color:var(--muted);font-size:1.25rem;text-decoration:none;animation:2s infinite bounce;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.hero-scroll-hint:hover{color:var(--rose)}@keyframes bounce{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(6px)}}.section{padding:6rem 0}.section-alt{background:var(--warm-bg)}.container{max-width:var(--max-w);margin:0 auto;padding:0 2.5rem}.section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--rose);margin-bottom:.75rem;font-size:.75rem;font-weight:500;display:inline-block}.section-heading{color:var(--ink);margin-bottom:1.5rem;font-size:clamp(2rem,4vw,2.75rem)}.section-intro{max-width:560px;color:var(--ink-soft);margin-bottom:3rem}.two-col{grid-template-columns:1fr 1fr;align-items:center;gap:5rem;display:grid}.about-text p{color:var(--ink-soft);margin-bottom:1.25rem}.about-text .btn{margin-top:.5rem}.about-photo-wrap{justify-content:center;display:flex}.about-photo{aspect-ratio:3/4;object-fit:cover;object-position:center 20%;border:3px solid var(--sand);filter:saturate(.85)contrast(1.05);border-radius:4px;width:100%;max-width:380px;box-shadow:0 8px 30px #2b21181f}.work-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;display:grid}.work-load-more-wrap{justify-content:center;margin-top:2.5rem;display:flex}#workLoadMore[hidden]{display:none}.work-card{background:var(--cream);border:1px solid var(--sand);border-radius:4px;padding:1.75rem;transition:box-shadow .2s,transform .2s}.work-card:hover{transform:translateY(-2px);box-shadow:0 8px 32px #2b21181a}.work-card[data-series=true]{border-left:3px solid var(--rose)}.work-tag{letter-spacing:.12em;text-transform:uppercase;color:var(--rose);background:#c2826a1f;border-radius:2px;margin-bottom:.875rem;padding:.2rem .6rem;font-size:.7rem;font-weight:500;display:inline-block}.work-title{margin-bottom:.4rem;font-size:1.15rem;font-weight:600}.work-title a{color:var(--ink);transition:color .2s}.work-title a:hover{color:var(--rose)}.work-meta{color:var(--muted);letter-spacing:.02em;margin-bottom:.75rem;font-size:.8rem}.work-desc{color:var(--ink-soft);font-size:.9rem}.resume-download-bar{background:var(--warm-bg);border:1px solid var(--sand);border-radius:4px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:3rem;padding:1.25rem 1.75rem;display:flex}.resume-download-bar p{color:var(--ink-soft)}.resume-grid{grid-template-columns:1fr 1fr;gap:4rem;display:grid}.resume-section-title{font-family:var(--font-sans);letter-spacing:.18em;text-transform:uppercase;color:var(--rose);border-bottom:1px solid var(--sand);margin-bottom:1.5rem;padding-bottom:.5rem;font-size:.75rem;font-weight:500}.resume-entry{margin-bottom:1.75rem}.resume-entry-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem;margin-bottom:.2rem;display:flex}.resume-entry-header strong{font-size:1rem;font-weight:500}.resume-date{color:var(--muted);font-size:.8rem}.resume-employer{color:var(--rose);margin-bottom:.5rem;font-size:.875rem;font-style:italic}.resume-entry ul{padding-left:1.25rem;list-style:outside}.resume-entry li{color:var(--ink-soft);margin-bottom:.25rem;font-size:.9rem}.skills-list{flex-direction:column;gap:.5rem;display:flex}.skills-list li{color:var(--ink-soft);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.skills-list li:before{content:"";background:var(--rose);border-radius:50%;flex-shrink:0;width:5px;height:5px}.footer{background:var(--ink);color:var(--cream);padding:3rem 0}.footer-inner{text-align:center;flex-direction:column;gap:.5rem;display:flex}.footer-name{font-family:var(--font-serif);color:var(--sand);font-size:1.25rem}.footer-links a{color:var(--muted);font-size:.875rem;transition:color .2s}.footer-links a:hover{color:var(--rose)}.footer-copy{color:var(--muted);margin-top:.5rem;font-size:.75rem}.work-card[data-pdf]{position:relative}.work-card[data-pdf]:hover{border-color:var(--rose)}.work-read-cue{letter-spacing:.08em;color:var(--rose);text-transform:uppercase;margin-top:.75rem;font-size:.75rem;font-weight:500;display:inline-block}.pdf-overlay{background:var(--cream);z-index:200;opacity:0;pointer-events:none;border-radius:4px;flex-direction:column;display:flex;position:fixed;overflow:hidden;box-shadow:0 24px 80px #2b21184d}.pdf-close{z-index:10;background:var(--ink);color:var(--cream);cursor:pointer;opacity:.75;border:none;border-radius:50%;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:.9rem;transition:opacity .2s;display:flex;position:absolute;top:.75rem;right:.75rem}.pdf-close:hover{opacity:1}.pdf-frame{border:none;flex:1;width:100%;display:block}.pdf-backdrop{z-index:199;opacity:0;pointer-events:none;background:#2b211899;transition:opacity .3s;position:fixed;inset:0}@media (width<=768px){.nav{padding:0 1.25rem}.nav-toggle{display:flex}.nav-links{background:var(--cream);z-index:100;flex-direction:column;gap:1.75rem;width:260px;height:100vh;padding:5rem 2rem 2rem;transition:transform .3s;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}.nav-links.open{transform:translate(0)}.nav-links a{font-size:1rem}.two-col{grid-template-columns:1fr;gap:3rem}.about-photo-wrap{order:-1}.about-photo{max-width:280px}.resume-grid{grid-template-columns:1fr;gap:2.5rem}.resume-download-bar{flex-direction:column;align-items:flex-start}.section{padding:4rem 0}.container{padding:0 1.25rem}}@media (width<=480px){.nav-links{gap:1rem}.nav-links a{font-size:.75rem}.hero-name{font-size:3rem}}section[id],header[id]{scroll-margin-top:calc(var(--nav-h) + .5rem)}.byline-strip{top:var(--nav-h);z-index:99;height:var(--byline-h);background:var(--ink);border-bottom:1px solid #ffffff12;align-items:center;display:flex;position:fixed;left:0;right:0}.byline-strip-inner{font-family:var(--font-sans);letter-spacing:.05em;flex-wrap:nowrap;align-items:center;gap:1.1rem;font-size:.7rem;display:flex;overflow:hidden}.byline-role{color:var(--sand);white-space:nowrap;font-weight:400}.byline-role em{color:#fff;font-style:normal;font-weight:500}.byline-divider{color:#ffffff2e;flex-shrink:0;font-weight:300}.byline-stat{color:var(--muted);white-space:nowrap}.byline-badge{color:#82c9a0;letter-spacing:.03em;white-space:nowrap;font-weight:500}.numbers-strip{background:var(--cream);border-top:1px solid var(--sand);border-bottom:1px solid var(--sand);padding:3.5rem 0}.numbers-inner{justify-content:center;align-items:center;display:flex}.numbers-item{text-align:center;flex-direction:column;flex:1;align-items:center;padding:0 1.5rem;display:flex}.numbers-figure{font-family:var(--font-serif);color:var(--ink);margin-bottom:.45rem;font-size:clamp(2.25rem,5vw,3.5rem);font-weight:600;line-height:1}.numbers-label{font-family:var(--font-sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:.67rem;font-weight:500}.numbers-rule{background:var(--sand);flex-shrink:0;width:1px;height:3rem}.filter-bar{flex-wrap:wrap;gap:.45rem;margin-bottom:2.5rem;display:flex}.filter-btn{font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;border:1.5px solid var(--sand);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:2px;padding:.38rem .85rem;font-size:.7rem;font-weight:500;line-height:1;transition:background .15s,color .15s,border-color .15s}.filter-btn:hover{border-color:var(--ink-soft);color:var(--ink)}.filter-btn.active{background:var(--ink);color:var(--cream);border-color:var(--ink)}.work-pub-block{border-left:2px solid var(--ink);margin:.35rem 0 .8rem;padding-left:.55rem}.work-pub{font-family:var(--font-sans);color:var(--ink);letter-spacing:.01em;margin:0;font-size:.8rem;font-weight:500;line-height:1.3}.work-date{color:var(--muted);letter-spacing:.02em;margin:.1rem 0 0;font-size:.7rem}.resume-company{font-family:var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--rose);margin:0 0 .2rem;font-size:.63rem;font-weight:600;line-height:1}.resume-highlight{font-family:var(--font-sans);color:var(--ink);border-left:2px solid var(--rose);margin:.4rem 0 .6rem;padding-left:.75rem;font-size:.875rem;font-weight:500;line-height:1.55}.resume-bullets{margin-top:.3rem;padding-left:1.25rem;list-style:outside}.resume-bullets li{color:var(--ink-soft);margin-bottom:.25rem;font-size:.875rem;line-height:1.55}.skills-grid{flex-wrap:wrap;gap:.4rem;margin-top:.25rem;display:flex}.skills-chip{font-family:var(--font-sans);color:var(--ink-soft);background:var(--warm-bg);border:1px solid var(--sand);border-radius:2px;padding:.28rem .65rem;font-size:.75rem;font-weight:400;line-height:1.4;display:inline-block}.contact-section{background:var(--ink);padding:6rem 0}.contact-inner{text-align:center;flex-direction:column;align-items:center;gap:.85rem;display:flex}.contact-section .section-label{color:var(--rose)}.contact-headline{font-family:var(--font-serif);color:var(--cream);margin:0;font-size:clamp(2rem,5vw,3rem);font-weight:600;line-height:1.15}.contact-sub{font-family:var(--font-serif);color:var(--muted);max-width:380px;margin:0;font-size:1rem;font-style:italic;font-weight:400;line-height:1.6}.contact-email{font-family:var(--font-serif);color:var(--sand);text-underline-offset:5px;margin:.25rem 0;font-size:clamp(1.1rem,3vw,1.5rem);font-style:italic;font-weight:400;text-decoration:underline #e8d9c54d;transition:color .2s,text-decoration-color .2s;display:inline-block}.contact-email:hover{color:#fff;text-decoration-color:var(--rose)}.contact-actions{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:.5rem;display:flex}.contact-section .btn-secondary{color:var(--muted);border-color:#9c887880}.contact-section .btn-secondary:hover{background:var(--muted);color:var(--ink);border-color:var(--muted)}@media (width<=768px){.byline-stat,.byline-divider:first-of-type{display:none}.numbers-inner{flex-wrap:wrap;gap:2.5rem 0}.numbers-rule{display:none}.numbers-item{flex:0 0 50%}.filter-bar{gap:.35rem}.filter-btn{padding:.32rem .7rem;font-size:.65rem}.contact-section{padding:4rem 0}.contact-actions{flex-direction:column;align-items:center}}
