.tech-intro .section-title,.tech-intro .page-title,.tech-intro .page-lede,.tech-intro .profile-links{animation:.5s ease-out both riseIn}.tech-intro .section-title{animation-delay:50ms}.tech-intro .page-title{animation-delay:.16s}.tech-intro .page-lede{animation-delay:.28s}.tech-intro .profile-links{animation-delay:.38s}@media (prefers-reduced-motion:reduce){.tech-intro .section-title,.tech-intro .page-title,.tech-intro .page-lede,.tech-intro .profile-links{animation:none}}.profile-links{flex-wrap:wrap;gap:.625rem;margin-top:.75rem;display:flex}.skills-grid{grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:.25rem;display:grid}.skill-group-label{color:var(--dim);letter-spacing:.125rem;text-transform:uppercase;margin-bottom:.5rem;font-size:.5rem}.skill-tags{flex-wrap:wrap;gap:.3125rem;display:flex}.skill-tag{border:1px solid var(--dim-border);color:var(--dim);letter-spacing:1px;padding:.125rem .5rem;font-size:.5rem;transition:border-color .1s,color .1s}.skill-tag:hover{border-color:var(--gold);color:var(--gold)}.experience-list{flex-direction:column;gap:0;display:flex}.experience-card{border:.125rem solid var(--white);background:var(--bg-elevated);box-shadow:.25rem .25rem 0 var(--gold);margin-bottom:1rem;padding:1rem;transition:box-shadow .1s,transform .1s}.experience-card:hover{box-shadow:.375rem .375rem 0 var(--gold);transform:translate(-1px,-1px)}.experience-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.experience-company{color:var(--gold);letter-spacing:1px;text-transform:uppercase;font-size:.6875rem;font-weight:700}.experience-period{color:var(--dim);letter-spacing:1px;white-space:nowrap;flex-shrink:0;font-size:.5rem}.experience-role{color:var(--white);letter-spacing:1px;margin-top:.1875rem;font-size:.625rem}.experience-desc{color:var(--dim);margin-top:.5rem;font-size:.5625rem;line-height:1.6}.experience-tags{flex-wrap:wrap;gap:.3125rem;margin-top:.5rem;display:flex}.experience-tag{border:1px solid var(--border-soft);color:var(--text-muted);letter-spacing:1px;padding:1px .375rem;font-size:.4375rem}.exp-timeline{flex-direction:column;display:flex}.exp-timeline-item{gap:1rem;padding-bottom:1.5rem;display:flex;position:relative}.exp-timeline-item:before{content:"";background:var(--border-soft);width:.125rem;position:absolute;top:.75rem;bottom:0;left:.3125rem}.exp-timeline-item:last-child:before{display:none}.exp-timeline-dot{background:var(--gold);z-index:1;flex-shrink:0;width:.75rem;height:.75rem;margin-top:.125rem;position:relative}.exp-timeline-body{flex:1}.exp-timeline-company{color:var(--gold);letter-spacing:1px;text-transform:uppercase;font-size:.625rem;font-weight:700}.exp-timeline-role{color:var(--white);margin-top:.125rem;font-size:.5625rem}.exp-timeline-period{color:var(--dim);letter-spacing:1px;margin-top:1px;font-size:.5rem}.exp-timeline-desc{color:var(--dim);margin-top:.375rem;font-size:.5625rem;line-height:1.6}.exp-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.exp-grid-card{border:1px solid var(--dim-border);border-left:.1875rem solid var(--gold);background:var(--bg-elevated);padding:.875rem}.exp-grid-company{color:var(--gold);letter-spacing:1px;text-transform:uppercase;font-size:.6875rem;font-weight:700}.exp-grid-role{color:var(--white);margin-top:.1875rem;font-size:.5625rem}.exp-grid-period{color:var(--dim);letter-spacing:1px;margin-top:.125rem;font-size:.5rem}.exp-grid-desc{color:var(--dim);margin-top:.5rem;font-size:.5rem;line-height:1.5}.past-projects-grid{grid-template-columns:1fr 1fr;gap:.625rem;display:grid}.past-project-card{border:1px solid var(--border-soft);background:var(--bg-elevated);padding:.75rem;transition:border-color .1s}.past-project-card:hover{border-color:var(--gold)}.past-project-title{color:var(--white);letter-spacing:1px;font-size:.625rem;font-weight:700;text-decoration:none;display:block}.past-project-title:hover{color:var(--gold)}.past-project-desc{color:var(--dim);margin-top:.25rem;font-size:.5rem;line-height:1.5}.past-project-tags{flex-wrap:wrap;gap:.25rem;margin-top:.5rem;display:flex}.past-project-tag{color:var(--text-muted);letter-spacing:1px;border:1px solid var(--border-soft);padding:1px .3125rem;font-size:.4375rem}@media (max-width:40rem){.skills-grid,.exp-grid,.past-projects-grid{grid-template-columns:1fr}}.tech-photo-row{gap:.9rem;margin-top:1.5rem;display:flex}.tech-photo{flex:var(--ar) 1 0;min-width:0;margin:0}.tech-photo-frame{aspect-ratio:var(--ar);background:var(--surface);border-radius:.5rem;display:block;position:relative;overflow:hidden}.tech-photo-img{object-fit:cover;image-rendering:auto}.tech-photo-caption{font-family:var(--font-text);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-top:.45rem;font-size:.5rem;font-weight:600;line-height:1.5}.tech-projects{flex-direction:column;gap:1rem;margin:1.25rem 0 0;padding:0;list-style:none;display:flex}.tech-project{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:.6rem;overflow:hidden}.tech-project-shot{aspect-ratio:var(--ar,16 / 10);background:var(--surface);border-bottom:1px solid var(--border-soft);display:block;position:relative}.tech-project-img{object-fit:cover;image-rendering:auto}.tech-project-body{align-items:flex-start;gap:.75rem;padding:1rem 1.1rem;display:flex}.tech-project-icon{background:var(--gold-wash);border-radius:.4rem;flex:none;place-items:center;width:1.6rem;height:1.6rem;font-size:.85rem;display:grid}.tech-project-copy{min-width:0}.tech-project-name{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);margin:0;font-size:.85rem;font-weight:700;line-height:1.2}.tech-project-desc{font-family:var(--font-text);color:var(--text-muted);margin:.35rem 0 0;font-size:.6rem;line-height:1.65}.tech-project-link,.tech-project-status{font-family:var(--font-text);letter-spacing:.08em;text-transform:uppercase;margin-top:.6rem;font-size:.5rem;font-weight:700;display:inline-block}.tech-project-link{color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.3rem .65rem;text-decoration:none;transition:background .15s,border-color .15s}.tech-project-link:hover{background:var(--surface);border-color:var(--border-strong)}.tech-project-link:focus-visible{outline:2px solid var(--border-strong);outline-offset:2px}.tech-project-status{color:var(--text-muted)}.tech-project-status--live{color:var(--gold)}@media (max-width:40rem){.tech-photo-row{flex-direction:column;gap:1.1rem}.tech-photo{flex:none}}
.timeline{flex-direction:column;display:flex}.timeline-item{gap:.75rem;display:flex}.timeline-left{flex-direction:column;flex-shrink:0;align-items:center;width:.75rem;display:flex}.timeline-dot{background:var(--gold);border:1px solid var(--dim);flex-shrink:0;width:.75rem;height:.75rem}.timeline-dot.current{background:var(--white);border:.125rem solid var(--gold)}.timeline-connector{background:var(--border-soft);flex:1;width:.125rem;min-height:1.75rem;margin-top:.125rem}.timeline-content{padding-bottom:1.5rem}.timeline-year{color:var(--gold);letter-spacing:.125rem;text-transform:uppercase;font-size:.5rem}.timeline-year.current{color:var(--white)}.timeline-title{color:var(--white);margin-top:.1875rem;font-size:.6875rem;font-weight:700}.timeline-title.current{color:var(--gold)}.timeline-text{color:var(--text-muted);margin-top:.25rem;font-size:.5625rem;line-height:1.6}.timeline-tags{flex-wrap:wrap;gap:.3125rem;margin-top:.375rem;display:flex}.timeline-tag{border:1px solid var(--border-soft);color:var(--text-muted);letter-spacing:1px;padding:1px .375rem;font-size:.4375rem}.timeline-toggle{border:1px solid var(--dim-border);color:var(--dim);letter-spacing:.125rem;cursor:pointer;background:0 0;margin-top:.25rem;padding:.375rem .875rem;font-size:.5rem;transition:border-color .1s,color .1s}.timeline-toggle:hover{border-color:var(--gold);color:var(--gold)}
