*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;background-color:#fff}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;background-color:#fff}#root{min-height:100vh}:root{--bg-primary: #ffffff;--bg-secondary: #f5f5f7;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--accent: #0071e3;--accent-hover: #0077ed;--gold-gradient: linear-gradient(135deg, #f7d98b 0%, #d4a537 55%, #b8862b 100%);--gold-glow: 0 0 18px rgba(212, 165, 55, .45);--border: rgba(0, 0, 0, .1);--hover: rgba(0, 0, 0, .04);--space-section: clamp(2rem, 6vw, 3.6rem);--gutter: clamp(1rem, 4vw, 2rem);--gap-lg: 1.5rem;--gap-md: 1rem;--gap-sm: .5rem;--radius: 12px;--shadow-card: 0 4px 14px rgba(0, 0, 0, .08);--nav-h: 56px}.app{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-primary);color:var(--text-primary)}.app>.page{flex:1;padding-top:var(--nav-h)}.nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--nav-h);display:flex;align-items:center;background:var(--bg-primary);border-bottom:1px solid var(--border)}.nav-content{width:100%;margin:0 auto;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;position:relative}.nav-menu-backdrop{position:fixed;inset:0;z-index:1}.nav-hamburger{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;background:none;border:none;cursor:pointer;position:relative;z-index:2}.nav-brand{position:relative;z-index:2;color:var(--text-primary);font-size:1.05rem;font-weight:700;letter-spacing:.02em;text-decoration:none;transition:color .2s ease}.nav-brand:hover{color:var(--accent)}.nav-brand{display:inline-flex;align-items:center;gap:.45rem}.nav-sig{height:34px;width:auto;overflow:visible;flex-shrink:0}.nav-sig path{fill:none;stroke:currentColor;stroke-width:36;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 2;stroke-dashoffset:0}.nav-brand.is-signing .nav-sig path{animation:signature-draw 1.5s linear both}.nav-brand.is-signing .nav-brand-text{animation:brand-in .55s cubic-bezier(.22,1,.36,1) 1.15s both}@keyframes brand-in{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}@keyframes signature-draw{0%{stroke-dashoffset:1;opacity:0}0.267%{opacity:1}0.833%{stroke-dashoffset:.9982}1.667%{stroke-dashoffset:.9943}2.500%{stroke-dashoffset:.9888}3.333%{stroke-dashoffset:.9822}4.167%{stroke-dashoffset:.9747}5.000%{stroke-dashoffset:.9665}5.833%{stroke-dashoffset:.9579}6.667%{stroke-dashoffset:.9488}7.500%{stroke-dashoffset:.9395}8.333%{stroke-dashoffset:.93}9.167%{stroke-dashoffset:.9203}10.000%{stroke-dashoffset:.9105}10.833%{stroke-dashoffset:.9006}11.667%{stroke-dashoffset:.8907}12.500%{stroke-dashoffset:.8808}13.333%{stroke-dashoffset:.8709}14.167%{stroke-dashoffset:.8616}15.000%{stroke-dashoffset:.8552}15.833%{stroke-dashoffset:.8483}16.667%{stroke-dashoffset:.8406}17.500%{stroke-dashoffset:.8325}18.333%{stroke-dashoffset:.8243}19.167%{stroke-dashoffset:.8167}20.000%{stroke-dashoffset:.808}20.833%{stroke-dashoffset:.7981}21.667%{stroke-dashoffset:.7888}22.500%{stroke-dashoffset:.7802}23.333%{stroke-dashoffset:.7727}24.167%{stroke-dashoffset:.7657}25.000%{stroke-dashoffset:.7592}25.833%{stroke-dashoffset:.7538}26.667%{stroke-dashoffset:.7495}27.500%{stroke-dashoffset:.7453}28.333%{stroke-dashoffset:.7399}29.167%{stroke-dashoffset:.7328}30.000%{stroke-dashoffset:.7244}30.833%{stroke-dashoffset:.7155}31.667%{stroke-dashoffset:.7062}32.500%{stroke-dashoffset:.6972}33.333%{stroke-dashoffset:.6885}34.167%{stroke-dashoffset:.6787}35.000%{stroke-dashoffset:.6695}35.833%{stroke-dashoffset:.6611}36.667%{stroke-dashoffset:.6535}37.500%{stroke-dashoffset:.6446}38.333%{stroke-dashoffset:.6345}39.167%{stroke-dashoffset:.6243}40.000%{stroke-dashoffset:.614}40.833%{stroke-dashoffset:.6039}41.667%{stroke-dashoffset:.5939}42.500%{stroke-dashoffset:.5841}43.333%{stroke-dashoffset:.5766}44.167%{stroke-dashoffset:.5724}45.000%{stroke-dashoffset:.5683}45.833%{stroke-dashoffset:.5632}46.667%{stroke-dashoffset:.5573}47.500%{stroke-dashoffset:.5492}48.333%{stroke-dashoffset:.539}49.167%{stroke-dashoffset:.5287}50.000%{stroke-dashoffset:.5184}50.833%{stroke-dashoffset:.5082}51.667%{stroke-dashoffset:.4979}52.500%{stroke-dashoffset:.4876}53.333%{stroke-dashoffset:.4774}54.167%{stroke-dashoffset:.4671}55.000%{stroke-dashoffset:.4568}55.833%{stroke-dashoffset:.4465}56.667%{stroke-dashoffset:.4363}57.500%{stroke-dashoffset:.4274}58.333%{stroke-dashoffset:.4213}59.167%{stroke-dashoffset:.416}60.000%{stroke-dashoffset:.4118}60.833%{stroke-dashoffset:.4078}61.667%{stroke-dashoffset:.4012}62.500%{stroke-dashoffset:.3916}63.333%{stroke-dashoffset:.3816}64.167%{stroke-dashoffset:.3715}65.000%{stroke-dashoffset:.3613}65.833%{stroke-dashoffset:.351}66.667%{stroke-dashoffset:.3409}67.500%{stroke-dashoffset:.3318}68.333%{stroke-dashoffset:.3244}69.167%{stroke-dashoffset:.3151}70.000%{stroke-dashoffset:.3052}70.833%{stroke-dashoffset:.295}71.667%{stroke-dashoffset:.2848}72.500%{stroke-dashoffset:.2747}73.333%{stroke-dashoffset:.267}74.167%{stroke-dashoffset:.2625}75.000%{stroke-dashoffset:.2575}75.833%{stroke-dashoffset:.2517}76.667%{stroke-dashoffset:.2457}77.500%{stroke-dashoffset:.2399}78.333%{stroke-dashoffset:.2347}79.167%{stroke-dashoffset:.23}80.000%{stroke-dashoffset:.2251}80.833%{stroke-dashoffset:.2198}81.667%{stroke-dashoffset:.2136}82.500%{stroke-dashoffset:.2047}83.333%{stroke-dashoffset:.1952}84.167%{stroke-dashoffset:.1871}85.000%{stroke-dashoffset:.1805}85.833%{stroke-dashoffset:.172}86.667%{stroke-dashoffset:.1622}87.500%{stroke-dashoffset:.152}88.333%{stroke-dashoffset:.1418}89.167%{stroke-dashoffset:.1316}90.000%{stroke-dashoffset:.1214}90.833%{stroke-dashoffset:.1112}91.667%{stroke-dashoffset:.1011}92.500%{stroke-dashoffset:.0909}93.333%{stroke-dashoffset:.0808}94.167%{stroke-dashoffset:.0707}95.000%{stroke-dashoffset:.0605}95.833%{stroke-dashoffset:.0504}96.667%{stroke-dashoffset:.0403}97.500%{stroke-dashoffset:.0302}98.333%{stroke-dashoffset:.0202}99.167%{stroke-dashoffset:.0101}100.000%{stroke-dashoffset:0}}@media(prefers-reduced-motion:reduce){.nav-brand.is-signing .nav-sig path,.nav-brand.is-signing .nav-brand-text{animation:none}}.nav-hamburger span{display:block;width:22px;height:2px;background:var(--text-primary);border-radius:1px;transition:transform .25s ease,opacity .25s ease}.nav-hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-hamburger.open span:nth-child(2){opacity:0}.nav-hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-menu-panel{position:absolute;top:calc(100% + .5rem);right:var(--gutter);min-width:220px;display:flex;flex-direction:column;gap:.25rem;background:#fffffffa;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:1rem;padding:.75rem;box-shadow:0 12px 32px #0000001f;opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:2}.nav-menu-panel.open{opacity:1;transform:translateY(0);pointer-events:auto}.nav-menu-panel button,.nav-menu-panel a{background:none;border:none;color:var(--text-primary);font-size:.85rem;font-weight:500;letter-spacing:.05em;text-decoration:none;cursor:pointer;text-align:left;padding:.5rem .75rem .5rem 1.5rem;border-radius:.5rem;transition:background .2s ease,color .2s ease}.nav-menu-panel button:hover,.nav-menu-panel a:hover{color:var(--accent);background:var(--hover)}.nav-menu-group-label{font-size:.7rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.05em;padding:.6rem .75rem .1rem}.hero{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:calc(var(--space-section) * 1.5) var(--gutter) var(--gap-lg)}.social-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;transition:transform .2s ease,opacity .2s ease}.social-icon svg{width:28px;height:28px}.social-icon:hover{transform:translateY(-2px);opacity:.8}.scroll-arrow{margin-top:var(--gap-md);display:inline-flex;padding:.5rem;background:none;border:none;color:var(--text-secondary);cursor:pointer;animation:bounce 2s infinite}.scroll-arrow:hover{color:var(--accent)}@media(prefers-reduced-motion:reduce){.scroll-arrow{animation:none}}.page{position:relative;background:var(--bg-primary)}.hero-content{width:100%;max-width:900px;display:flex;flex-direction:column;align-items:center;text-align:center}.hire-content{max-width:480px}.hire-title{margin:0;font-size:clamp(1.6rem,5vw,2rem);font-weight:600}.hire-restored{color:var(--accent)}.hire-subtitle{margin:.25rem 0 var(--gap-md);font-size:.9rem;color:var(--text-secondary)}.hire-form{display:flex;flex-direction:column;gap:var(--gap-sm)}.hire-form input,.hire-form textarea{width:100%;padding:.7rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);font:inherit;font-size:16px;color:var(--text-primary);resize:vertical}.hire-form input:focus,.hire-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0071e326}.hire-form .hire-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.hire-submit{align-self:center;margin-top:var(--gap-sm);min-width:10rem;justify-content:center}.hire-submit:disabled{opacity:.7;cursor:progress}.hire-error{margin:0;font-size:.85rem;color:#c4302b}.hire-alt{margin:var(--gap-md) 0 0;font-size:.8rem;text-align:center;color:var(--text-secondary)}.hire-error a,.hire-alt a{color:var(--accent)}.hire-sent{display:flex;flex-direction:column;align-items:center;gap:var(--gap-sm);padding:var(--gap-lg) 0 var(--gap-sm);text-align:center}.hire-sent h3{margin:0;font-size:1.4rem}.hire-sent p{margin:0 0 var(--gap-sm);color:var(--text-secondary)}.nfc-greeting{margin:0 0 var(--gap-md);color:var(--accent);font-size:clamp(.95rem,2.4vw,1.1rem);font-weight:500;line-height:1.4;text-shadow:0 0 14px rgba(0,113,227,.35);animation:greeting-bob 1.3s cubic-bezier(.22,1,.36,1) .15s both}@keyframes greeting-bob{0%{opacity:0;transform:translateY(16px);filter:blur(4px)}55%{opacity:1;transform:translateY(-5px);filter:blur(0)}78%{transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.nfc-greeting{animation:none}}.hero-title{font-size:clamp(2.6rem,10vw,6rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;margin-bottom:var(--gap-lg);white-space:nowrap;display:flex;justify-content:center}.hero-title .typewriter-text{display:inline-block;position:relative}.hero-title .typed-content{display:inline-block}.hero-title .cursor{font-weight:300;position:absolute;right:-.6em}.hero-title .cursor.blink{animation:blink 1s step-end infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.hero-tagline{margin-top:calc(var(--gap-lg) * -.5);margin-bottom:var(--gap-lg);font-size:clamp(1rem,3.2vw,1.2rem);color:var(--text-secondary)}.hero-socials{display:flex;justify-content:center;gap:var(--gap-md);margin-bottom:var(--gap-lg)}.hero-ctas{display:flex;flex-direction:column;align-items:center;gap:var(--gap-md)}.btn{--btn-h: 32px;--btn-fs: .9rem;display:inline-flex;align-items:center;justify-content:center;gap:.4em;height:var(--btn-h);padding:0 1.6em;border:none;border-radius:999px;font:inherit;font-size:var(--btn-fs);font-weight:500;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease}.btn svg{flex-shrink:0;width:1.1em;height:1.1em}.btn-lg{--btn-h: 40px;--btn-fs: 1rem;padding:0 2.2em}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary)}.btn-secondary:hover{background:#e8e8ed}.btn-gold{background:var(--gold-gradient);color:#3b2a05;font-weight:600;box-shadow:var(--gold-glow)}.btn-gold:hover{box-shadow:0 0 26px #d4a537a6;transform:translateY(-1px)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;border:none;border-radius:50%;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background .2s ease,color .2s ease}.icon-btn:hover{background:#e8e8ed;color:var(--accent)}.section{scroll-margin-top:var(--nav-h);display:flex;align-items:center;padding:var(--space-section) var(--gutter) calc(var(--space-section) * .75)}.section-content{max-width:1100px;margin:0 auto;width:100%}.section-label{font-size:clamp(4rem,8vw,8rem);font-weight:700;opacity:.08;line-height:1}.section-title{font-size:clamp(1.6rem,5vw,2.4rem);font-weight:600;letter-spacing:-.01em;margin-bottom:var(--gap-lg)}.section-subtitle{font-size:.95rem;color:var(--text-secondary);margin-top:calc(var(--gap-lg) * -.6);margin-bottom:var(--gap-lg)}.section-subtitle a{color:var(--accent);text-decoration:none}.intro-section{padding-top:0}.intro-text{max-width:560px;margin:0 auto;font-size:1.05rem;line-height:1.7;color:var(--text-secondary);text-align:center}.intro-signature{max-width:560px;margin:var(--gap-sm) auto 0;text-align:right;font-weight:500;color:var(--text-primary)}.carousel{display:flex;align-items:center;gap:1.5rem}.carousel-stage{position:relative;flex:1;aspect-ratio:16 / 9;border-radius:1rem;overflow:hidden;background:var(--bg-primary);box-shadow:0 20px 50px #00000026}.carousel-slide{position:absolute;inset:0;opacity:0;transition:opacity .8s ease;pointer-events:none}.carousel-slide.active{opacity:1;pointer-events:auto}.carousel-image{position:relative;width:100%;height:100%;object-fit:cover}.carousel-image-portrait{object-fit:contain;padding:1.5rem 0}.carousel-image-bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:blur(30px) brightness(.7);transform:scale(1.15)}.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:3rem 2rem 1.75rem;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.75) 0%,rgba(0,0,0,.35) 45%,transparent 100%)}.carousel-index{font-family:Courier New,monospace;font-size:.85rem;font-weight:700;letter-spacing:.1em;opacity:.9}.carousel-index-total{opacity:.6}.carousel-subtitle{font-size:clamp(1.25rem,3vw,2rem);font-weight:700;margin:.25rem 0 .4rem;line-height:1.15}.carousel-location{display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:500;opacity:.92}.carousel-date{opacity:.7}.carousel-arrow{flex-shrink:0;width:48px;height:48px;border-radius:50%;border:1px solid var(--border);background:var(--bg-primary);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s ease}.carousel-arrow:hover{background:var(--text-primary);color:var(--bg-primary);border-color:var(--text-primary);transform:scale(1.08)}.carousel-dots{display:flex;justify-content:center;gap:.6rem;margin-top:1.75rem}.carousel-dot{width:10px;height:10px;padding:0;border:none;border-radius:50%;background:var(--border);cursor:pointer;transition:all .3s ease}.carousel-dot:hover{background:var(--text-secondary)}.carousel-dot.active{background:var(--accent);width:28px;border-radius:5px}.tag{padding:.25rem .75rem;background:var(--bg-secondary);border-radius:.25rem;font-size:.875rem;color:var(--text-secondary)}.contact-wrapper{display:flex;align-items:flex-start;justify-content:space-between;gap:4rem}.contact-content{flex:1;max-width:600px}.polaroid{background:#fff;padding:1.5rem 1.5rem 4rem;box-shadow:0 8px 20px #0003;transform:rotate(4deg);transition:transform .3s ease;flex-shrink:0}.polaroid:hover{transform:rotate(0);box-shadow:0 12px 30px #00000040}.polaroid-image{width:280px;height:350px;background:var(--bg-secondary);overflow:hidden;margin-bottom:1rem}.polaroid-image img{width:100%;height:100%;object-fit:cover}.polaroid-caption{text-align:center;font-size:1rem;color:#333;font-family:Courier New,monospace;font-style:italic}.contact-text{font-size:1.25rem;line-height:1.7;color:var(--text-secondary);margin-bottom:3rem}.contact-links{display:flex;flex-direction:column;gap:1.5rem}.contact-link{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 2rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:.75rem;text-decoration:none;color:var(--text-primary);font-size:1.25rem;font-weight:500;transition:all .3s ease}.contact-link:hover{border-color:var(--accent);transform:translate(8px);box-shadow:0 4px 16px #0000001a}.footer{background:var(--bg-primary);border-top:1px solid var(--border);padding:var(--gap-md) var(--gutter);flex-shrink:0;font-size:.8rem;color:var(--text-secondary)}.footer-content{max-width:1100px;margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-sm) var(--gap-lg)}.footer-name{color:var(--text-primary);font-weight:600}.footer-links{display:flex;gap:var(--gap-md)}.footer-links button,.footer-links a{background:none;border:none;padding:0;font:inherit;color:var(--text-secondary);text-decoration:none;cursor:pointer}.footer-links button:hover,.footer-links a:hover{color:var(--accent)}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.fade-in-up{animation:fadeInUp .8s ease forwards;opacity:0}.delay-1{animation-delay:.2s}.delay-2{animation-delay:.4s}.delay-3{animation-delay:.6s}.delay-4{animation-delay:.8s}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.subsection{margin-bottom:4rem}.subsection:last-child{margin-bottom:0}.subsection-title{font-size:1.75rem;font-weight:600;margin-bottom:2rem;color:var(--text-primary);opacity:.8}.project-details-btn{margin-left:auto}.experience-grid{display:flex;flex-direction:column;gap:2.5rem}.experience-card{padding:2rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:1rem;transition:all .3s ease}.experience-card:hover{border-color:var(--accent);box-shadow:0 8px 20px #0000001a}.experience-logo{width:48px;height:48px;margin-bottom:.75rem}.experience-card-compact .experience-header{margin-bottom:.75rem}.experience-card-compact .experience-description{margin-bottom:1rem}.experience-card-compact .experience-description li{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:0}.experience-logo{width:80px;height:80px;margin-bottom:1rem;border-radius:.5rem;overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center}.experience-logo img{width:100%;height:100%;object-fit:contain;padding:.5rem}.experience-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;gap:1rem}.experience-title{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.experience-personal-note{margin:0 0 1.25rem;padding:.9rem 1.25rem;border-left:3px solid var(--accent);background:var(--bg-secondary);color:var(--text-secondary);font-style:italic;font-size:.95rem;line-height:1.6;border-radius:0 .5rem .5rem 0}.experience-company{font-size:1rem;font-weight:500;color:var(--text-secondary);margin-bottom:.25rem}.experience-location{font-size:.9rem;color:var(--text-secondary);opacity:.8}.experience-period{font-size:.9rem;color:var(--text-secondary);font-weight:500;white-space:nowrap}.experience-description{list-style:none;padding-left:0;margin-bottom:1.5rem}.experience-description li{color:var(--text-secondary);line-height:1.6;margin-bottom:.75rem}.experience-description li:last-child{margin-bottom:0}.modal-overlay{position:fixed;inset:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:2000;padding:2rem;overflow-y:auto;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-primary);border-radius:1.5rem;max-width:800px;width:100%;max-height:90vh;overflow-y:auto;position:relative;animation:slideUp .3s ease;box-shadow:0 24px 48px #0003}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.modal-close{position:absolute;top:1.5rem;right:1.5rem;background:var(--hover);border:none;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10}.modal-close:hover{background:var(--border);transform:rotate(90deg)}.modal-header{padding:3rem 3rem 1.5rem;border-bottom:1px solid var(--border)}.modal-image-container{width:100%;max-width:800px;height:500px;background:var(--bg-secondary);border-radius:.5rem;margin-bottom:1.5rem;display:flex;align-items:center;justify-content:center;padding:2rem}.modal-image{width:100%;height:100%;object-fit:cover;border-radius:.25rem}.modal-title{font-size:2rem;font-weight:700;color:var(--text-primary)}.modal-body{padding:2rem 3rem 3rem}.modal-paragraph{color:var(--text-secondary);line-height:1.7;margin-bottom:1rem;font-size:1.05rem}.modal-paragraph:last-of-type{margin-bottom:2rem}.modal-images{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin:2rem 0}.modal-images img{width:100%;border-radius:.75rem;border:1px solid var(--border)}.modal-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.modal-links{display:flex;gap:1rem;flex-wrap:wrap}.experience-modal-content{max-width:1000px}.experience-modal-company{font-size:1.25rem;font-weight:600;color:var(--accent);margin-top:.5rem}.experience-company-link{color:var(--accent);text-decoration:none;transition:color .2s}.experience-company-link:hover{color:var(--accent);text-decoration:underline}.experience-modal-meta{color:var(--text-secondary);font-size:1rem;margin-top:.25rem}.teaching-gallery{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.teaching-gallery-stage{display:flex;align-items:center;gap:1rem}.teaching-gallery-image{flex:1;text-align:center}.teaching-gallery-image img{width:100%;max-height:420px;object-fit:cover;border-radius:.75rem}.teaching-gallery-caption{margin-top:.75rem;color:var(--text-secondary);font-size:.95rem}.book-modal-content{max-width:900px}.book-modal-header{display:flex;flex-direction:column;gap:.75rem;padding:3rem 3rem 2rem;border-bottom:1px solid var(--border)}.book-modal-title{font-size:2rem;font-weight:700;color:var(--text-primary);line-height:1.2}.book-modal-author{font-size:1.25rem;color:var(--text-secondary);font-style:italic}.book-modal-body{padding:2rem 3rem 3rem}.book-modal-section-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:1.5rem;margin-top:2rem}.book-modal-section-title:first-child{margin-top:0}.book-modal-paragraph{color:var(--text-secondary);line-height:1.8;font-size:1.0625rem;margin-bottom:1.25rem}.book-modal-paragraph:last-of-type{margin-bottom:0}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));grid-auto-flow:row dense;gap:var(--gap-lg) var(--gap-md)}.book-card{display:flex;flex-direction:column;gap:.1rem;width:100%;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.book-image-container{aspect-ratio:2 / 3;margin-bottom:.4rem;overflow:hidden;border:1px solid rgba(0,0,0,.12);border-radius:6px;background:var(--bg-secondary);box-shadow:var(--shadow-card);transition:box-shadow .2s ease,border-color .2s ease}.book-card.selected .book-image-container{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.book-image{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.book-card:hover .book-image{transform:scale(1.03)}.book-title{margin:0;font-size:.85rem;font-weight:600;line-height:1.3;color:var(--text-primary)}.book-author{margin:0;font-size:.75rem;font-style:italic;color:var(--text-secondary)}.book-status-compact{font-size:.62rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.book-status-compact.complete{color:#047857}.book-status-compact.in-progress{color:var(--accent)}.library-credit{font-size:.75rem}.book-detail-text{margin:.4rem 0 0;font-size:.85rem;line-height:1.6;color:var(--text-secondary)}.book-detail-takeaways{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;margin:.5rem 0 0;font-size:.82rem;color:var(--text-primary)}.live-icon{flex-shrink:0}.pulse-ring{animation:pulse 2s ease-out infinite;opacity:.6}.pulse-ring-1{animation-delay:0s}.pulse-ring-2{animation-delay:.4s}.pulse-ring-3{animation-delay:.8s}@keyframes pulse{0%{opacity:.8;transform:scale(.8)}50%{opacity:.4}to{opacity:0;transform:scale(1.2)}}.see-more-wrap{display:flex;justify-content:center;margin-top:var(--gap-sm)}.see-more-wrap.see-more-roomy{margin-top:var(--gap-lg)}.embla{position:relative}.embla-viewport{overflow:hidden;padding:.75rem 0 1rem}.embla-container{display:flex;touch-action:pan-y pinch-zoom;margin-left:calc(var(--gap-md) * -1)}.embla-slide{flex:0 0 auto;min-width:0;padding-left:var(--gap-md)}.embla-controls{display:flex;justify-content:flex-end;gap:var(--gap-sm);margin-top:var(--gap-sm)}.projects-slide{flex-basis:78%}.piano-slide{flex-basis:64%}.piano-slide .piano-card-visual{aspect-ratio:4 / 3}.piano-slide .piano-card-body{padding-top:.5rem}.piano-slide .piano-notes{display:none}.library-slide{flex-basis:45%}.experience-slide{flex-basis:88%}@media(min-width:600px){.projects-slide{flex-basis:45%}.piano-slide{flex-basis:320px}.library-slide{flex-basis:240px}.experience-slide{flex-basis:48%}}@media(min-width:1024px){.projects-slide,.experience-slide{flex-basis:33.333%}}@media(max-width:599px){.embla-centered .embla-slide{opacity:.35;transition:opacity .3s ease}.embla-centered .embla-slide.is-selected{opacity:1}}.embla-edge-arrow{position:absolute;top:50%;z-index:1;display:grid;place-items:center;width:32px;height:44px;padding:0;border:none;background:none;color:var(--text-primary);cursor:pointer;transform:translateY(-50%);transition:transform .2s ease}.embla-edge-arrow.prev{left:-12px}.embla-edge-arrow.next{right:-12px;animation:nudge 2.4s ease-in-out infinite}.embla-edge-arrow:hover{transform:translateY(-50%) scale(1.08)}@keyframes nudge{0%,70%,to{transform:translateY(-50%)}80%{transform:translate(4px,-50%)}90%{transform:translateY(-50%)}}@media(hover:hover)and (min-width:1200px){.embla-edge-arrow.prev{left:-48px}.embla-edge-arrow.next{right:-48px}}@media(prefers-reduced-motion:reduce){.embla-edge-arrow.next{animation:none}}.experience-slide{display:flex}.experience-review{flex:1;display:flex;flex-direction:column;gap:var(--gap-md);padding-right:var(--gap-md)}.experience-review-head{display:flex;gap:.75rem;align-items:flex-start}.experience-review-logo{width:40px;height:40px;flex-shrink:0;border-radius:.5rem;object-fit:contain;background:var(--bg-secondary)}.experience-review-title{font-size:1rem;font-weight:600;line-height:1.3}.experience-review-company{font-size:.9rem;color:var(--text-primary)}.experience-review-meta{font-size:.8rem;color:var(--text-secondary)}.experience-review-summary{font-size:.92rem;line-height:1.6;color:var(--text-secondary)}.experience-skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:var(--gap-sm)}.experience-skills .tag{white-space:nowrap;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.25;font-size:.8rem;padding:.3rem .5rem;border-radius:999px}.experience-review-actions{display:flex;flex-direction:column;align-items:flex-start;gap:var(--gap-sm);margin-top:auto}.experience-card-links{margin:.75rem 0}.text-link{align-self:flex-start;margin-top:auto;padding:0;background:none;border:none;font:inherit;font-size:.9rem;font-weight:500;color:var(--accent);cursor:pointer;text-decoration:none}.text-link:hover{text-decoration:underline}@media(hover:none){.embla-controls{display:none}}.project-card-compact{cursor:pointer;background:none;border:none;padding:0}.project-card-compact:hover{transform:none;box-shadow:none}.project-card-compact .project-thumb{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);border:1px solid rgba(0,0,0,.12);box-shadow:var(--shadow-card);transition:transform .3s ease}.project-card-compact:hover .project-thumb{transform:scale(1.02)}.project-card-compact .project-title{font-size:.95rem;font-weight:600;margin:.5rem 0 0}.project-filters{margin-bottom:var(--gap-md)}.project-index{display:flex;gap:var(--gap-sm);overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter) var(--gap-sm)}.project-index::-webkit-scrollbar{display:none}.project-index-item{position:relative;flex:0 0 auto;width:56px;height:56px;padding:0;border:1px solid rgba(0,0,0,.12);border-radius:var(--radius);overflow:hidden;cursor:pointer;background:var(--bg-secondary);transition:transform .2s ease}.project-index-item:hover,.project-index-item:focus-visible{transform:translateY(-2px)}.project-index-item img{width:100%;height:100%;object-fit:cover}.project-index-item span{position:absolute;left:4px;bottom:4px;padding:0 .35rem;border-radius:999px;background:#ffffffe6;font-size:.7rem;font-weight:600;color:var(--text-primary)}.project-list{display:flex;flex-direction:column;gap:calc(var(--space-section) * .75);margin-top:var(--gap-lg)}.project-entry{display:grid;gap:var(--gap-md);scroll-margin-top:calc(var(--nav-h) + var(--gap-md))}.project-media{position:relative}.project-media-viewport{overflow:hidden;border-radius:var(--radius);border:1px solid rgba(0,0,0,.12);box-shadow:var(--shadow-card)}.project-media-track{display:flex;touch-action:pan-y pinch-zoom}.project-media-slide{flex:0 0 100%;min-width:0;aspect-ratio:4 / 3;background:var(--bg-secondary)}.project-media-slide img{opacity:0;transition:opacity .35s ease}.project-media-slide img.is-loaded{opacity:1}.project-media-slide img,.project-media-slide video{display:block;width:100%;height:100%;object-fit:cover}.project-media-toggle{position:absolute;left:50%;bottom:var(--gap-sm);transform:translate(-50%);display:flex;padding:3px;border-radius:999px;background:#ffffffd1;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 2px 10px #0000001f}.project-media-toggle button{height:26px;padding:0 .9rem;border:none;border-radius:999px;background:none;font:inherit;font-size:.75rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;cursor:pointer;transition:background .2s ease,color .2s ease}.project-media-toggle button.active{background:var(--text-primary);color:#fff}.project-entry-body{display:flex;flex-direction:column;gap:var(--gap-sm);min-width:0}.project-eyebrow{display:flex;align-items:center;gap:var(--gap-sm);margin:0;font-size:.66rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}.project-number{font-size:1rem;font-weight:700;letter-spacing:0;font-variant-numeric:tabular-nums;background:var(--gold-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.project-entry-title{margin:0;font-size:1.1rem;font-weight:600;line-height:1.2}.project-entry-summary{margin:0;font-size:.88rem;color:var(--text-secondary);line-height:1.5}.project-stats{display:flex;gap:var(--gap-lg);margin:.15rem 0}.project-stat{display:flex;flex-direction:column-reverse}.project-stat dd{margin:0;font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums}.project-stat dt{font-size:.7rem;color:var(--text-secondary)}.project-skills{display:flex;flex-wrap:wrap;gap:.4rem}.project-skills .tag{font-size:.72rem;padding:.2rem .6rem;border-radius:999px;white-space:nowrap}.project-entry-links{display:flex;flex-wrap:wrap;gap:var(--gap-sm);margin-top:var(--gap-sm)}.app-link{display:inline-flex;align-items:center;gap:.5rem;height:var(--btn-h, 32px);padding:0 1rem 0 .8rem;border:1px solid rgba(0,0,0,.14);border-radius:999px;background:var(--bg-primary);box-shadow:0 1px 3px #00000014;font-size:.85rem;font-weight:500;color:var(--text-primary);text-decoration:none;white-space:nowrap;transition:border-color .2s ease,box-shadow .2s ease}.app-link:hover{border-color:var(--accent);box-shadow:0 2px 8px #0071e326}.app-link:after{content:"↗";font-size:.8em;color:var(--text-secondary)}.project-story{margin-top:var(--gap-sm)}.project-story summary{display:inline-flex;align-items:center;gap:.35rem;list-style:none;font-size:.85rem;font-weight:500;color:var(--accent);cursor:pointer}.project-story summary::-webkit-details-marker{display:none}.project-story summary:after{content:"";width:.45em;height:.45em;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-.12em) rotate(45deg);transition:transform .2s ease}.project-story[open] summary:after{transform:translateY(.1em) rotate(-135deg)}.project-story p{margin:var(--gap-sm) 0 0;font-size:.85rem;line-height:1.6;color:var(--text-secondary)}.project-story[open] p{animation:fadeInUp .3s ease both}.project-toolbox-used{display:flex;flex-wrap:wrap;gap:.3rem}.project-toolbox-used button{min-width:2rem;height:24px;padding:0 .45rem;border:1px solid var(--border);border-radius:999px;background:none;font:inherit;font-size:.75rem;font-weight:600;color:var(--accent);cursor:pointer}.project-toolbox-used button:hover{background:var(--accent);border-color:var(--accent);color:#fff}@media(min-width:600px){.project-toolbox-tools{display:none}}@media(min-width:900px){.project-index{flex-wrap:wrap;overflow:visible;margin:0;padding:2px 0 0}.project-entry{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--gap-lg) calc(var(--gap-lg) * 1.5);align-items:start}}@media(prefers-reduced-motion:reduce){.project-media-slide img,.project-story[open] p{animation:none}}.piano-slide .piano-card,.library-slide .book-card{height:100%;justify-content:flex-start}.gallery-preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;text-decoration:none}.gallery-preview-tile{position:relative;aspect-ratio:1;border-radius:.5rem;overflow:hidden}.gallery-preview-tile img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.gallery-preview-grid:hover .gallery-preview-tile img{transform:scale(1.05)}.gallery-preview-overlay{position:absolute;inset:0;background:#0000008c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem}.list-controls{display:flex;align-items:center;gap:var(--gap-sm);margin-bottom:var(--gap-md)}.list-search{flex:1;display:flex;align-items:center;gap:.5rem;height:36px;padding:0 .85rem;border:1px solid var(--border);border-radius:999px;background:var(--bg-secondary);color:var(--text-secondary);transition:border-color .2s ease,box-shadow .2s ease}.list-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #0071e326}.list-search input{flex:1;min-width:0;height:100%;padding:0;border:none;background:none;font:inherit;font-size:16px;color:var(--text-primary);outline:none}.list-search input::placeholder{color:var(--text-secondary)}.list-search input::-webkit-search-cancel-button{cursor:pointer}.piano-filter-pills{display:flex;flex-wrap:wrap;gap:.5rem}.piano-filter-pill.active{background:var(--accent);color:#fff}.filter-toggle{position:relative;display:grid;place-items:center;flex:0 0 auto;width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--bg-primary);color:var(--text-primary);cursor:pointer}.filter-toggle.active{border-color:var(--accent);color:var(--accent)}.filter-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-size:.65rem;font-weight:600;line-height:16px}.filter-panel{display:flex;flex-direction:column;gap:.35rem;margin:calc(var(--gap-sm) * -1) 0 var(--gap-md);animation:fadeIn .2s ease}.filter-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .9rem}.filter-label{width:3.4rem;font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}.filter-option{padding:.2rem 0;border:none;background:none;font:inherit;font-size:.85rem;color:var(--text-secondary);cursor:pointer}.filter-option.active{color:var(--accent);font-weight:600}.piano-empty-state{color:var(--text-secondary);font-style:italic}.piano-group{margin-bottom:var(--space-section)}.piano-group-title{display:flex;align-items:baseline;gap:.4rem;margin-bottom:var(--gap-md);font-size:.95rem;font-weight:600}.piano-group-count{font-size:.75rem;font-weight:500;color:var(--text-secondary)}.piano-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-auto-flow:row dense;gap:var(--gap-lg) var(--gap-md)}.piano-card{display:flex;flex-direction:column;width:100%;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.piano-card-visual{position:relative;aspect-ratio:3 / 4;overflow:hidden;border:1px solid rgba(0,0,0,.12);border-radius:var(--radius);background:var(--bg-secondary);box-shadow:var(--shadow-card);transition:border-color .2s ease,box-shadow .2s ease}.piano-card.selected .piano-card-visual{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.piano-card-thumb{width:100%;height:100%;object-fit:cover;object-position:top;display:block;transition:transform .35s ease}.piano-card:hover .piano-card-thumb{transform:scale(1.03)}.piano-card-monogram{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3.5rem;font-weight:700;color:#0071e359;background:linear-gradient(160deg,var(--bg-secondary),var(--bg-primary))}.piano-card-body{display:flex;flex-direction:column;gap:.1rem;padding-top:.5rem}.piano-title{margin:0;font-size:.85rem;font-weight:600;line-height:1.3;color:var(--text-primary)}.piano-composer{margin:0;font-size:.75rem;font-style:italic;color:var(--text-secondary)}.piano-notes{margin:0;font-size:.7rem;color:var(--text-secondary);opacity:.8}.piano-status-compact{font-size:.62rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.piano-status-compact.performed{color:#047857}.piano-status-compact.in-progress{color:var(--accent)}.piano-status-compact.up-next{color:#4338ca}.piano-has-video{color:var(--text-secondary)}.piano-detail{position:relative;grid-column:1 / -1;display:flex;flex-direction:column;gap:.2rem;padding:var(--gap-md);border-radius:var(--radius);background:var(--bg-secondary);scroll-margin:calc(var(--nav-h) + var(--gap-md)) 0 var(--gap-md);animation:fadeInUp .25s ease both}.piano-detail-close{position:absolute;top:var(--gap-sm);right:var(--gap-sm);display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:50%;background:var(--bg-primary);color:var(--text-secondary);cursor:pointer}.piano-detail-title{margin:0;padding-right:2rem;font-size:1rem;font-weight:600}.piano-detail-composer{margin:0;font-size:.82rem;font-style:italic;color:var(--text-secondary)}.piano-detail-notes{margin:.2rem 0 0;font-size:.8rem;color:var(--text-secondary)}.piano-detail-links{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem;margin-top:.5rem}.piano-detail-links .text-link{margin-top:0;font-size:.85rem;text-decoration:none}.piano-detail-links .text-link:hover{text-decoration:underline}.piano-video-embed{position:relative;width:100%;max-width:560px;margin-top:var(--gap-sm);aspect-ratio:16 / 9;border-radius:var(--radius);overflow:hidden}.piano-video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:none}@media(prefers-reduced-motion:reduce){.piano-detail,.filter-panel{animation:none}}.strava-heatmap-wrap{display:flex;justify-content:center;overflow-x:auto;margin-bottom:2.5rem;padding-bottom:.5rem}.strava-heatmap-container{display:inline-block}.strava-heatmap-months{display:grid;gap:3px;margin-left:30px;margin-bottom:4px;height:14px}.strava-heatmap-month-label{font-size:.7rem;color:var(--text-secondary);white-space:nowrap}.strava-heatmap-body{display:flex;gap:6px}.strava-heatmap-day-labels{display:flex;flex-direction:column;gap:3px;width:24px;flex-shrink:0}.strava-heatmap-day-labels span{height:12px;font-size:.65rem;line-height:12px;color:var(--text-secondary)}.strava-heatmap{display:grid;grid-template-rows:repeat(7,12px);grid-auto-flow:column;gap:3px;width:max-content}.strava-heatmap-cell{width:12px;height:12px;border-radius:2px;background:color-mix(in srgb,var(--accent) calc(var(--intensity, 0) * 100%),var(--bg-secondary))}.strava-heatmap-cell-blank{background:transparent}.strava-map-wrap{border:1px solid var(--border);border-radius:1rem;overflow:hidden}.strava-map-loading{display:flex;align-items:center;justify-content:center;height:480px;color:var(--text-secondary);background:var(--bg-secondary);border-radius:1rem;border:1px solid var(--border)}.strava-photo-marker span{display:block;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-primary);box-shadow:0 0 0 2px #0071e366}.strava-map-popup-img{width:160px;height:120px;object-fit:cover;border-radius:.5rem;display:block;margin-bottom:.4rem}.strava-map-popup-summary{min-width:160px}.strava-map-popup-caption{font-size:.85rem;font-weight:600;color:#1a1a1a;margin:0 0 .2rem}.strava-map-popup-meta{font-size:.75rem;color:#4a4a4a;margin:0}.strava-map-wrap .leaflet-control-zoom a{color:#1a1a1a!important}.strava-map-wrap .leaflet-control-attribution{color:#4a4a4a;background:#fffc}.strava-map-wrap .leaflet-control-attribution a{color:#1a4d8f}.strava-activity-modal .book-modal-body{display:flex;flex-direction:column;gap:1.5rem}.strava-activity-stats{display:flex;gap:2rem;flex-wrap:wrap}.strava-activity-stats>div{display:flex;flex-direction:column}.strava-activity-stat-value{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.strava-activity-stat-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.strava-activity-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.strava-activity-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:.75rem}.strava-preview-layout{display:flex;flex-direction:column;gap:var(--gap-lg);margin-bottom:var(--gap-lg)}.strava-preview-map{height:240px;border-radius:var(--radius);overflow:hidden;cursor:pointer}.strava-preview-map .strava-map-wrap{border:none;border-radius:0}.strava-preview-stats{display:flex;justify-content:space-evenly;gap:var(--gap-md)}.strava-metric{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.15rem}.strava-metric-label{font-size:.8rem;color:var(--text-secondary)}.strava-metric-value{font-size:1.35rem;font-weight:700;line-height:1.2}@media(min-width:600px){.strava-preview-layout{flex-direction:row}.strava-preview-map{flex:0 0 70%;height:340px}.strava-preview-stats{flex:1;flex-direction:column;justify-content:center;gap:var(--gap-lg)}.strava-metric{align-items:flex-start;text-align:left}}.strava-heatmap-fit{display:grid;grid-template-rows:repeat(7,auto);grid-auto-flow:column;gap:2px;width:100%}.strava-heatmap-fit .strava-heatmap-cell{width:auto;height:auto;aspect-ratio:1}.strava-heatmap-fit-mobile{display:none}@media(max-width:599px){.strava-heatmap-fit-desktop{display:none}.strava-heatmap-fit-mobile{display:grid}}.strava-preview-map .strava-map-loading{height:100%}.strava-filters{margin-bottom:var(--gap-md)}.strava-subheading{font-size:1.15rem;font-weight:600;margin:calc(var(--space-section) * .8) 0 var(--gap-md)}.strava-table{width:100%;border-collapse:collapse;font-size:.9rem;font-variant-numeric:tabular-nums}.strava-table th{text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);padding:0 .5rem .5rem;border-bottom:1px solid var(--border)}.strava-table td{padding:.7rem .5rem;border-bottom:1px solid var(--border);vertical-align:middle}.strava-table tr.clickable{cursor:pointer}.strava-table tbody tr.clickable:hover td{background:var(--hover)}.strava-table th:first-child,.strava-table td:first-child{padding-left:0}.strava-col-num{text-align:right!important;white-space:nowrap}.strava-col-strong{font-weight:600;color:var(--text-primary)}td.strava-col-strong{white-space:nowrap}.strava-col-muted{color:var(--text-secondary);white-space:nowrap}.strava-col-sub{display:block;font-size:.8rem;color:var(--text-secondary)}.strava-col-medal{width:30px}.strava-medal{display:block}.strava-current{margin-left:.5rem;font-size:.7rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.strava-records{display:grid;align-items:start;gap:var(--gap-lg)}.strava-garage{display:flex;flex-direction:column;gap:var(--gap-lg)}.bike-slide{flex-basis:100%}.bike-figure img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius);border:1px solid rgba(0,0,0,.12);box-shadow:var(--shadow-card);display:block}.bike-figure figcaption{display:flex;flex-direction:column;margin-top:.5rem}.bike-name{font-weight:600}.bike-meta,.strava-moment-meta{font-size:.8rem;color:var(--text-secondary)}@media(min-width:768px){.strava-section:not(.strava-preview-section) .strava-preview-map{height:420px}.strava-garage{flex-direction:row;align-items:flex-start}.strava-garage-photos{flex:0 0 55%;min-width:0}.strava-garage-table{flex:1}.strava-records{grid-template-columns:1fr 1fr}}@media(max-width:599px){.strava-col-detail{display:none}}.hero-title.mobile-wrap{white-space:normal;display:block;text-align:center}.hero-title.mobile-wrap .typewriter-text{display:inline}.hero-title.mobile-wrap .cursor{position:static;display:inline;right:auto}@media(max-width:768px){.footer-content{flex-direction:column;text-align:center}.carousel{gap:.5rem}.carousel-arrow{width:38px;height:38px}.carousel-stage{aspect-ratio:4 / 5}.carousel-caption{padding:2.5rem 1.25rem 1.25rem}.project-details-btn{margin-left:0}.experience-header{flex-direction:column}.experience-period{align-self:flex-start}.modal-overlay{padding:1rem}.modal-header{padding:2rem 2rem 1rem}.modal-body{padding:1.5rem 2rem 2rem}.modal-close{top:1rem;right:1rem}.modal-image-container{height:250px;padding:1rem}.contact-wrapper{flex-direction:column;align-items:center;gap:2rem}.polaroid{transform:rotate(-2deg)}.polaroid-image{width:220px;height:280px}.books-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:var(--gap-md) .75rem}.book-modal-header{padding:2rem}.book-modal-body{padding:1.5rem 2rem 2rem}.book-modal-section-title{font-size:1.25rem}.gallery-preview-grid{grid-template-columns:repeat(2,1fr)}.piano-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--gap-md) .75rem}}
