@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700&display=swap";@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans JP;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/notosansjp/v52/nwpBtKy2OAdRwma-g7jG6nFAFYnAhSs8kW7xAI8.woff2) format("woff2");unicode-range:U+3000-303F,U+3040-309F,U+30A0-30FF,U+FF00-FFEF,U+4E00-9FAF}:root{--font-family-en: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif;--font-family-jp: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", "Yu Gothic", "Meiryo", sans-serif;--font-family-mixed: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}html{font-family:var(--font-family-mixed);font-feature-settings:"kern" 1,"liga" 1,"calt" 1;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html:lang(en){font-family:var(--font-family-en)}html:lang(ja){font-family:var(--font-family-jp)}.font-loading{visibility:hidden}.font-loaded{visibility:visible}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--color-primary: #0066cc;--color-primary-hover: #0056b3;--color-text: #000000;--color-text-secondary: #333333;--color-text-muted: #666666;--color-background: #ffffff;--color-background-secondary: #f8f9fa;--color-border: #e0e0e0;--color-focus: #0066cc;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-size-5xl: 3rem;--line-height-none: 1;--line-height-tight: 1.2;--line-height-snug: 1.375;--line-height-base: 1.6;--line-height-relaxed: 1.7;--line-height-loose: 2;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--max-width-none: none;--max-width-xs: 20rem;--max-width-sm: 24rem;--max-width-md: 28rem;--max-width-lg: 32rem;--max-width-xl: 36rem;--max-width-2xl: 42rem;--max-width-3xl: 48rem;--max-width-4xl: 56rem;--max-width-5xl: 64rem;--max-width-6xl: 72rem;--max-width-7xl: 80rem;--container-max-width: var(--max-width-6xl);--container-padding: var(--space-4);--radius-none: 0;--radius-sm: .125rem;--radius-md: .25rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-full: 9999px;--shadow-xs: 0 0 0 1px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--ease-linear: cubic-bezier(0, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--duration-75: 75ms;--duration-100: .1s;--duration-150: .15s;--duration-200: .2s;--duration-300: .3s;--duration-500: .5s;--duration-700: .7s;--duration-1000: 1s;--z-0: 0;--z-10: 10;--z-20: 20;--z-30: 30;--z-40: 40;--z-50: 50;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}body{font-family:var(--font-family-mixed);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text);background-color:var(--color-background);overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus{outline:2px solid var(--color-focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-mixed);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text);margin-bottom:var(--space-4)}h1{font-size:clamp(2rem,4vw,2.5rem);font-weight:var(--font-weight-bold);margin-bottom:var(--space-6)}h2{font-size:clamp(1.5rem,3vw,2rem);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-6)}h3{font-size:clamp(1.25rem,2.5vw,1.5rem);font-weight:var(--font-weight-medium);margin-bottom:var(--space-4)}p{margin-bottom:var(--space-4);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}a{color:var(--color-primary);text-decoration:none;transition:color var(--duration-200) var(--ease-out)}a:hover,a:focus{color:var(--color-primary-hover);transition:color var(--duration-200) var(--ease-out)}a[rel*=external]{position:relative}main{max-width:var(--container-max-width);margin:0 auto;padding:var(--space-8) var(--container-padding)}section{margin-bottom:var(--space-16);scroll-margin-top:100px}.container{max-width:var(--container-max-width);margin:0 auto;padding:0 var(--container-padding)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.loading-placeholder{background:var(--color-background-secondary);border-radius:var(--radius-md);animation:pulse 1.5s ease-in-out infinite alternate}@keyframes pulse{0%{opacity:1}to{opacity:.5}}img{max-width:100%;height:auto;display:block}#profile img{width:min(300px,80vw);height:auto;border-radius:var(--radius-full);margin:var(--space-6) auto 0;box-shadow:var(--shadow-lg);transition:transform var(--duration-300) var(--ease-out)}#profile img:hover{transform:scale(1.05)}.projects-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);margin-top:var(--space-6)}.project-item{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);transition:box-shadow var(--duration-300) var(--ease-out)}.project-item:hover,.project-item:focus-within{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.project-item h3{margin-bottom:var(--space-4);color:var(--color-text)}.project-item p{margin-bottom:var(--space-6);color:var(--color-text-secondary)}.project-links{display:flex;gap:var(--space-4);flex-wrap:wrap}.project-links a{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-4);background:var(--color-primary);color:var(--color-background);border-radius:var(--radius-md);text-decoration:none;font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);min-height:44px;transition:background-color var(--duration-200) var(--ease-out)}.project-links a:hover,.project-links a:focus{background:var(--color-primary-hover);color:var(--color-background)}.social-links{display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:center;list-style:none;margin-top:var(--space-6)}.social-links li{flex:1;min-width:120px;max-width:200px}.social-links a{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);text-decoration:none;color:var(--color-text);font-weight:var(--font-weight-medium);min-height:44px;transition:all var(--duration-200) var(--ease-out)}.social-links a:hover,.social-links a:focus{background:var(--color-primary);color:var(--color-background);border-color:var(--color-primary);transform:translateY(-1px)}.social-links img{width:20px;height:20px;display:inline-block}@media (min-width: 640px){.social-links{justify-content:flex-start}}@media (min-width: 768px){main{padding:var(--space-12) var(--container-padding)}section{margin-bottom:var(--space-20)}.projects-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-8)}.social-links{gap:var(--space-6)}.social-links li{flex:none}}@media (min-width: 1024px){main{padding:var(--space-16) var(--container-padding)}section{margin-bottom:var(--space-24)}.projects-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-8)}#profile{text-align:center;padding:var(--space-12) 0}.social-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-6);max-width:800px;margin:var(--space-8) auto 0}}@media (min-width: 1280px){section{margin-bottom:var(--space-24)}.projects-grid{gap:var(--space-10)}#profile{padding:var(--space-16) 0}}@media (min-width: 1536px){main{padding:var(--space-20) var(--container-padding)}.projects-grid{max-width:1400px;margin-left:auto;margin-right:auto}.social-links{max-width:1000px}}header{position:sticky;top:0;z-index:var(--z-50);background:var(--color-background);border-bottom:1px solid var(--color-border);padding:var(--space-4)}nav ul{list-style:none;display:flex;gap:var(--space-8);justify-content:center;flex-wrap:wrap;margin:0;padding:0}nav a{display:flex;align-items:center;padding:var(--space-2) var(--space-4);text-decoration:none;color:var(--color-text);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);min-height:44px;transition:all var(--duration-200) var(--ease-out)}nav a:hover,nav a:focus{color:var(--color-primary);background:var(--color-background-secondary);transform:translateY(-1px)}nav a.active{color:var(--color-primary);background:var(--color-background-secondary);font-weight:var(--font-weight-semibold);position:relative}nav a.active:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:80%;height:2px;background:var(--color-primary);border-radius:var(--radius-full)}footer{background:var(--color-background-secondary);padding:var(--space-8) var(--space-4);text-align:center;border-top:1px solid var(--color-border);margin-top:var(--space-16)}footer p{color:var(--color-text-muted);margin-bottom:var(--space-2)}footer p:last-child{margin-bottom:0;font-size:var(--font-size-sm)}#profile{position:relative}#profile:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:100px;height:4px;background:linear-gradient(90deg,var(--color-primary),var(--color-primary-hover));border-radius:var(--radius-full);opacity:.8}.project-item{position:relative;overflow:hidden}.project-item:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left var(--duration-500) var(--ease-out)}.project-item:hover:before{left:100%}.project-links a:focus,.social-links a:focus,nav a:focus{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 4px rgba(0,102,204,.1)}html{scroll-behavior:smooth}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.project-item,.social-links li{animation:fadeInUp var(--duration-500) var(--ease-out) forwards}.project-item:nth-child(1){animation-delay:0ms}.project-item:nth-child(2){animation-delay:.1s}.project-item:nth-child(3){animation-delay:.2s}.project-item:nth-child(4){animation-delay:.3s}.social-links li:nth-child(1){animation-delay:0ms}.social-links li:nth-child(2){animation-delay:50ms}.social-links li:nth-child(3){animation-delay:.1s}.social-links li:nth-child(4){animation-delay:.15s}h1{position:relative;background:linear-gradient(135deg,var(--color-text),var(--color-primary));background-clip:text;-webkit-background-clip:text;color:transparent;background-size:200% 200%;animation:gradientShift 4s ease-in-out infinite}@keyframes gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@supports not ((-webkit-background-clip: text) or (background-clip: text)){h1{color:var(--color-text);background:none;animation:none}}.project-links a,.social-links a{position:relative;overflow:hidden}.project-links a:after,.social-links a:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(255,255,255,.3);border-radius:50%;transform:translate(-50%,-50%);transition:all var(--duration-300) var(--ease-out)}.project-links a:hover:after,.social-links a:hover:after{width:300px;height:300px}@media (prefers-reduced-motion: no-preference){section{opacity:0;animation:fadeInUp var(--duration-700) var(--ease-out) forwards}#profile{animation-delay:.1s}#projects{animation-delay:.2s}#social{animation-delay:.3s}}@media (max-width: 767px){header{padding:var(--space-3) var(--space-4)}nav ul{gap:var(--space-3)}nav a{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.loading-placeholder{animation:none}#profile img:hover{transform:none}.project-item:hover,.project-item:focus-within{transform:none}.social-links a:hover,.social-links a:focus{transform:none}}@media (prefers-contrast: high){:root{--color-border: #000000;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .5);--shadow-md: 0 4px 8px rgba(0, 0, 0, .5);--shadow-lg: 0 8px 16px rgba(0, 0, 0, .5)}.project-item,.social-links a{border-width:2px}}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}header,footer,.social-links{display:none}main{max-width:none;padding:0}.project-item{border:1px solid #000;page-break-inside:avoid;margin-bottom:1rem}a:after{content:" (" attr(href) ")";font-size:.8em}}
