.portfolio-shell{--surface-0: #050505;--surface-1: #0d0d0f;--surface-2: #121214;--surface-3: #18181b;--text-primary: #ffffff;--text-secondary: rgba(255, 255, 255, .74);--text-muted: rgba(255, 255, 255, .54);--accent: #ff8f2a;--accent-soft: rgba(255, 143, 42, .14);--border-soft: rgba(255, 255, 255, .08);position:relative}.hero-section{--hero-pad-block: clamp(1.5rem, 4vw, 3rem);--hero-pad-inline: clamp(1.25rem, 6vw, 3rem);--hero-caption-space: 3.5rem;--hero-lift: 0rem;position:relative;display:grid;place-items:center;min-height:100vh;min-height:100svh;padding:var(--hero-pad-block) var(--hero-pad-inline)}.hero-section:after{content:"";position:absolute;right:var(--hero-pad-inline);bottom:0;left:var(--hero-pad-inline);height:clamp(3rem,8vw,5rem);background:linear-gradient(180deg,#05050500,#050505f0);pointer-events:none}.hero-center{position:relative;display:grid;place-items:center;width:min(100%,68rem);transform:translateY(calc(0 * var(--hero-lift)))}.baseball-field{width:min(100%,60rem,calc(100svh - (var(--hero-pad-block) * 2) - var(--hero-caption-space)));max-width:100%;height:auto;aspect-ratio:1 / 1;overflow:visible}.field-arc,.field-diamond{fill:none;stroke:#ff8f2a;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100}.field-arc{stroke-width:4;opacity:.24;animation:drawField 3.5s cubic-bezier(.2,.8,.2,1) .12s forwards}.field-diamond{stroke-width:3.2;opacity:.94;animation:drawField 3s cubic-bezier(.2,.8,.2,1) forwards}.mound-circle{fill:none;stroke:#ff8f2a61;stroke-width:2.5}.mound-rectangle{fill:#ff8f2a0f;stroke:#ff8f2a6b;stroke-width:2.5}.mound-label{fill:#ff8f2ab8;font-size:2.1rem;font-weight:600;letter-spacing:.05em;filter:drop-shadow(0 1px 1px rgba(0,0,0,.28)) drop-shadow(0 8px 16px rgba(0,0,0,.14)) drop-shadow(0 0 7px rgba(255,143,42,.1))}.mound-subtitle{fill:#ffffff80;font-size:.58em;font-weight:400;letter-spacing:.14em}.base-link{cursor:pointer;text-decoration:none}.base-visual{animation:baseFloat 3s ease-in-out infinite;animation-delay:var(--float-delay, 0s);transform-box:fill-box;transform-origin:center}.base-visual-static{animation:none}.base-hit-area{fill:transparent}.base-hover-ring{fill:none;stroke:#ffffff94;stroke-width:1.7;opacity:0;transition:opacity .18s ease,transform .18s ease,stroke .18s ease,filter .18s ease;transform-origin:center;transform-box:fill-box;filter:drop-shadow(0 0 12px rgba(255,255,255,.24)) drop-shadow(0 0 24px rgba(255,255,255,.1))}.base-underlay{fill:#050505fa;stroke:#050505fa;stroke-width:6}.base-shape{fill:#ffffff2e;stroke:#fffffffa;stroke-width:2.1;transition:fill .18s ease,stroke .18s ease,filter .18s ease,transform .18s ease;transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 8px 10px rgba(139,139,139,.18)) drop-shadow(0 0 10px rgba(255,255,255,.34)) drop-shadow(0 0 20px rgba(255,255,255,.16))}.base-label{fill:#ffffffd6;font-size:.82rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;transition:fill .18s ease}.base-link:focus-visible .base-hover-ring{opacity:1;stroke:#fffffff2;transform:scale(1.14);filter:drop-shadow(0 0 18px rgba(255,255,255,.42)) drop-shadow(0 0 30px rgba(255,255,255,.2))}.base-link:hover .base-shape,.base-link:focus-visible .base-shape{fill:#ffffff47;stroke:#fff;filter:drop-shadow(0 10px 16px rgba(0,0,0,.24)) drop-shadow(0 0 14px rgba(255,255,255,.48)) drop-shadow(0 0 30px rgba(255,255,255,.22))}.base-link:hover .base-square-shape,.base-link:focus-visible .base-square-shape{transform:scale(1.06)}.base-link:hover .base-label,.base-link:focus-visible .base-label{fill:#fff}.hero-instruction{margin:0;position:absolute;left:50%;bottom:0;transform:translate(-50%);color:#ffffffb3;font-size:.88rem;letter-spacing:.08em;text-transform:uppercase;text-align:center;width:max-content;max-width:100%}.content-stack{position:relative;max-width:1120px;margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem) clamp(4rem,8vw,6rem)}.content-stack:before{content:"";position:absolute;inset:0 clamp(1.25rem,4vw,3rem) auto;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);pointer-events:none}.content-section{padding:clamp(3.5rem,8vw,6rem) 0;border-top:1px solid var(--border-soft);scroll-margin-top:1rem}.content-section-last{padding-bottom:clamp(2rem,5vw,3rem)}[data-reveal]{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay, 0s);will-change:opacity,transform}[data-reveal].is-visible{opacity:1;transform:translateY(0)}.section-header{display:grid;gap:.75rem;max-width:42rem;margin-bottom:clamp(2rem,4vw,2.75rem)}.section-title{margin:0;color:var(--text-primary);font-size:clamp(1.8rem,3.2vw,2.4rem);line-height:1.08;letter-spacing:-.04em}.section-description{margin:0;color:var(--text-secondary);line-height:1.8;max-width:38rem}.experience-showcase{display:grid;gap:1.25rem}.experience-timeline-shell{overflow-x:auto;padding:.2rem;border-radius:1.45rem;scrollbar-width:thin;scrollbar-color:rgba(255,143,42,.3) transparent}.experience-timeline{position:relative;display:grid;grid-template-columns:repeat(3,minmax(13rem,1fr));gap:.9rem;align-items:start;width:max(100%,43rem);padding:.65rem 0rem}.experience-timeline-track{position:absolute;top:1.2rem;left:calc(100% / 6);right:calc(100% / 6);height:1px;background:linear-gradient(90deg,#ffffff0f,#ffffff2e);pointer-events:none;z-index:0}.experience-timeline-progress{display:block;height:100%;background:linear-gradient(90deg,#ff8f2a66,#ff8f2af2);box-shadow:0 0 12px #ff8f2a33;transition:width .3s cubic-bezier(.2,.7,.2,1)}.experience-timeline-button{position:relative;z-index:1;display:grid;gap:.35rem;align-content:start;min-height:8rem;padding:.75rem 1rem 1rem;border:1px solid var(--border-soft);border-radius:1.15rem;background:linear-gradient(180deg,#ffffff08,#fff0),var(--surface-1);color:var(--text-primary);text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease,color .18s ease}.experience-timeline-button:after{content:"";position:absolute;right:1rem;bottom:.75rem;left:1rem;height:2px;border-radius:999px;background:linear-gradient(90deg,#ff8f2a33,#ff8f2af2);transform:scaleX(.18);transform-origin:left center;opacity:0;transition:transform .22s ease,opacity .22s ease}.experience-timeline-button:hover,.experience-timeline-button:focus-visible{border-color:#ffffff29;background:linear-gradient(180deg,#ffffff0a,#fff0),#111114fa;transform:translateY(-1px)}.experience-timeline-button:focus-visible{outline:none;box-shadow:0 0 0 1px #ff8f2a57,0 0 0 4px #ff8f2a1f}.experience-timeline-button-active{border-color:#ff8f2a52;background:linear-gradient(180deg,#ff8f2a1f,#fff0 80%),var(--surface-1);box-shadow:inset 0 1px #ffffff0a,0 20px 50px #0000002e}.experience-timeline-button-active:after{opacity:1;transform:scaleX(1)}.experience-timeline-dot{width:.9rem;height:.9rem;margin-bottom:.35rem;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:#050505fa;box-shadow:0 0 #ff8f2a00,0 0 0 4px #050505fa;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease,transform .18s ease}.experience-timeline-button-active .experience-timeline-dot{border-color:#ff8f2af2;background:var(--accent);box-shadow:0 0 0 3px #ff8f2a1f,0 0 16px #ff8f2a33;transform:scale(1.04)}.experience-timeline-step{color:var(--text-muted);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.experience-timeline-title{font-size:1rem;font-weight:600;line-height:1.4;letter-spacing:-.02em}.experience-timeline-meta{color:var(--text-secondary);font-size:.9rem;line-height:1.6}.experience-panel-shell{position:relative}.experience-card{display:grid;gap:1.5rem;min-height:20rem;padding:clamp(1.5rem,3vw,2rem);background:linear-gradient(180deg,#ff8f2a14,#fff0 24%),var(--surface-1);border:1px solid rgba(255,143,42,.14);border-radius:1.25rem;box-shadow:0 20px 50px #0003;animation:experienceCardIn .36s cubic-bezier(.2,.7,.2,1)}.experience-card-top{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}.experience-card-header{display:grid;gap:.8rem}.experience-card-header h3{margin:0;color:var(--text-primary);font-size:clamp(1.2rem,2.6vw,1.55rem);letter-spacing:-.03em}.experience-card-header p:last-child{margin:0;color:var(--text-secondary);line-height:1.8;max-width:40rem}.experience-card-aside{display:grid;gap:.8rem;padding-left:1.25rem;border-left:1px solid var(--border-soft)}.experience-highlights{max-width:52rem}.about-layout{display:grid;gap:2rem}.about-top{display:grid;gap:2rem;grid-template-columns:minmax(0,1.2fr) auto;align-items:center}.about-copy{min-width:0}.about-intro{margin:0;max-width:54rem;color:var(--text-secondary);font-size:clamp(1rem,1.6vw,1.08rem);line-height:1.9}.about-photo-wrap{display:grid;place-items:center;width:clamp(11rem,20vw,14.5rem);aspect-ratio:1}.about-photo{width:100%;height:100%;object-fit:cover;border-radius:999px;border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 50px #0000003d}.info-grid{display:grid;gap:1.25rem}.info-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.info-card,.project-card,.education-card,.contact-card{background:linear-gradient(180deg,#ffffff05,#fff0),var(--surface-1);border:1px solid var(--border-soft);border-radius:1.25rem;box-shadow:0 20px 50px #0003}.info-card{padding:1.35rem}.info-card h3,.project-card h3,.featured-project-card h3,.education-overview h3{margin:0 0 .7rem;color:var(--text-primary);font-size:1.05rem;letter-spacing:-.02em}.info-card p,.project-card-header p,.contact-copy p,.education-meta p:last-child{margin:0;color:var(--text-secondary);line-height:1.75}.project-card{display:grid;gap:1.35rem;padding:1.5rem}.featured-project-card{display:grid;gap:1.5rem;padding:clamp(1.5rem,3vw,2rem);margin-bottom:1.25rem;background:linear-gradient(180deg,#ff8f2a0f,#fff0 28%),var(--surface-1);border:1px solid rgba(255,143,42,.14);border-radius:1.25rem;box-shadow:0 20px 50px #0003}.featured-project-main,.featured-project-body{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}.featured-project-summary{display:grid;gap:.8rem;padding-left:1.25rem;border-left:1px solid var(--border-soft)}.featured-project-summary p,.project-context{margin:0;color:var(--text-secondary);line-height:1.75}.secondary-project-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.project-card-secondary{min-height:100%}.project-title-row{display:grid;gap:1rem;grid-template-columns:auto minmax(0,1fr);align-items:center}.project-title-row-featured{align-items:start}.project-logo-frame{display:grid;place-items:center;width:4.1rem;aspect-ratio:1;padding:.55rem;border-radius:1rem;background:linear-gradient(180deg,#ffffff08,#fff0),#ffffff05;border:1px solid rgba(255,255,255,.08);overflow:hidden}.project-logo-frame-featured{width:5rem;border-radius:1.1rem}.project-logo-frame-placeholder{background:linear-gradient(180deg,#ff8f2a14,#fff0),#ffffff05}.project-logo-image{width:100%;height:100%;object-fit:contain;border-radius:.7rem}.project-logo-placeholder{color:#ffffff9e;font-size:.9rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.project-card-header,.project-card-block{display:grid;gap:.8rem}.detail-label{margin:0;color:var(--text-muted);font-size:.76rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.tag-row{display:flex;flex-wrap:wrap;gap:.65rem}.tag-pill{display:inline-flex;align-items:center;min-height:2rem;padding:.35rem .75rem;border:1px solid rgba(255,143,42,.2);border-radius:999px;background:var(--accent-soft);color:#ffd2ae;font-size:.88rem;line-height:1.2}.project-highlights{margin:0;padding-left:1.15rem;color:var(--text-secondary);line-height:1.7}.project-highlights li+li{margin-top:.55rem}.project-links{display:flex;flex-wrap:wrap;gap:1rem;padding-top:.2rem}.text-link{color:var(--text-primary);text-decoration:none;border-bottom:1px solid rgba(255,143,42,.45);padding-bottom:.18rem;transition:color .18s ease,border-color .18s ease}.text-link:hover,.text-link:focus-visible{color:#ffd2ae;border-color:var(--accent)}.projects-footer{display:flex;justify-content:center;margin-top:1.5rem}.projects-github-button{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:2.9rem;padding:.75rem 1.15rem;border:1px solid rgba(255,143,42,.24);border-radius:999px;background:#ff8f2a14;color:var(--text-primary);text-decoration:none;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}.projects-github-button:hover,.projects-github-button:focus-visible{background:#ff8f2a1f;border-color:#ff8f2a61;color:#ffd2ae;transform:translateY(-1px)}.projects-github-button-icon{width:1rem;height:1rem;flex:0 0 auto}.education-card{display:grid;gap:1.5rem;padding:clamp(1.5rem,3vw,2rem)}.education-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:1.25rem}.education-overview{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.education-location{margin:0;color:var(--text-secondary);line-height:1.7}.education-meta{display:grid;gap:1.25rem}.education-coursework{display:grid;gap:.8rem}.contact-layout{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start}.contact-copy{display:none;padding-top:.2rem}.contact-card{justify-self:center;width:min(100%,42rem);overflow:hidden}.contact-row{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;padding:1.1rem 1.25rem;color:var(--text-primary);text-decoration:none;border-bottom:1px solid var(--border-soft);transition:background-color .18s ease,color .18s ease}.contact-row:last-child{border-bottom:0}.contact-row:hover,.contact-row:focus-visible{background:#ffffff08;color:#ffd2ae}.contact-value{color:var(--text-secondary);text-align:right;word-break:break-word}@media(max-width:960px){.info-grid,.experience-card-top,.featured-project-main,.featured-project-body,.secondary-project-grid,.education-grid,.education-overview,.contact-layout{grid-template-columns:1fr}}@media(max-width:720px){.content-stack{padding-bottom:4rem}.content-section{padding:3.25rem 0}.about-top{gap:1.1rem 1rem;grid-template-columns:minmax(0,1fr) auto;align-items:start}.about-copy{display:contents}.about-top .section-header{grid-column:1;grid-row:1;margin-bottom:0}.about-intro{grid-column:1 / -1;grid-row:2;max-width:none}.about-photo-wrap{grid-column:2;grid-row:1;align-self:start;width:clamp(6.75rem,24vw,8rem)}.project-card,.education-card,.featured-project-card,.experience-card{padding:1.25rem}.project-title-row{align-items:start}.experience-timeline-shell{margin-inline:-.2rem;padding-bottom:.4rem}.experience-timeline{width:100%}.experience-card{min-height:auto}.experience-card-aside{padding-left:0;border-left:0;padding-top:.1rem}.contact-row{flex-direction:column;align-items:flex-start}.contact-value{text-align:left}}@keyframes drawField{to{stroke-dashoffset:0}}@keyframes baseFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes experienceCardIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.hero-section{--hero-pad-inline: 0rem;--hero-caption-space: 0rem;--hero-lift: clamp(.75rem, 2.5vh, 1.5rem)}.baseball-field{width:min(100%,34rem,calc(100svh - (var(--hero-pad-block) * 2) - var(--hero-caption-space)))}.mound-label{fill:#ff8f2ac2;font-size:2.5rem;font-weight:700;letter-spacing:.05em;filter:drop-shadow(0 10px 10px rgba(0,0,0,1)) drop-shadow(0 18px 18px rgba(0,0,0,1)) drop-shadow(0 0 10px rgba(255,143,42,.16))}.base-label{font-size:1.15rem}.hero-instruction{font-size:.76rem;width:min(100%,18rem)}.experience-timeline-shell{overflow-x:visible;padding-inline:0}.experience-timeline{width:100%;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.experience-timeline-button{min-height:0;width:100%;max-width:4rem;aspect-ratio:1;margin:0 auto;padding:0;place-items:center;justify-items:center;text-align:center;border:0;border-radius:999px;background:transparent;box-shadow:none;transform:none}.experience-timeline-button:after{display:none}.experience-timeline-button:hover,.experience-timeline-button:focus-visible,.experience-timeline-button-active{background:transparent;border-color:transparent;box-shadow:none;transform:none}.experience-timeline-dot{width:1rem;height:1rem;margin-bottom:0;border-color:#ffffff38;box-shadow:0 0 0 8px #ffffff08,0 0 #ff8f2a00}.experience-timeline-button-active .experience-timeline-dot{box-shadow:0 0 0 8px #ff8f2a1f,0 0 18px #ff8f2a3d}.experience-timeline-step,.experience-timeline-title,.experience-timeline-meta{display:none}}@media(prefers-reduced-motion:reduce){.field-arc,.field-diamond,.base-visual{animation:none;stroke-dashoffset:0}[data-reveal]{opacity:1;transform:none;transition:none}.base-hover-ring,.base-shape,.base-label{transition:none}.experience-timeline-progress,.experience-timeline-button,.experience-timeline-dot,.experience-timeline-button:after,.experience-card{transition:none;animation:none}}:root{font-family:Sora,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#fff;background-color:#050505;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1rem}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(circle at top,rgba(255,128,0,.12),transparent 22%),radial-gradient(circle at 20% 30%,rgba(255,255,255,.04),transparent 18%),linear-gradient(180deg,#050505,#0b0b0d 45%,#050505);color:#fff;overflow-x:hidden;overscroll-behavior-y:contain}button,a{color:inherit}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
