.portfolio-wrapper{background-color:var(--bg-page);color:var(--text-primary);min-height:100vh;width:100%;display:flex;flex-direction:column;align-items:center;position:relative;transition:background-color .3s ease;font-family:var(--font-serif);padding:0;box-sizing:border-box;font-weight:400}.controls-bar{position:fixed;top:20px;right:24px;display:flex;gap:10px;z-index:100}.control-btn{width:40px;height:40px;border-radius:8px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;transition:border-color .2s,color .2s,box-shadow .2s;font-family:var(--font-sans)}.control-btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:var(--shadow-whisper)}.control-btn:disabled{opacity:.5;cursor:not-allowed}.resume-container{max-width:1120px;width:100%;padding:64px 48px 80px;position:relative}.resume-header{display:flex;justify-content:space-between;align-items:flex-start;gap:40px;margin-bottom:72px;padding-bottom:48px;border-bottom:1px solid var(--border)}.header-content{flex:1;min-width:0}.header-content h1{font-family:var(--font-serif);font-size:72px;font-weight:500;margin:0 0 8px;line-height:1.05;letter-spacing:-1.2px;color:var(--text-primary)}.title-line{font-family:var(--font-serif);font-size:18px;font-weight:400;color:var(--text-subtle);margin:0 0 24px;line-height:1.4}.contact-row{display:flex;flex-wrap:wrap;gap:8px 20px}.contact-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-meta);font-weight:400;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.4px}.contact-item a{color:var(--text-meta);text-decoration:none;transition:color .2s}.contact-item:hover a,.contact-item:hover{color:var(--accent)}.contact-icon{font-size:13px;color:var(--accent)}.profile-image-container{width:120px;height:120px;flex-shrink:0}.profile-image{width:120px;height:120px;border-radius:50%;object-fit:cover;border:1px solid var(--border)}.profile-initials{width:120px;height:120px;border-radius:50%;background:var(--bg-warm-sand);display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:2.5em;font-weight:500;font-family:var(--font-serif);border:1px solid var(--border)}section{margin-bottom:56px}.section-head{display:flex;align-items:baseline;gap:16px;margin-bottom:28px}.section-num{font-family:var(--font-serif);font-size:14px;font-weight:500;color:var(--accent);letter-spacing:.4px;font-variant-numeric:tabular-nums;flex-shrink:0;line-height:1.25}.section-head h2{font-family:var(--font-serif);font-size:32px;font-weight:500;margin:0;line-height:1.2;color:var(--text-primary)}.summary-body{font-size:15px;font-weight:400;line-height:1.55;color:var(--text-secondary);margin:0 0 36px}.competency-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.competency-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:24px 24px 20px;transition:box-shadow .2s}.competency-card:hover{box-shadow:var(--shadow-whisper)}.competency-card h4{font-family:var(--font-serif);font-size:16px;font-weight:500;margin:0 0 8px;color:var(--text-primary);line-height:1.3}.competency-card p{margin:0;font-size:13px;color:var(--text-subtle);line-height:1.5;font-weight:400}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:5px;top:12px;bottom:12px;width:1px;background:var(--border)}.timeline-item{position:relative;margin-bottom:40px;padding-left:28px}.timeline-item:last-child{margin-bottom:0}.timeline-item:before{content:"";position:absolute;left:-2px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--bg-page);border:2px solid var(--accent);z-index:1;box-sizing:border-box}.timeline-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:10px}.role-title{font-family:var(--font-serif);font-size:18px;font-weight:500;color:var(--text-primary);margin:0;line-height:1.3}.job-details{font-family:var(--font-sans);font-size:12px;color:var(--text-meta);font-weight:500;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;font-variant-numeric:tabular-nums}.job-bullet-list{list-style:none;padding:0;margin:0}.job-bullet-list li{position:relative;padding-left:14px;margin-bottom:8px;font-size:14px;line-height:1.5;color:var(--text-secondary);font-weight:400}.job-bullet-list li:before{content:"–";position:absolute;left:0;color:var(--accent)}.job-bullet-list li:last-child{margin-bottom:0}.inline-code{font-family:var(--font-mono);font-size:.88em;background:var(--bg-warm-sand);color:var(--accent);padding:1px 5px;border-radius:3px;font-weight:400}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.project-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:28px;display:flex;flex-direction:column;transition:box-shadow .2s}.project-card:hover{box-shadow:var(--shadow-whisper)}.project-icon-title{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.proj-icon{font-size:1.2em;width:36px;height:36px;border-radius:6px;background:var(--bg-warm-sand);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.project-card h4{font-family:var(--font-serif);font-size:16px;font-weight:500;margin:0 0 4px;color:var(--text-primary)}.project-blurb{margin:0;font-size:12px;color:var(--text-meta);line-height:1.4;font-weight:400}.project-achievements{list-style:none;padding:0;margin:0 0 auto}.project-achievements li{position:relative;padding-left:14px;margin-bottom:8px;font-size:12.5px;line-height:1.5;color:var(--text-subtle);font-weight:400}.project-achievements li:last-child{margin-bottom:16px}.project-achievements li:before{content:"–";position:absolute;left:0;color:var(--accent)}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:0}.tag{font-family:var(--font-sans);font-size:11px;font-weight:500;background:var(--bg-tag);color:var(--accent);padding:3px 8px;border-radius:4px;letter-spacing:.3px;line-height:1.3;transition:background .2s}.project-card:hover .tag{background:var(--bg-tag-hover)}.ops-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.ops-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:24px;transition:box-shadow .2s}.ops-card:hover{box-shadow:var(--shadow-whisper)}.ops-card h4{font-family:var(--font-serif);font-size:15px;font-weight:500;margin:0 0 14px;color:var(--text-primary);line-height:1.3}.ops-list{list-style:none;padding:0;margin:0}.ops-list li{position:relative;padding-left:14px;margin-bottom:10px;font-size:13px;line-height:1.5;color:var(--text-subtle);font-weight:400}.ops-list li:last-child{margin-bottom:0}.ops-list li:before{content:"–";position:absolute;left:0;color:var(--accent)}.resume-footer{display:flex;justify-content:space-between;align-items:center;padding-top:32px;border-top:1px solid var(--border);margin-top:56px}.footer-text{font-size:12px;color:var(--text-meta);font-weight:400;font-family:var(--font-sans);letter-spacing:.3px}.download-btn{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;padding:10px 18px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:border-color .2s,color .2s,box-shadow .2s}.download-btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:var(--shadow-whisper)}.download-btn:disabled{opacity:.5;cursor:not-allowed}@keyframes sectionFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}section{animation:sectionFadeIn .5s ease-out both}section:nth-child(2){animation-delay:.05s}section:nth-child(3){animation-delay:.1s}section:nth-child(4){animation-delay:.15s}section:nth-child(5){animation-delay:.2s}.print-optimized-resume{position:absolute;left:-9999px;top:0;width:794px;padding:40px 50px;background:#f5f4ed;color:#141413;font-family:Charter,Georgia,Palatino,Times New Roman,serif;box-sizing:border-box}.print-optimized-resume h1{font-family:Charter,Georgia,Palatino,Times New Roman,serif;font-size:28px;font-weight:500;color:#141413;margin:0 0 4px;letter-spacing:-.5px}.print-optimized-resume .print-title{font-family:Charter,Georgia,Palatino,Times New Roman,serif;font-size:13px;font-weight:400;color:#c0512f;margin:0 0 15px}.print-optimized-resume h2{font-family:Charter,Georgia,Palatino,Times New Roman,serif;font-size:14px;font-weight:500;color:#141413;text-transform:uppercase;border-bottom:1px solid #C0512F;padding-bottom:4px;margin:18px 0 8px;letter-spacing:.5px}.print-optimized-resume p{font-size:10.5px;line-height:1.5;color:#3d3d3a;margin:0 0 10px;font-weight:400}.print-optimized-resume .print-comp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-bottom:4px}.print-optimized-resume .print-comp-item{font-size:10px;line-height:1.4;color:#3d3d3a;font-weight:400}.print-optimized-resume .print-comp-item strong{color:#141413;font-weight:500}.print-optimized-resume .print-job-entry{margin-bottom:14px}.print-optimized-resume .print-job-header{display:flex;justify-content:space-between;font-weight:500;font-size:11.5px;color:#141413;margin-bottom:4px}.print-optimized-resume .print-job-dates{color:#c0512f;font-size:10px;font-weight:400;font-variant-numeric:tabular-nums}.print-optimized-resume .print-job-list{padding:0;margin:0;list-style:none}.print-optimized-resume .print-job-list li{position:relative;padding-left:12px;margin-bottom:4px;font-size:10px;line-height:1.45;color:#3d3d3a;font-weight:400}.print-optimized-resume .print-job-list li:before{content:"–";position:absolute;left:0;color:#c0512f}.print-optimized-resume .print-job-list strong{font-weight:500}@media(max-width:900px){.ops-grid{grid-template-columns:1fr}.header-content h1{font-size:56px}}@media(max-width:768px){.resume-container{padding:40px 24px 60px}.resume-header{flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:56px;padding-bottom:36px}.profile-image-container{order:-1}.header-content h1{font-size:42px}.title-line{font-size:16px}.competency-grid,.projects-grid{grid-template-columns:1fr}.section-head h2{font-size:26px}.controls-bar{top:12px;right:12px}.contact-row{gap:6px 14px}.contact-item{font-size:11px}.resume-footer{flex-direction:column;gap:16px;align-items:flex-start}}:root{--font-serif: Charter, Georgia, Palatino, "Times New Roman", serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", Consolas, Monaco, monospace;--font-sans: var(--font-serif);--bg-page: #f5f4ed;--bg-surface: #faf9f5;--bg-surface-hover: #f7f5ef;--bg-tag: #EFE3DA;--bg-tag-hover: #EAD3C7;--bg-warm-sand: #e8e6dc;--text-primary: #141413;--text-secondary: #3d3d3a;--text-subtle: #504e49;--text-meta: #6b6a64;--text-on-accent: #faf9f5;--accent: #C0512F;--accent-hover: #A63F20;--accent-subtle: rgba(192, 81, 47, .08);--border: #e8e6dc;--border-soft: #e5e3d8;--shadow-whisper: 0 4px 24px rgba(0, 0, 0, .05)}.dark-theme{--bg-page: #141413;--bg-surface: #252220;--bg-surface-hover: #2d2825;--bg-tag: #402A22;--bg-tag-hover: #4B2D23;--bg-warm-sand: #30302e;--text-primary: #f5f0eb;--text-secondary: #c9c3ba;--text-subtle: #8a8580;--text-meta: #6b6763;--text-on-accent: #faf9f5;--accent: #D4694A;--accent-hover: #E07A5E;--accent-subtle: rgba(212, 105, 74, .12);--border: #36312e;--border-soft: #2a2624;--shadow-whisper: 0 4px 24px rgba(0, 0, 0, .15)}body{margin:0;padding:0;font-family:var(--font-serif);background-color:var(--bg-page);color:var(--text-primary);min-height:100vh;transition:background-color .3s ease,color .3s ease;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
