@import url(https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.8/dist/web/static/pretendard.css);@import url(https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap);.theme-toggle[data-v-8cac7e04]{cursor:pointer}.toggle-track[data-v-8cac7e04]{width:50px;height:26px;background-color:#e0e0e0;border-radius:13px;position:relative;transition:background-color .3s ease}.toggle-indicator[data-v-8cac7e04]{width:22px;height:22px;background-color:#fff;border-radius:50%;position:absolute;top:2px;left:2px;transition:transform .3s ease;display:flex;align-items:center;justify-content:center}.toggle-indicator.dark[data-v-8cac7e04]{transform:translateX(24px)}.toggle-track[data-v-8cac7e04]:has(.dark){background-color:#4d4d4d}.toggle-indicator svg[data-v-8cac7e04]{color:#888}.side-nav[data-v-17ec3038]{position:fixed;top:50%;right:50px;transform:translateY(-50%);z-index:1000}ul[data-v-17ec3038]{list-style:none;padding:0;margin:0;text-align:right}li[data-v-17ec3038]{margin:15px 0}a[data-v-17ec3038]{text-decoration:none;color:#888;font-weight:500;font-size:.9rem;position:relative;padding-right:25px;transition:all .3s ease}a[data-v-17ec3038]:after{content:"";position:absolute;top:50%;right:0;transform:translateY(-50%);width:15px;height:2px;background-color:#ddd;transition:all .3s ease}a.active[data-v-17ec3038],a[data-v-17ec3038]:hover{color:#0071e3}a.active[data-v-17ec3038]:after,a[data-v-17ec3038]:hover:after{width:30px;background-color:#0071e3}.hero-container[data-v-45d14da8]{height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;position:relative;padding-top:0}.badge[data-v-45d14da8]{background:var(--accent-glow);color:var(--accent-color);padding:8px 16px;border-radius:100px;font-size:.9rem;font-weight:600;margin-bottom:24px;display:inline-block}.headline[data-v-45d14da8]{font-size:5rem;line-height:1.1;margin-bottom:30px;color:var(--text-primary)}.gradient-text[data-v-45d14da8]{background:linear-gradient(90deg,var(--accent-color),#c084fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sub-text[data-v-45d14da8]{font-size:1.25rem;color:var(--text-secondary);max-width:600px;font-weight:400}.scroll-downs[data-v-45d14da8]{position:absolute;bottom:40px;left:50%;transform:translateX(-50%)}.mousey[data-v-45d14da8]{width:3px;padding:10px 15px;height:35px;border:2px solid var(--text-tertiary);border-radius:25px;opacity:.75;box-sizing:content-box}.scroller[data-v-45d14da8]{width:3px;height:10px;border-radius:25%;background-color:var(--text-primary);animation-name:scroll-45d14da8;animation-duration:2.2s;animation-timing-function:cubic-bezier(.15,.41,.69,.94);animation-iteration-count:infinite}@keyframes scroll-45d14da8{0%{opacity:0}10%{transform:translateY(0);opacity:1}to{transform:translateY(15px);opacity:0}}@media (max-width:768px){.headline[data-v-45d14da8]{font-size:3rem}.sub-text[data-v-45d14da8]{font-size:1rem}.hero-container[data-v-45d14da8]{align-items:center;text-align:center}}.section-title[data-v-7d924f21]{font-size:3rem;margin-bottom:50px;color:var(--text-primary)}.bento-grid[data-v-7d924f21]{display:grid;grid-template-columns:1.3fr 1fr;grid-template-rows:auto auto;gap:20px}.bento-item[data-v-7d924f21]{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:24px;padding:30px;box-shadow:var(--card-shadow);transition:transform .3s ease,border-color .3s ease}.bento-item[data-v-7d924f21]:hover{transform:translateY(-5px);border-color:var(--accent-color)}.profile[data-v-7d924f21]{grid-column:1/2;grid-row:1/2}.badges-area[data-v-7d924f21]{grid-column:2/3;grid-row:1/2;display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.awards[data-v-7d924f21]{grid-column:1/2;grid-row:2/3}.experience[data-v-7d924f21]{grid-column:2/3;grid-row:2/3}.card-title[data-v-7d924f21]{font-size:1.1rem;margin-bottom:25px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.profile p[data-v-7d924f21]{font-size:1.1rem;color:var(--text-secondary);line-height:1.7}.list-item[data-v-7d924f21]{display:flex;gap:15px;margin-bottom:25px}.list-item[data-v-7d924f21]:last-child{margin-bottom:0}.year[data-v-7d924f21]{font-family:JetBrains Mono,monospace;color:var(--accent-color);font-size:.85rem;min-width:85px;padding-top:3px}.list-item strong[data-v-7d924f21]{display:block;font-size:1rem;margin-bottom:4px}.sub[data-v-7d924f21]{font-size:.9rem;color:var(--text-tertiary);margin:0}.awards ul[data-v-7d924f21]{list-style:none;padding:0;margin:0}.awards li[data-v-7d924f21]{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px dashed var(--border-color);color:var(--text-secondary)}.awards li[data-v-7d924f21]:last-child{border-bottom:none}.awards li strong[data-v-7d924f21]{color:var(--accent-color);white-space:nowrap;margin-left:10px}.badge-box[data-v-7d924f21]{padding:15px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--bg-secondary);height:100%;box-sizing:border-box}.badge-box.highlight[data-v-7d924f21]{background:linear-gradient(135deg,var(--bg-secondary) 0,rgba(79,70,229,.05) 100%);border-color:var(--accent-color)}.badge-value[data-v-7d924f21]{display:block;font-size:1.6rem;font-weight:800;color:var(--text-primary);line-height:1.1;margin-bottom:5px}.badge-value.small-text[data-v-7d924f21]{font-size:1rem;word-break:keep-all}.badge-label[data-v-7d924f21]{font-size:.75rem;color:var(--text-tertiary);font-weight:500;line-height:1.3}@media (max-width:768px){.bento-grid[data-v-7d924f21]{grid-template-columns:1fr;grid-template-rows:auto}.profile[data-v-7d924f21]{grid-row:1;grid-column:1}.badges-area[data-v-7d924f21]{grid-row:2;grid-column:1}.experience[data-v-7d924f21]{grid-row:3;grid-column:1}.awards[data-v-7d924f21]{grid-row:4;grid-column:1}.badges-area[data-v-7d924f21]{grid-template-columns:1fr 1fr 1fr}}@media (max-width:480px){.badges-area[data-v-7d924f21]{grid-template-columns:1fr;gap:10px}.badge-box[data-v-7d924f21]{flex-direction:row;justify-content:flex-start;gap:20px;text-align:left;padding:20px}}.section-title[data-v-72bd678f]{font-size:3rem;margin-bottom:50px;text-align:left}.skills-wrapper[data-v-72bd678f]{display:flex;flex-direction:column;gap:40px}.skill-group h3[data-v-72bd678f]{font-size:1.2rem;color:var(--text-tertiary);margin-bottom:20px}.tags[data-v-72bd678f]{display:flex;flex-wrap:wrap;gap:12px}.tag[data-v-72bd678f]{font-size:1.1rem;padding:10px 20px;border-radius:12px;background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);font-weight:500}.section-header[data-v-73aebd3e]{font-size:3rem;margin-bottom:80px;color:var(--text-primary)}.project-card[data-v-73aebd3e]{margin-bottom:100px;padding-bottom:60px;border-bottom:1px solid var(--border-color)}.project-card[data-v-73aebd3e]:last-child{border-bottom:none}.header-top[data-v-73aebd3e]{display:flex;align-items:center;gap:15px;margin-bottom:15px}.period[data-v-73aebd3e]{color:var(--text-tertiary);font-size:.9rem}.role-badge[data-v-73aebd3e]{padding:4px 10px;border-radius:6px;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.role-badge.backend[data-v-73aebd3e]{background:rgba(79,70,229,.1);color:#4f46e5}.role-badge.frontend[data-v-73aebd3e]{background:rgba(234,179,8,.1);color:#ca8a04}.role-badge.fullstack[data-v-73aebd3e]{background:rgba(16,185,129,.1);color:#059669}.project-title[data-v-73aebd3e]{font-size:2.5rem;margin-bottom:15px;color:var(--text-primary)}.summary[data-v-73aebd3e]{font-size:1.1rem;color:var(--text-secondary);max-width:800px;margin-bottom:25px}.tech-stack[data-v-73aebd3e]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:40px}.tech-pill[data-v-73aebd3e]{background:var(--bg-secondary);border:1px solid var(--border-color);padding:6px 14px;border-radius:20px;font-size:.85rem;color:var(--text-secondary);font-family:JetBrains Mono,monospace}.content-block h4[data-v-73aebd3e],.project-section h4[data-v-73aebd3e]{font-size:1rem;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:15px;letter-spacing:.05em}.architecture-box[data-v-73aebd3e]{background:var(--bg-secondary);padding:15px 20px;border-radius:8px;border:1px dashed var(--border-color);font-family:JetBrains Mono,monospace;font-size:.9rem;color:var(--text-secondary);margin-bottom:30px}.content-block ul li[data-v-73aebd3e]{color:var(--text-secondary);margin-bottom:8px;line-height:1.7}.trouble-grid[data-v-73aebd3e]{display:grid;grid-template-columns:1fr 1fr;gap:20px}.trouble-item[data-v-73aebd3e]{background:var(--bg-secondary);padding:20px;border-radius:12px;border-left:3px solid var(--accent-color)}.trouble-title[data-v-73aebd3e]{font-size:1rem;margin-bottom:8px;color:var(--text-primary)}.trouble-desc[data-v-73aebd3e]{font-size:.9rem;color:var(--text-secondary);margin:0}.github-link[data-v-73aebd3e]{display:inline-block;margin-top:20px;color:var(--accent-color);font-weight:600;text-decoration:none;border-bottom:2px solid transparent;transition:all .2s}.github-link[data-v-73aebd3e]:hover{border-bottom-color:var(--accent-color)}@media (max-width:768px){.project-title[data-v-73aebd3e]{font-size:2rem}.trouble-grid[data-v-73aebd3e]{grid-template-columns:1fr}}.contact-container[data-v-1f90e89d]{padding:120px 5% 50px;min-height:60vh;display:flex;flex-direction:column;justify-content:space-between}.content-wrapper[data-v-1f90e89d]{max-width:800px;margin:0 auto;width:100%;text-align:left}.title[data-v-1f90e89d]{font-size:4rem;margin-bottom:20px;color:var(--text-primary);letter-spacing:-.02em}.description[data-v-1f90e89d]{font-size:1.2rem;color:var(--text-secondary);margin-bottom:60px;line-height:1.6}.contact-list[data-v-1f90e89d]{display:flex;flex-direction:column;gap:30px}.contact-item[data-v-1f90e89d]{display:flex;align-items:baseline;gap:30px;border-bottom:1px solid var(--border-color);padding-bottom:15px;transition:border-color .3s ease}.contact-item[data-v-1f90e89d]:hover{border-bottom-color:var(--accent-color)}.label[data-v-1f90e89d]{font-family:JetBrains Mono,monospace;font-size:1rem;color:var(--text-tertiary);min-width:80px;font-weight:500}.value[data-v-1f90e89d]{font-size:1.5rem;color:var(--text-primary);text-decoration:none;font-weight:600;display:flex;align-items:center;gap:10px;transition:color .2s ease}.value[data-v-1f90e89d]:hover{color:var(--accent-color)}.arrow[data-v-1f90e89d]{font-size:1rem;opacity:0;transform:translate(-5px,5px);transition:all .2s ease}.value:hover .arrow[data-v-1f90e89d]{opacity:1;transform:translate(0)}.footer[data-v-1f90e89d]{margin-top:100px;text-align:center;color:var(--text-tertiary);font-size:.9rem}.small[data-v-1f90e89d]{font-size:.8rem;margin-top:5px;opacity:.7}@media (max-width:768px){.title[data-v-1f90e89d]{font-size:3rem}.contact-item[data-v-1f90e89d]{flex-direction:column;gap:5px;align-items:flex-start}.label[data-v-1f90e89d]{font-size:.9rem}.value[data-v-1f90e89d]{font-size:1.2rem}}:root{--bg-color:#f8f9fa;--bg-secondary:#fff;--text-primary:#111827;--text-secondary:#6b7280;--text-tertiary:#9ca3af;--border-color:#e5e7eb;--accent-color:#4f46e5;--accent-glow:rgba(79,70,229,.15);--card-shadow:0 4px 6px -1px rgba(0,0,0,.05),0 2px 4px -1px rgba(0,0,0,.03)}[data-theme=dark]{--bg-color:#0f172a;--bg-secondary:#1e293b;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-tertiary:#64748b;--border-color:#334155;--accent-color:#818cf8;--accent-glow:rgba(129,140,248,.15);--card-shadow:0 4px 6px -1px rgba(0,0,0,.3)}body{background-color:var(--bg-color);color:var(--text-primary);font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;margin:0;line-height:1.6;transition:background-color .3s ease,color .3s ease}.code-font{font-family:JetBrains Mono,monospace}h1,h2,h3,h4,h5{margin:0;font-weight:700;letter-spacing:-.02em}section{padding:120px 5%;max-width:1200px;margin:0 auto}.top-nav{position:fixed;top:30px;right:30px;z-index:1000;display:flex;gap:20px;align-items:center}.background-noise{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:-1;opacity:.03;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E")}@media (max-width:768px){.top-nav{right:20px;top:20px}section{padding:80px 5%}}