:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.6;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #1a1a1a;--bg-secondary: #1e1e1e;--bg-card: #222222;--bg-elevated: #2a2a2a;--bg-button: #3a3a3a;--bg-button-hover: #454545;--text-primary: #e0e0e0;--text-secondary: #a0a0a0;--text-bright: #ffffff;--accent: #5c9eff;--accent-hover: #7ab4ff;--accent-bg: rgba(92, 158, 255, .1);--accent-border: rgba(92, 158, 255, .3);--border: #333333;--border-strong: #555555;--shadow: rgba(0, 0, 0, .3);--shadow-subtle: rgba(100, 100, 100, .25);--shadow-accent: rgba(92, 158, 255, .25)}[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f5f6f8;--bg-card: #eef0f3;--bg-elevated: #e4e6ea;--bg-button: #6b7280;--bg-button-hover: #555555;--text-primary: #1a1a2e;--text-secondary: #6b7280;--text-bright: #ffffff;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-bg: rgba(37, 99, 235, .08);--accent-border: rgba(37, 99, 235, .25);--border: #d1d5db;--border-strong: #9ca3af;--shadow: rgba(0, 0, 0, .08);--shadow-subtle: rgba(0, 0, 0, .1);--shadow-accent: rgba(37, 99, 235, .2)}body{margin:0;color:var(--text-primary);background-color:var(--bg-primary);transition:background-color .3s,color .3s}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.header{background-color:var(--bg-secondary);border-bottom:1px solid var(--border);padding:1rem 0;position:sticky;top:0;z-index:100;transition:background-color .3s,border-color .3s}.nav{max-width:1200px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center}.nav-list{display:flex;gap:2rem;list-style:none;margin:0;padding:0}.nav-list a{color:var(--text-primary);font-weight:500;transition:color .3s}.nav-list a:hover{color:var(--accent);text-decoration:none}.theme-toggle{border:none;border-radius:8px;cursor:pointer;padding:.4rem;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:all .3s ease;width:36px;height:36px;background:#f5f6f8;color:#1a1a2e}.theme-toggle:hover{opacity:.8}[data-theme=light] .theme-toggle{background:#1e1e1e;color:#e0e0e0}.footer{background:var(--bg-secondary);border-top:1px solid var(--border);padding:3rem 2rem 2rem;transition:background-color .3s,border-color .3s}.footer-container{max-width:800px;margin:0 auto}.footer-nav{display:flex;justify-content:center;gap:3rem;padding:.5rem 0}.footer-nav-link{font-size:1.1rem;font-weight:500;color:var(--text-primary);text-decoration:none;padding:.6rem 1.2rem;border-radius:8px;transition:all .3s ease;border:2px solid transparent}.footer-nav-link:hover{background:var(--bg-elevated);color:var(--accent)}.footer-nav-link.contact{background:var(--bg-button);color:var(--text-bright);border:2px solid var(--border-strong);font-weight:600;position:relative;overflow:hidden}.footer-nav-link.contact:hover{background:var(--bg-button-hover);border-color:var(--border-strong);color:var(--text-bright);transform:translateY(-1px);box-shadow:0 4px 12px var(--shadow-subtle)}.footer-copyright{text-align:center;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}.footer-copyright:first-child{margin-top:0;padding-top:0;border-top:none}.footer-copyright p{margin:0;font-size:.9rem;color:var(--text-secondary)}.about{padding:3rem 0}.about-container{max-width:800px;margin:0 auto;padding:0 2rem}.profile{text-align:center}.profile-image{width:240px;height:240px;border-radius:50%;object-fit:cover;margin-bottom:1rem}.name{font-size:2.5rem;margin-bottom:.5rem;color:var(--text-primary)}.name-en{font-size:1.2rem;color:var(--text-secondary);margin-bottom:2rem}.description{font-size:1.1rem;line-height:1.8;margin-bottom:3rem;max-width:600px;margin-left:auto;margin-right:auto}.current-positions,.social-links,.career-section,.contact-section,.latest-posts{margin-bottom:2rem;text-align:left;max-width:600px;margin-left:auto;margin-right:auto}.current-positions h2,.social-links h2,.career-section h2,.contact-section h2,.latest-posts h2{font-size:1.3rem;margin-bottom:1rem;color:var(--text-primary);border-bottom:2px solid var(--border);padding-bottom:.5rem}.current-positions ul{list-style:none;padding:0}.current-positions li{margin-bottom:.8rem;font-size:1rem;line-height:1.6}.current-positions a{color:var(--accent);transition:color .3s}.current-positions a:hover{color:var(--accent-hover)}.link-buttons{display:flex;flex-direction:column;gap:1rem}.link-button{display:flex;align-items:center;padding:1rem 1.5rem;background:var(--bg-card);border:2px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text-primary);transition:all .3s ease;cursor:pointer}.link-button:hover{background:var(--bg-elevated);border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 12px var(--shadow-accent)}.link-button.github:hover{border-color:var(--text-primary);box-shadow:0 4px 12px var(--shadow-subtle)}.link-button.twitter:hover{border-color:#1da1f2;box-shadow:0 4px 12px #1da1f240}.link-button.qiita:hover{border-color:#55c500;box-shadow:0 4px 12px #55c50040}.link-button.sot:hover{border-color:#f60;box-shadow:0 4px 12px #ff660040}.link-icon{font-size:2rem;margin-right:1rem}.link-icon-img{width:32px;height:32px;margin-right:1rem;object-fit:contain}.link-text{display:flex;flex-direction:column}.link-text strong{font-size:1.1rem;font-weight:600;margin-bottom:.2rem}.link-text small{font-size:.9rem;color:var(--text-secondary)}.career-timeline{position:relative;padding-left:2.5rem}.career-timeline:before{content:"";position:absolute;left:10px;top:10px;bottom:0;width:2px;background:var(--text-primary)}.career-item{position:relative;margin-bottom:2.5rem;padding-left:0}.career-item:last-child{margin-bottom:0}.career-item:before{content:"";position:absolute;left:-2.5rem;top:2px;width:16px;height:16px;background:var(--text-primary);border-radius:50%;border:3px solid var(--bg-primary);box-shadow:0 0 0 2px var(--text-primary);z-index:1}.career-period{font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.career-content h3{font-size:1.1rem;font-weight:600;margin-bottom:.3rem;color:var(--text-primary)}.career-content p{font-size:1rem;color:var(--text-secondary);margin:0;line-height:1.5}.contact-info{text-align:center;padding:1.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px}.contact-link{font-size:1.2rem;font-weight:600;color:var(--text-bright);text-decoration:none;padding:.8rem 2rem;background:var(--border-strong);border:2px solid var(--border-strong);border-radius:8px;display:inline-block;transition:all .3s ease;margin-bottom:1rem}.contact-link:hover{background:#6b7280;border-color:#6b7280;transform:translateY(-2px);box-shadow:0 6px 16px var(--shadow-subtle)}.contact-link:focus{outline:2px solid var(--border-strong);outline-offset:2px}.contact-info:hover{border-color:var(--border-strong)}.contact-email-text{font-size:1rem;color:var(--text-secondary);margin:0;font-family:monospace}.latest-posts__feed{display:flex;flex-direction:column;gap:.5rem}.blog-card-item{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--text-primary);transition:all .3s ease}.blog-card-item:hover{background:var(--bg-elevated);transform:translateY(-1px);box-shadow:0 2px 8px var(--shadow-subtle)}.blog-card-item__badge{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:#80808026;padding:.15rem .5rem;border-radius:4px;flex-shrink:0}.blog-card-item__title{flex:1;font-size:1rem}.blog-card-item__date{font-size:.85rem;color:var(--text-secondary);flex-shrink:0}.latest-posts__more{display:flex;justify-content:flex-end;gap:1.5rem;margin-top:.8rem}.latest-posts__more-link{color:var(--text-secondary);text-decoration:none;font-size:.95rem;transition:color .3s}.latest-posts__more-link:hover{color:var(--accent)}.tweet-card{display:block;padding:1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text-primary);transition:all .3s ease}.tweet-card:hover{border-color:#1da1f2;transform:translateY(-2px);box-shadow:0 4px 12px #1da1f226}.tweet-card__header{display:flex;align-items:center;margin-bottom:.6rem}.tweet-card__icon{width:36px;height:36px;border-radius:50%;margin-right:.6rem}.tweet-card__user{display:flex;flex-direction:column;flex:1}.tweet-card__name{font-weight:600;font-size:.95rem;line-height:1.2}.tweet-card__handle{font-size:.85rem;color:var(--text-secondary)}.tweet-card__logo{width:20px;height:20px;opacity:.5}.tweet-card__text{font-size:1rem;line-height:1.6;margin:0 0 .5rem}.tweet-card__date{font-size:.8rem;color:var(--text-secondary)}.blog{padding:3rem 2rem;max-width:1200px;margin:0 auto}.blog h1{font-size:2rem;margin-bottom:2rem;color:var(--text-primary);text-align:center}.blog-layout{display:flex;gap:2rem;align-items:flex-start}.blog-main{flex:1;min-width:0}.blog-empty{text-align:center;color:var(--text-secondary);font-size:1.1rem;padding:3rem 0}.blog-cards{display:flex;flex-direction:column;gap:1rem}.blog-card{display:block;padding:1.5rem;background:var(--bg-card);border:2px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text-primary);transition:all .3s ease;cursor:pointer}.blog-card:hover{background:var(--bg-elevated);border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 4px 12px var(--shadow-subtle);text-decoration:none}.blog-card-title{font-size:1.3rem;font-weight:600;margin-bottom:.8rem;color:var(--text-primary)}.blog-card-meta{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.blog-card-date,.blog-card-reading-time{font-size:.85rem;color:var(--text-secondary)}.blog-card-type{font-size:.85rem;color:var(--text-secondary);background:var(--bg-elevated);padding:.2rem .6rem;border-radius:4px;border:1px solid var(--border)}.blog-card-tags{display:flex;gap:.5rem;flex-wrap:wrap}.blog-card-tag{font-size:.8rem;color:var(--accent);background:var(--accent-bg);padding:.2rem .6rem;border-radius:4px;border:1px solid var(--accent-border)}.blog-sidebar{width:300px;flex-shrink:0;position:sticky;top:80px}.blog-sidebar-title{font-size:1rem;color:var(--text-primary);margin-bottom:.8rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.blog-sidebar-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.blog-sidebar-link{display:flex;align-items:center;gap:.6rem;padding:.7rem .8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);text-decoration:none;font-size:.9rem;transition:all .3s ease}.blog-sidebar-link:hover{background:var(--bg-elevated);border-color:var(--border-strong);text-decoration:none}.blog-sidebar-link-icon{width:18px;height:18px;flex-shrink:0}@media (max-width: 768px){.blog-layout{flex-direction:column}.blog-sidebar{width:100%;position:static;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}}.link-card{display:block;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);text-decoration:none;color:var(--text-primary);margin:16px 0;padding:14px 16px;transition:box-shadow .2s}.link-card:hover{box-shadow:0 2px 8px var(--shadow);text-decoration:none}.link-card__title{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent)}.link-card__domain{font-size:12px;color:var(--text-secondary);margin-top:4px}.blogpost{padding:3rem 2rem}.blogpost-container{max-width:800px;margin:0 auto}.blogpost-back-link{display:inline-block;color:var(--accent);font-size:.95rem;margin-bottom:2rem;text-decoration:none;transition:color .3s}.blogpost-back-link:hover{color:var(--accent-hover);text-decoration:underline}.blogpost-header{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:2px solid var(--border)}.blogpost-title{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem}.blogpost-meta{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.blogpost-date,.blogpost-reading-time{font-size:.85rem;color:var(--text-secondary)}.blogpost-type{font-size:.85rem;color:var(--text-secondary);background:var(--bg-elevated);padding:.2rem .6rem;border-radius:4px;border:1px solid var(--border)}.blogpost-tags{display:flex;gap:.5rem;flex-wrap:wrap}.blogpost-tag{font-size:.8rem;color:var(--accent);background:var(--accent-bg);padding:.2rem .6rem;border-radius:4px;border:1px solid var(--accent-border)}.blogpost-not-found{text-align:center;padding:3rem 0}.blogpost-not-found h1{font-size:2rem;color:var(--text-primary);margin-bottom:1rem}.blogpost-not-found p{color:var(--text-secondary);font-size:1.1rem;margin-bottom:2rem}.blogpost-content h1{font-size:1.8rem;font-weight:700;color:var(--text-primary);margin:2rem 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.blogpost-content h2{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:1.8rem 0 .8rem;padding-bottom:.3rem;border-bottom:1px solid var(--border)}.blogpost-content h3{font-size:1.3rem;font-weight:600;color:var(--text-primary);margin:1.5rem 0 .6rem}.blogpost-content h4,.blogpost-content h5,.blogpost-content h6{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin:1.2rem 0 .5rem}.blogpost-content p{color:var(--text-primary);line-height:1.8;margin-bottom:1rem}.blogpost-content ul,.blogpost-content ol{color:var(--text-primary);margin:.5rem 0 1rem 1.5rem;line-height:1.8}.blogpost-content li{margin-bottom:.3rem}.blogpost-content blockquote{border-left:4px solid var(--accent);padding:.5rem 1rem;margin:1rem 0;background:var(--bg-elevated);border-radius:0 8px 8px 0}.blogpost-content blockquote p{color:var(--text-secondary);margin-bottom:0}.blogpost-content code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background:var(--bg-elevated);padding:.15rem .4rem;border-radius:4px;font-size:.9em;color:var(--text-primary)}.blogpost-content pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:1rem;overflow-x:auto;margin:1rem 0}.blogpost-content pre code{background:none;padding:0;border-radius:0;font-size:.9rem;line-height:1.6}.blogpost-content a{color:var(--accent);text-decoration:none;transition:color .3s}.blogpost-content a:hover{color:var(--accent-hover);text-decoration:underline}.blogpost-content table{width:100%;border-collapse:collapse;margin:1rem 0}.blogpost-content th,.blogpost-content td{border:1px solid var(--border);padding:.6rem 1rem;text-align:left;color:var(--text-primary)}.blogpost-content th{background:var(--bg-elevated);font-weight:600}.blogpost-content img{max-width:100%;height:auto;border-radius:8px;margin:1rem 0}.blogpost-content hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.blogpost-content strong{color:var(--text-primary);font-weight:600}.blogpost-content em{color:var(--text-primary);font-style:italic}.blogpost-content .note{display:flex;align-items:flex-start;gap:12px;padding:16px;border-radius:4px;margin:16px 0;border-left:4px solid}.blogpost-content .note-info{background:#4caf501a;border-left-color:#4caf50}.blogpost-content .note-warn{background:#ffc1071a;border-left-color:#ffc107}.blogpost-content .note-alert{background:#f443361a;border-left-color:#f44336}.blogpost-content .note .note-icon{flex-shrink:0;width:20px;height:20px;margin-top:2px}.blogpost-content .note-info .note-icon{color:#4caf50}.blogpost-content .note-warn .note-icon{color:#ffc107}.blogpost-content .note-alert .note-icon{color:#f44336}.blogpost-content .note .note-body{flex:1;min-width:0;color:var(--text-primary)}.blogpost-content .note .note-body p{margin:0}.blogpost-others{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border)}.blogpost-others h2{font-size:1.2rem;color:var(--text-primary);margin-bottom:1rem}.blogpost-others__list{list-style:none;padding:0;margin:0}.blogpost-others__item{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;margin-bottom:.5rem}.blogpost-others__link{color:var(--text-primary);text-decoration:none;font-size:.95rem;transition:color .3s}.blogpost-others__link:hover{color:var(--accent)}.blogpost-others__date{font-size:.8rem;color:var(--text-secondary);flex-shrink:0;margin-left:1rem}.blogpost-others__more{text-align:right;margin-top:.8rem}.blogpost-others__more-link{color:var(--text-secondary);text-decoration:none;font-size:.9rem;transition:color .3s}.blogpost-others__more-link:hover{color:var(--accent)}.works{padding:3rem 2rem}.works-container{max-width:800px;margin:0 auto}.works h1{font-size:2rem;margin-bottom:2rem;color:var(--text-primary);text-align:center}.placeholder{text-align:center;color:var(--text-secondary);font-size:1.1rem;padding:3rem 0}*{margin:0;padding:0;box-sizing:border-box}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{background-color:var(--bg-primary)}.footer{margin-top:auto}
