@import "https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700&display=swap";
@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard-dynamic-subset.min.css";
:root{--font-display:"Sora", "Pretendard", -apple-system, BlinkMacSystemFont, sans-serif;--font-body:"Pretendard", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"SFMono-Regular", Consolas, monospace;--color-primary:#0f172a;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-accent-subtle:#eaf1ff;--color-text:#0f172a;--color-text-secondary:#334155;--color-text-muted:#64748b;--color-bg:#f8fafc;--color-bg-subtle:#eef3f9;--color-bg-card:#fff;--color-border:#d7e1ef;--color-border-light:#e6edf8;--color-rule:#0f172a;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:36px;--space-2xl:64px;--space-3xl:96px;--section-gap:88px;--subsection-gap:32px;--content-gap:16px;--transition-fast:.15s ease-out;--transition-base:.2s ease-out;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--color-primary:#dbeafe;--color-accent:#60a5fa;--color-accent-hover:#93c5fd;--color-accent-subtle:#0f1d3a;--color-text:#dbeafe;--color-text-secondary:#a5b4c9;--color-text-muted:#8798b1;--color-bg:#070d1a;--color-bg-subtle:#0f1729;--color-bg-card:#111b31;--color-border:#20304d;--color-border-light:#172640;--color-rule:#3b4f72;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);word-wrap:break-word;word-break:keep-all;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:16px;font-weight:400;line-height:1.72;transition:background-color .2s,color .2s}h1,h2,h3,h4,h5,h6{text-wrap:balance;margin:0;font-weight:600;line-height:1.3}p{text-wrap:pretty;margin:0 0 1em}li{text-wrap:pretty}a{color:var(--color-accent);text-underline-offset:2px;transition:color var(--transition-fast), text-decoration-color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}ul{margin:0;padding-left:1.25em}hr{margin:var(--space-lg) 0;border:0;border-top:1px solid var(--color-border)}button{font:inherit}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:2px}::selection{background:var(--color-accent-subtle)}.resume-container{width:100%;max-width:840px;padding:0 var(--space-xl);margin:0 auto;position:relative}.profile-section{margin-top:var(--section-gap)}.profile-identity{align-items:flex-start;gap:var(--space-xl);display:flex}.profile-image-wrap{flex:0 0 180px;width:180px;height:180px}.profile-image{object-fit:cover;object-position:center;border:2px solid var(--color-accent);background:var(--color-accent-subtle);width:100%;height:100%;color:var(--color-accent);box-shadow:0 0 0 7px var(--color-accent-subtle);border-radius:50%;place-items:center;display:grid}.profile-image-fallback{font:500 54px/1 var(--font-display)}.profile-identity-text{flex:1;min-width:0}.profile-name{margin-bottom:var(--space-sm);color:var(--color-primary);font-family:var(--font-display);font-size:clamp(1.85rem,3.7vw,2.45rem);font-weight:500;line-height:1.2}.profile-name small{font-size:clamp(1.2rem,2.2vw,1.45rem);font-weight:400}.profile-tagline{margin-bottom:var(--space-md);color:var(--color-text-secondary);letter-spacing:.02em;font-size:1.125rem}.profile-contacts{gap:var(--space-sm) var(--space-md);flex-wrap:wrap;display:flex}.profile-contact-item{color:var(--color-text-secondary);align-items:center;font-size:.875rem;display:inline-flex}.contact-symbol{margin-right:var(--space-xs);color:var(--color-text-muted);font-size:.8rem}.notice-banner{margin-top:var(--space-xl);padding:var(--space-md);border:1px solid var(--color-border);border-left:3px solid var(--color-text-muted);background:var(--color-bg-card);color:var(--color-text-secondary);border-radius:10px}.notice-icon{margin-right:var(--space-sm);color:var(--color-text-muted)}.profile-stats-band{margin-top:var(--space-lg);padding:var(--space-lg) var(--space-xl);background:var(--color-bg-subtle);border-radius:12px}.stats-grid{gap:var(--space-lg);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.profile-stats{max-width:none;margin:0}.profile-stat-item{padding:var(--space-md) 0;text-align:center}.profile-stat-value{margin-bottom:var(--space-xs);color:var(--color-primary);font-family:var(--font-display);font-size:clamp(1.65rem,3vw,2rem);font-weight:500}.profile-stat-label{color:var(--color-text-secondary);font-size:.875rem}.editorial-section{margin-top:var(--section-gap);content-visibility:auto;contain-intrinsic-size:auto 500px;position:relative}.section-heading{margin:0 0 var(--subsection-gap);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule);color:var(--color-primary);font-family:var(--font-display);letter-spacing:.13em;scroll-margin-top:var(--space-lg);font-size:.95rem;font-weight:600}.split-row{gap:var(--space-lg);grid-template-columns:200px 1fr;display:grid}.split-left{text-align:right}.intro-copy p{margin-bottom:1em}.text-end{text-align:right}.text-end small{color:var(--color-text-muted)}.tag{border:1px solid var(--color-border);color:var(--color-text-secondary);background:0 0;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:400;line-height:1.6;display:inline-block}.tag--muted{background:var(--color-bg-subtle)}.tag--current{border-color:var(--color-accent);color:var(--color-accent)}.signature{text-align:right;color:var(--color-text-secondary);margin-top:-10px;font-family:cursive;font-size:1.05rem;font-style:italic}.highlight-section{margin-top:var(--space-lg)}.card-grid-3{gap:var(--space-lg);grid-template-columns:repeat(3,1fr);display:grid}.highlight-card{height:100%;padding:var(--space-lg);border:1px solid var(--color-border);background:var(--color-bg-card);border-radius:12px;box-shadow:0 2px 10px #0f172a0a}.highlight-title{margin-bottom:var(--space-sm);color:var(--color-primary);font-size:1rem}.highlight-description{margin-bottom:var(--space-md);font-size:.875rem;line-height:1.65}.highlight-keywords{gap:var(--space-xs);flex-wrap:wrap;display:flex}.experience-total{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;font-size:.875rem;line-height:1.235rem;position:absolute;top:0;right:0}.experience-item>.split-row:first-of-type{align-items:baseline}.experience-period{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;font-size:1rem}.experience-company-heading{align-items:center;row-gap:var(--space-xs);flex-wrap:wrap;display:inline-flex}.experience-dot{width:8px;height:8px;margin-right:var(--space-sm);border:1.5px solid var(--color-text-muted);border-radius:50%;display:inline-block}.experience-dot.is-current{border-color:var(--color-accent);background:var(--color-accent)}.experience-meta{align-items:center;gap:var(--space-xs);margin-left:var(--space-xs);flex-wrap:wrap;font-size:78%;display:inline-flex}.experience-position-row{margin-top:var(--space-sm)}.experience-position-row+.experience-position-row{margin-top:var(--space-lg)}.experience-position-title{color:var(--color-text-secondary);font-style:normal}.resume-entry-description{margin:var(--space-sm) 0 0}.experience-description-list{padding-top:var(--space-sm)}.experience-description-list li{margin-bottom:3px}.experience-keywords{gap:var(--space-xs);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.description-list--padded{padding-top:var(--space-sm)}.resume-links{margin-top:var(--space-sm)}.resume-entry hr{margin:var(--space-lg) 0}.empty-section-note{color:var(--color-text-muted);margin:-12px 0 0 224px;font-size:.9rem}.resume-image-gallery{gap:var(--space-md);margin-top:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.resume-image-item{border:1px solid var(--color-border);background:var(--color-bg-card);border-radius:8px;min-width:0;margin:0;overflow:hidden}.resume-image-item a{line-height:0;display:block}.resume-image-item img{aspect-ratio:4/3;object-fit:cover;width:100%;max-height:320px;display:block}.resume-image-item figcaption{padding:var(--space-sm) var(--space-md);color:var(--color-text-muted);font-size:.8rem}.skill-row{margin-bottom:var(--space-md);align-items:start}.skill-category{color:var(--color-text-secondary);font-size:1rem}.skill-chip-list{gap:var(--space-xs);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.skill-chip-item{border:1px solid var(--color-border);background:var(--color-bg-card);border-radius:999px;align-items:center;gap:6px;max-width:100%;min-height:28px;padding:4px 8px;display:inline-flex}.skill-chip-title{overflow-wrap:anywhere;color:var(--color-text);font-size:.875rem;line-height:1.25}.skill-dots{align-items:center;gap:3px;margin-left:2px;display:inline-flex}.skill-dot{border-radius:50%;width:7px;height:7px}.skill-dot--filled{background:var(--color-accent)}.skill-dot--empty{background:#cbd5e1}.article-list li{margin-bottom:4px}.article-source{color:var(--color-text-muted)}.resume-footer{margin-top:var(--section-gap);padding:var(--space-lg) 0;border-top:1px solid var(--color-border);color:var(--color-text-muted);text-align:center}.floating-nav{z-index:10;position:fixed;top:50%;right:24px;transform:translateY(-50%)}.floating-nav-list{margin:0;padding:0;list-style:none}.floating-nav-item{margin-bottom:var(--space-sm)}.floating-nav-button{width:100%;max-width:170px;color:var(--color-text-muted);font-family:var(--font-display);letter-spacing:.05em;text-align:right;transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:0;border-right:2px solid #0000;padding:4px 12px;font-size:.72rem;line-height:1.45;display:block}.floating-nav-button:hover{border-right-color:var(--color-accent);color:var(--color-accent);text-decoration:none}.utility-button{z-index:20;border:1px solid var(--color-border);background:var(--color-bg-card);width:42px;height:42px;color:var(--color-text);cursor:pointer;transition:color var(--transition-base), border-color var(--transition-base);border-radius:10px;justify-content:center;align-items:center;font-size:18px;display:flex;position:fixed;right:24px}.utility-button:hover{border-color:var(--color-accent);color:var(--color-accent)}.print-button{bottom:74px}.dark-mode-toggle{bottom:24px}@media (max-width:1200px){.floating-nav{display:none}}@media (max-width:991px){.card-grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width:767px){:root{--section-gap:64px}.resume-container{padding:0 var(--space-md)}.profile-identity{flex-direction:column;align-items:center}.profile-identity-text{text-align:center}.profile-contacts{justify-content:center;gap:var(--space-xs) var(--space-md)}.profile-stats-band{padding:var(--space-md)}.profile-stat-value{font-size:1.4rem}.profile-image-wrap{flex-basis:148px;width:148px;height:148px}.split-row{gap:var(--space-sm);grid-template-columns:1fr}.split-left{text-align:left}.empty-section-note{margin:-12px 0 0}.card-grid-3{grid-template-columns:1fr}.stats-grid{gap:var(--space-sm)}.section-heading{font-size:.9rem}.skill-row{gap:var(--space-sm)}.skill-chip-item{gap:5px;min-height:26px;padding:3px 7px}.skill-chip-title{font-size:.82rem}.skill-dot{width:6px;height:6px}.resume-image-gallery{grid-template-columns:1fr}.print-button{display:none}.utility-button{right:16px}}@media print{@page{size:A4;margin:15mm}*{box-shadow:none!important;transition:none!important;animation:none!important}body{width:210mm;margin:0;padding:0;font-size:10.5pt;line-height:1.45;color:#000!important;background:#fff!important}.resume-container{max-width:100%;padding:0}.floating-nav,.utility-button,.notice-banner{display:none!important}.editorial-section{content-visibility:visible!important;contain-intrinsic-size:auto!important;margin-top:36px!important}.split-row{grid-template-columns:160px 1fr!important}.split-left{text-align:right!important}.card-grid-3{grid-template-columns:repeat(3,1fr)!important}.highlight-card{background:#fff!important;border:1px solid #ddd!important;padding:12px!important}.experience-item,.project-item,.highlight-card,.resume-entry,.split-row{break-inside:avoid}h2,h3,h4,.section-heading{break-after:avoid}.profile-image{-webkit-print-color-adjust:exact;print-color-adjust:exact}a[href^=http]:after{content:" (" attr(href) ")";color:#666;overflow-wrap:anywhere;font-size:.8em}a[href^=mailto]:after,a[href^=\#]:after,.profile-contact-item a:after{content:""!important}[data-theme=dark],[data-theme=dark] *{color:#000!important;background-color:#fff!important;border-color:#ddd!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
