#root,body,html{margin:0;padding:0}body{background-color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Courier New,monospace}.hero{animation:fadeIn 3s ease-out;background:radial-gradient(ellipse at bottom,#d9f1ff 0,#a6d4ff 100%);display:flex;flex-direction:column;font-family:Open Sans,sans-serif;justify-content:flex-start;min-height:clamp(640px,90vh,980px);overflow:hidden;padding-bottom:48px;padding-top:80px;position:relative}.hero-layout{align-items:flex-start;display:flex;gap:clamp(16px,4vw,40px);justify-content:center;margin:0 auto;max-width:1100px;padding:20px clamp(16px,5vw,40px) 16px;z-index:1}.hero-image-column{align-items:center;display:flex;flex-direction:column;gap:24px;justify-content:flex-start}.hero-image img{aspect-ratio:4/5;border-radius:20px;box-shadow:0 12px 28px #00000040;height:auto;object-fit:cover;-webkit-user-select:none;user-select:none;width:min(65vw,320px)}.hero-content{display:flex;flex-direction:column;max-width:600px;text-align:left}.hero-greeting{align-items:center;display:flex;height:20px;margin:0 0 10px}.greet-type{animation:typing 1.8s steps(14) forwards,blink .9s step-end 1.8s 2,caretOff .01s linear 3.6s forwards;border-right:1px solid #4b5563;color:#4b5563;display:inline-block;font-size:.95rem;letter-spacing:.3px;overflow:hidden;white-space:nowrap}@media (prefers-reduced-motion:reduce){.greet-type{animation:none;border-right:0}}@keyframes typing{0%{width:0}to{width:14ch}}@keyframes blink{0%,to{border-color:#0000}50%{border-color:#4b5563}}@keyframes caretOff{to{border-color:#0000}}.hero h1{text-wrap:balance;animation:fadeInText 2s ease-out forwards;color:#333;font-family:Dancing Script,cursive;font-size:clamp(1.9rem,6vw,3.5rem);line-height:1.2;margin-bottom:clamp(12px,2.5vw,20px)}.hero p{animation:fadeInText 2s ease-out .5s forwards;color:#444;font-size:clamp(.95rem,2.5vw,1.2rem);margin:0 0 clamp(16px,3vw,24px)}.projects-callout{align-items:center;background:none;border:none;color:#111827;cursor:pointer;display:flex;flex-direction:column;gap:12px;margin-top:48px;outline:none;padding:0;transition:transform .25s ease}.projects-callout:hover{transform:translateY(-4px) scale(1.03)}.projects-text{color:#111827;font-family:Dancing Script,cursive;font-size:clamp(1.4rem,4.5vw,2rem);font-weight:600;letter-spacing:.4px;text-shadow:0 1px 4px #0000001f}.projects-arrow{filter:drop-shadow(0 2px 4px rgba(0,0,0,.15));height:clamp(32px,7vw,50px);transform-origin:center;width:clamp(32px,7vw,50px)}.projects-arrow path{stroke:#111827;stroke-width:3.25;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:140;stroke-dashoffset:140;animation:arrowDraw 1.2s ease forwards,arrowBob 1.5s ease-in-out 1.2s infinite}@keyframes arrowDraw{to{stroke-dashoffset:0}}@keyframes arrowBob{0%,to{opacity:.8;transform:translateY(0)}50%{opacity:1;transform:translateY(10px)}}.hero-player{display:flex;justify-content:flex-start;margin-top:clamp(18px,4vw,40px)}.hero-player,.hero-player>*{max-width:600px;width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInText{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media screen and (max-width:992px){.hero{min-height:auto;padding-bottom:28px;padding-top:64px}.hero-layout{align-items:center;flex-direction:column;gap:20px;padding-bottom:12px;padding-top:52px;text-align:center}.hero-image img{aspect-ratio:4/5;margin:0 auto;width:220px}.hero-image-column{gap:14px;margin-top:8px}.hero-content{max-width:680px;text-align:center}.hero-greeting{height:18px;justify-content:center}.projects-callout{margin-top:22px}.hero-player{justify-content:center}}@media screen and (max-width:480px){.hero{padding-top:56px}.greet-type{animation:none!important;border-right:0!important;white-space:normal}.hero-image-column{gap:12px}}.shooting-stars{background:#0000;inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:0}:root{--shooting-time:2000ms}.night{height:100%;position:relative;transform:rotate(45deg);width:100%}.shooting_star{animation:tail 2s ease-in-out infinite,shooting 2s ease-in-out infinite;animation:tail var(--shooting-time) ease-in-out infinite,shooting var(--shooting-time) ease-in-out infinite;background:linear-gradient(-45deg,#3c50c8,#3c50c800);border-radius:999px;filter:drop-shadow(0 0 7px rgba(100,120,255,.85));height:2px;left:50%;position:absolute;top:50%;width:0}.shooting_star:after,.shooting_star:before{display:none}@keyframes tail{0%{width:0}30%{width:100px}to{width:0}}@keyframes shining{0%{width:0}50%{width:30px}to{width:0}}@keyframes shooting{0%{transform:translateX(0)}to{transform:translateX(1200px)}}.header{align-items:center;-webkit-backdrop-filter:saturate(1.2) blur(6px);backdrop-filter:saturate(1.2) blur(6px);background:#1d1f23;border-radius:9999px;box-shadow:0 8px 16px #00000040;color:#fff;display:flex;justify-content:space-between;left:50%;padding:6px clamp(14px,3.5vw,18px);position:fixed;top:calc(20px + env(safe-area-inset-top, 0px));transform:translateX(-50%);width:min(900px,calc(100% - clamp(16px, 6vw, 40px)));z-index:1000}@supports not (((-webkit-backdrop-filter:blur(6px)) or (backdrop-filter:blur(6px))) or (-webkit-backdrop-filter:blur(6px))){.header{background:#1d1f23fa}}.logo h1{color:#fff;font-family:Dancing Script,cursive;font-size:1.2rem;margin:0}.header-right{align-items:center;display:flex;min-width:0}.email{border-radius:9999px;color:#e5e7eb;font-family:Roboto,sans-serif;font-size:.85rem;letter-spacing:.3px;max-width:60vw;overflow:hidden;padding:6px 10px;text-decoration:none;text-overflow:ellipsis;transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.email:hover{opacity:.85;transform:translateY(-1px)}@media screen and (max-width:768px){.header{box-shadow:0 6px 12px #00000038;padding:5px 14px;top:calc(12px + env(safe-area-inset-top, 0px));width:calc(100% - 24px)}.logo h1{font-size:1rem}.email{font-size:.8rem;max-width:52vw}}@media screen and (max-width:420px){.email{background:#ffffff0a;border:1px solid #ffffff1f;font-size:0;max-width:none;padding:7px 10px}.email:before{content:"✉️";font-size:1rem;margin-right:6px;vertical-align:-1px}.email:after{color:#e5e7eb;content:"Email me";font-size:.85rem;letter-spacing:.2px}}.np-card{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);-webkit-backface-visibility:hidden;backface-visibility:hidden;background:linear-gradient(135deg,#ffffff29,#ffffff0d);border:1px solid #fff3;border-radius:20px;box-shadow:0 10px 30px #0000002e,inset 0 1px 0 #ffffff26;color:#111827;contain:layout paint;display:block;max-width:700px;overflow:hidden;padding:20px;text-decoration:none;transform:translateZ(0);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;width:100%;will-change:transform,box-shadow,border-color}.np-card:hover{border-color:#6366f18c;box-shadow:0 20px 40px #6366f147,inset 0 1px 0 #ffffff40;transform:translateY(-3px)}.np-card.playing{animation:npGlow 3s ease-in-out infinite}@keyframes npGlow{0%,to{box-shadow:0 12px 32px #6366f140,inset 0 1px 0 #ffffff26}50%{box-shadow:0 20px 48px #6366f159,inset 0 1px 0 #fff3}}.np-media{grid-gap:20px;align-items:center;display:grid;gap:20px;grid-template-columns:120px 1fr}.np-cover-wrap{background:#00000014;border-radius:16px;flex-shrink:0;height:120px;overflow:hidden;position:relative;width:120px}.np-cover{display:block;height:100%;object-fit:cover;width:100%}.np-cover--art{border-radius:16px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.25))}.np-cover--placeholder{background:linear-gradient(180deg,#e5e7eb,#d1d5db)}.np-meta{min-width:0}.np-title{-webkit-line-clamp:2;color:#111827;font-size:clamp(1rem,4vw,1.75rem);font-weight:600;line-height:1.2;margin:0 0 4px}.np-artist,.np-title{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.np-artist{-webkit-line-clamp:1;color:#374151;font-size:clamp(.8rem,3.5vw,1rem);font-weight:400;margin:0 0 14px}.np-times{color:#4b5563;display:flex;font-size:.85rem;gap:8px;justify-content:space-between;margin-bottom:8px}.np-times span{flex:0 0 auto}.np-track{background:#11182726;border-radius:999px;height:8px;overflow:hidden;position:relative}.np-track-fill{background:linear-gradient(90deg,#6366f1,#22d3ee);border-radius:999px;inset:0;position:absolute;transition:width .6s ease;width:0}.np-eq{bottom:10px;display:flex;gap:6px;left:10px;opacity:0;position:absolute;right:10px;transition:opacity .25s ease}.np-eq.on{opacity:1}.np-eq span{animation:npBar 1s ease-in-out infinite;background:#ffffffe6;border-radius:2px;flex:1 1;height:14px;transform-origin:bottom}.np-eq span:nth-child(2){animation-delay:.12s}.np-eq span:nth-child(3){animation-delay:.24s}.np-eq span:nth-child(4){animation-delay:.36s}@keyframes npBar{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.np-chip{align-items:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff8c;border:1px solid #ffffff59;border-radius:999px;display:inline-flex;font-size:.82rem;font-weight:700;gap:8px;line-height:1;margin-bottom:10px;padding:6px 12px}.np-chip--live{background:linear-gradient(#ffffffb3,#ffffffa6) padding-box,linear-gradient(90deg,#22d3ee,#6366f1) border-box;border:1px solid #0000;box-shadow:0 8px 18px #02061714,inset 0 1px 0 #fff9;color:#0b766d;isolation:isolate;position:relative}.np-chip--live .np-chip-icon{opacity:.95}.np-chip--live .np-chip-ring{background:radial-gradient(60% 80% at 20% 50%,#22d3ee33,#0000 70%),radial-gradient(60% 80% at 80% 50%,#6366f12e,#0000 70%);border-radius:inherit;filter:blur(10px);inset:-6px;position:absolute;z-index:-1}.np-chip--live .np-chip-bars{display:inline-flex;gap:3px;margin-left:4px}.np-chip--live .np-chip-bars i{animation:chipBar 1s ease-in-out infinite;background:linear-gradient(180deg,#22d3ee,#6366f1);border-radius:1px;height:10px;transform-origin:bottom;width:3px}.np-chip--live .np-chip-bars i:nth-child(2){animation-delay:.12s;height:12px}.np-chip--live .np-chip-bars i:nth-child(3){animation-delay:.24s;height:8px}@keyframes chipBar{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}.np-chip--paused{color:#6b7280}.np-chip--loading{color:#334155}.np-chip--error{color:#b91c1c}.np-spin{animation:npSpin 24s linear infinite;transform-origin:50% 50%}@keyframes npSpin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.np-card.playing,.np-chip-bars i,.np-eq span,.np-spin{animation:none!important}}@media (max-width:640px){.np-media{gap:14px;grid-template-columns:88px 1fr}.np-cover-wrap{height:88px;width:88px}.np-title{font-size:1.25rem}.np-artist{font-size:.9rem}.np-chip{font-size:.74rem;margin-bottom:8px;padding:4px 10px}}@media (max-width:480px){.np-card{border-radius:14px;padding:14px}.np-media{gap:10px;grid-template-columns:70px 1fr}.np-cover-wrap{height:70px;width:70px}}@media (max-width:360px){.np-media{gap:8px;grid-template-columns:60px 1fr}.np-cover-wrap{height:60px;width:60px}.np-chip{font-size:.7rem;padding:3px 8px}}.pr-heading{color:#1f2937;font-family:Dancing Script,cursive;font-size:clamp(1.8rem,5vw,2.6rem);margin:0 0 32px;text-align:center}.pr-grid{grid-gap:28px;display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin:0 auto;max-width:1240px;padding:0 16px}.pr-card{--rX:0deg;--rY:0deg;--px:50%;--py:50%;--tz:0px;--sc:1;background:#fff;border:1px solid #e5e7eb;border-radius:20px;box-shadow:0 10px 18px #0000000f,inset 0 1px 0 #fff9;color:inherit;display:flex;flex-direction:column;overflow:hidden;padding:22px 22px 18px;position:relative;text-decoration:none;transform:perspective(1000px) rotateX(var(--rX)) rotateY(var(--rY)) translateZ(var(--tz)) scale(var(--sc));transform-origin:center;transform-style:preserve-3d;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .23s ease,border-color .18s ease,filter .23s ease;will-change:transform}.pr-card:before{content:"";display:none}.pr-card.is-hovered{--tz:28px;--sc:1.035;border-color:#d1d5db;box-shadow:none;filter:saturate(1.02);z-index:2}.pr-card:focus-visible{--tz:0px;--sc:1;box-shadow:none;outline:2px solid #c7d2fe;outline-offset:4px}.pr-logo{transform:translateZ(24px)}.pr-titleWrap{transform:translateZ(18px)}.pr-meta{transform:translateZ(12px)}.pr-desc{transform:translateZ(14px)}.pr-foot{transform:translateZ(16px)}.pr-head{grid-gap:14px;align-items:center;display:grid;gap:14px;grid-template-columns:56px 1fr;margin-bottom:8px}.pr-logo{background:radial-gradient(circle at 30% 30%,#f5f5f5,#eaeaea);border:1px solid #e5e7eb;border-radius:999px;display:grid;flex-shrink:0;height:56px;overflow:hidden;place-items:center;width:56px}.pr-logo span{font-size:26px;line-height:1}.pr-logo-img{display:block;height:72%;object-fit:contain;width:72%}.pr-titleWrap{align-items:baseline;display:flex;gap:12px;min-width:0}.pr-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#111827;display:-webkit-box;font-size:clamp(1.1rem,4.5vw,1.375rem);font-weight:700;line-height:1.25;margin:0;overflow:hidden;white-space:normal}.pr-chip{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:999px;color:#111827;display:inline-flex;font-size:.8rem;padding:5px 12px;white-space:nowrap}.pr-chip,.pr-meta{align-items:center}.pr-meta{color:#6b7280;display:flex;flex-wrap:wrap;font-size:.95rem;gap:10px;margin:6px 0 10px}.pr-desc{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;color:#374151;display:-webkit-box;font-size:clamp(.9rem,3.5vw,1rem);line-height:1.55;margin:0 0 16px;overflow:hidden}.pr-foot{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.pr-badge{align-items:center;border:1px solid #0000;border-radius:999px;display:inline-flex;font-size:.85rem;font-weight:600;padding:7px 14px}.pr-badge--active{background:#e7f8ed;border-color:#b6e6c8;color:#11693a}.pr-open{color:#9ca3af;font-size:1rem}.pr-cta{align-items:center;background:#fff7ed;border:1px dashed #fdba74;border-radius:999px;color:#9a3412;cursor:pointer;display:inline-flex;font-size:.82rem;gap:8px;line-height:1;padding:6px 12px;text-decoration:none}.pr-cta:hover{filter:saturate(1.05) brightness(.98)}.pr-cta:focus-visible{outline:2px solid #fed7aa;outline-offset:3px}.pr-cta .pr-cta-text{white-space:nowrap}@media (hover:none){.pr-card{transform:none!important}.pr-card:before{display:none}.pr-card:active{transform:scale(.98)}}@media (prefers-reduced-motion:reduce){.pr-card{transition:box-shadow .23s ease,border-color .18s ease}}@media (max-width:992px){.pr-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));justify-content:center;justify-items:center}}@media (max-width:768px){.pr-heading{font-size:2.2rem}.pr-grid{grid-template-columns:1fr;margin:0 auto;max-width:720px}.pr-card{border-radius:18px;padding:18px;width:100%}.pr-head{gap:12px;grid-template-columns:48px 1fr}.pr-logo{height:48px;width:48px}.pr-logo span{font-size:22px}.pr-title{font-size:1.2rem}.pr-meta{font-size:.9rem}.pr-desc{-webkit-line-clamp:4;font-size:.95rem}}@media (max-width:480px){.pr-grid{max-width:560px}.pr-card{border-radius:14px;padding:14px}.pr-head{gap:10px;grid-template-columns:44px 1fr}.pr-logo{height:44px;width:44px}.pr-logo span{font-size:20px}.pr-title{font-size:1.1rem}.pr-desc{font-size:.9rem}}.coming-soon{animation:csPulse 2.2s ease-in-out infinite;background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border:2px dashed #d1d5db;justify-content:center;min-height:180px;text-align:center}.coming-soon,.cs-content{align-items:center;display:flex}.cs-content{flex-direction:column;gap:8px}.cs-emoji{animation:csFloat 2.6s ease-in-out infinite;font-size:2rem}.cs-text{color:#374151;font-size:1.05rem;font-weight:600}@keyframes csFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes csPulse{0%,to{border-color:#d1d5db}50%{border-color:#9ca3af}}*,:after,:before{box-sizing:border-box}#root,body,html{height:100%}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;color:#111827;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;margin:0;min-height:100%;padding:0}.App,body{overflow-x:hidden}.App{display:flex;flex-direction:column;min-height:100vh}section{background-color:#fff;border-radius:0;box-shadow:none;margin:0;padding:60px 20px}canvas,img,svg,video{display:block;height:auto;max-width:100%}:where(a,button,[role=button]):focus-visible{border-radius:8px;outline:2px solid #6366f1;outline-offset:3px}@media screen and (max-width:768px){section{padding:40px 15px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
/*# sourceMappingURL=main.89c0462c.css.map*/