*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:#333;background:#f5f5f5;font-family:Noto Sans JP,sans-serif;font-size:15px;line-height:1.8}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}.container,.header-inner{max-width:1200px;margin:0 auto;padding:0 24px}.header{z-index:1000;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#1a1a2ef2;position:fixed;top:0;left:0;right:0}.header-inner{justify-content:space-between;align-items:center;height:70px;display:flex}.logo{color:#fff;letter-spacing:.02em;font-family:Poppins,sans-serif;font-size:1.25rem;font-weight:600}.nav{gap:8px;display:flex}.nav-link{color:#ffffffb3;border-radius:4px;padding:8px 16px;font-family:Poppins,sans-serif;font-size:.9rem;font-weight:500;transition:all .3s}.nav-link.router-link-active,.nav-link:hover{color:#fff;background:#ffffff1a}.mobile-menu-btn{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:8px;display:none}.mobile-menu-btn span{background:#fff;width:24px;height:2px;transition:all .3s;display:block}.main{min-height:calc(100vh - 70px);padding-top:70px}.page-hero{text-align:center;background:#1a1a2e;padding:80px 0 60px}.page-title{color:#fff;margin-bottom:8px;font-family:Poppins,sans-serif;font-size:2.5rem;font-weight:700}.page-subtitle{color:#fff9;font-size:.95rem}.section-header{text-align:center;flex-direction:column;align-items:center;margin:48px 0 32px;display:flex}.section-header .section-title{margin:0}.section-header .section-title:after{display:none}.section-subtitle{color:#666;letter-spacing:.08em;align-items:center;gap:16px;margin:12px 0 0;font-family:Poppins,sans-serif;font-size:.85rem;font-weight:500;display:flex}.section-subtitle:after,.section-subtitle:before{content:"";background:#e0e0e0;width:40px;height:1px}.section-title{text-align:center;margin:48px 0 24px;font-family:Poppins,sans-serif;font-size:2rem;font-weight:700;position:relative}.section-title:after{content:"";background:#4a90a4;width:40px;height:3px;position:absolute;bottom:-12px;left:50%;transform:translate(-50%)}.about-content{align-items:center;gap:60px;max-width:800px;margin:0 auto;display:flex}.about-image{flex-shrink:0}.about-image img{-o-object-fit:cover;object-fit:cover;border:4px solid #4a90a4;border-radius:50%;width:200px;height:200px}.about-text h3{margin-bottom:12px;font-family:Poppins,sans-serif;font-size:1.5rem;font-weight:600}.about-text p{color:#666;margin-bottom:20px}.connect-section{padding:20px 0 80px}.connect-grid{grid-template-columns:repeat(3,1fr);gap:20px;max-width:800px;margin:0 auto;display:grid}.connect-card{text-align:center;background:#fff;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;transition:all .3s;display:flex;box-shadow:0 2px 10px #00000014}.connect-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #0000001f}.connect-card:hover .connect-icon img,.connect-card:hover .connect-icon svg{transform:scale(1.1)}.connect-card-email{flex-direction:row;grid-column:1/-1;gap:20px;padding:28px 32px}.connect-card-email .connect-info{text-align:left}.connect-card-email .connect-name{margin-bottom:4px;font-size:1.1rem}.connect-card-email .connect-icon{color:#4a90a4;width:56px;height:56px}.connect-icon{flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.connect-icon img,.connect-icon svg{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.connect-icon img,.connect-icon svg,.npm-card,.skill-card,.work-card,.work-image img{transition:all .3s}.connect-name{color:#333;font-family:Poppins,sans-serif;font-size:1rem;font-weight:600}.connect-link{color:#4a90a4;word-break:break-all;font-size:.9rem}.npm-section{padding:60px 0 40px}.npm-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px;display:grid}.npm-card{background:#fff;border-left:4px solid #cb3837;border-radius:8px;flex-direction:column;padding:24px;display:flex;box-shadow:0 2px 10px #00000014}.npm-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #0000001f}.npm-header{align-items:center;gap:16px;margin-bottom:16px;display:flex}.npm-icon{flex-shrink:0;width:48px;height:48px}.npm-icon img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.npm-info{flex-direction:column;gap:4px;display:flex}.npm-name{color:#333;margin:0;font-size:1.2rem;font-weight:600}.article-platform,.npm-name,.npm-version,.skill-name,.tech-tag{font-family:Poppins,sans-serif}.npm-version{color:#666;background:#f5f5f5;border-radius:4px;width:fit-content;padding:2px 8px;font-size:.8rem}.npm-desc{color:#666;flex:1;margin-bottom:16px;font-size:.9rem;line-height:1.6}.npm-footer{justify-content:space-between;align-items:center;gap:12px}.npm-footer,.npm-techs{flex-wrap:wrap;display:flex}.npm-techs{gap:6px}.npm-stats{align-items:center;gap:8px;display:flex}.npm-downloads{color:#666;background:#f5f5f5;border-radius:20px;padding:4px 10px;font-size:.8rem}.works-section{padding:60px 0 80px}.works-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px;display:grid}.work-card{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 10px #00000014}.work-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #0000001f}.work-card:hover .work-image img{transform:scale(1.05)}.work-image{aspect-ratio:1200/800;background:#f5f5f5;position:relative;overflow:hidden}.work-image img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.work-image img:not([style*="display: none"])+.work-image-placeholder{display:none}.work-image-placeholder{color:#666;text-align:center;background:linear-gradient(135deg,#e8e8e8,#f5f5f5);justify-content:center;align-items:center;padding:20px;font-size:.9rem;display:flex;position:absolute;inset:0}.work-content{padding:20px}.work-title{margin-bottom:4px;font-size:1.1rem;font-weight:600}.work-desc{color:#666;margin-bottom:12px;font-size:.85rem;line-height:1.6}.work-techs{flex-wrap:wrap;gap:6px;display:flex}.tech-tag{color:#666;white-space:nowrap;background:#f5f5f5;border-radius:4px;padding:4px 10px;font-size:.7rem;font-weight:500}.skills-section{padding:20px 0 40px}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px;max-width:960px;margin:0 auto;display:grid}.skill-card{text-align:center;background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 10px #00000014}.skill-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #0000001f}.skill-icon{flex-shrink:0;width:64px;height:64px;margin:0 auto 16px}.skill-icon img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.skill-name{margin-bottom:12px;font-size:1rem;font-weight:600}.skill-bar{background:#f5f5f5;border-radius:3px;height:6px;margin-bottom:8px;overflow:hidden}.skill-progress{background:linear-gradient(90deg,#4a90a4,#3a7a8a);border-radius:3px;height:100%;transition:width 1s}.skill-level{color:#666;font-size:.8rem}.articles-section{padding:60px 0 80px}.articles-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.article-platforms-grid,.articles-grid{gap:24px;margin:0 auto 40px;display:grid}.article-platforms-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}.article-card{background:#fff;border-radius:8px;flex-direction:column;padding:18px;transition:all .3s;display:flex;overflow:hidden;box-shadow:0 2px 10px #00000014}.article-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #0000001f}.article-eyecatch{aspect-ratio:16/9;margin:-18px -18px 12px;overflow:hidden}.article-eyecatch img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:all .3s}.article-eyecatch-placeholder{background:#fff;border-radius:8px 8px 0 0;flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.article-eyecatch-placeholder:before{content:"";border-top:56px solid #ccc;border-bottom:0 solid #0000;border-left:0 solid #0000;border-right:56px solid #0000;width:0;height:0;position:absolute;top:0;left:0}.article-eyecatch-placeholder:after{content:"";border-style:solid;border-width:0 0 32px 32px;width:0;height:0;position:absolute;bottom:0;right:0}.article-eyecatch-placeholder.qiita:after{border-color:#0000 #0000 #55c500}.article-eyecatch-placeholder.zenn:after{border-color:#0000 #0000 #3ea8ff}.article-eyecatch-placeholder.note:after{border-color:#0000 #0000 #000}.article-meta{align-items:center;gap:12px;margin-bottom:8px;display:flex}.article-platform{text-transform:uppercase;letter-spacing:.1em;border-radius:4px;padding:3px 8px;font-size:.7rem;font-weight:600}.article-platform.qiita{color:#fff;background:#55c500}.article-platform.zenn{color:#fff;background:#3ea8ff}.article-platform.note{color:#fff;background:#000}.article-date{color:#666;font-size:.8rem}.article-title{flex:1;margin-bottom:8px;font-size:1rem;font-weight:500}.article-footer{color:#666;justify-content:space-between;font-size:.8rem;display:flex}.article-tags{flex-wrap:wrap;gap:6px;display:flex}.article-likes{color:#e74c3c}.article-link{color:#4a90a4;font-size:.85rem;font-weight:500}.pagination-wrapper{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.tag-filter{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.tag-filter-btn{color:#333;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:6px 12px;font-family:Noto Sans JP,sans-serif;font-size:.8rem;font-weight:500;transition:all .3s}.tag-filter-btn:hover{color:#4a90a4;border-color:#4a90a4}.tag-filter-btn.active{color:#fff;background:#4a90a4;border-color:#4a90a4}.tag-filter-btn{color:#666;border-radius:20px;padding:6px 14px}.sort-btn,.sort-controls,.sort-group{display:flex}.sort-group{align-items:center;gap:8px;padding:8px 16px}.sort-label{color:#666;font-size:.85rem;font-weight:500}.sort-btn{color:#333;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:8px;align-items:center;gap:4px;padding:6px 12px;font-family:Noto Sans JP,sans-serif;font-size:.8rem;font-weight:500;transition:all .3s}.sort-btn:hover{color:#4a90a4;border-color:#4a90a4}.sort-btn.active{color:#fff;background:#4a90a4;border-color:#4a90a4}.sort-btn .sort-icon{min-width:10px;font-size:.85rem}.platform-links{justify-content:center;gap:16px;margin-bottom:32px;display:flex}.platform-link{color:#fff;border-radius:8px;padding:12px 32px;font-weight:600;transition:all .3s}.platform-link.qiita{background:#55c500}.platform-link.zenn{background:#3ea8ff}.platform-link:hover{opacity:.8;transform:translateY(-2px)}.pagination{align-items:center;gap:8px;display:flex}.pagination-btn{color:#333;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:10px 20px;font-family:Noto Sans JP,sans-serif;font-size:.9rem;font-weight:500;transition:all .3s}.pagination-btn:hover:not(:disabled){color:#fff;background:#4a90a4;border-color:#4a90a4}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-numbers{align-items:center;gap:4px;display:flex}.pagination-num{color:#333;cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:8px;justify-content:center;align-items:center;min-width:40px;height:40px;padding:0 12px;font-family:Poppins,sans-serif;font-size:.9rem;font-weight:500;transition:all .3s;display:flex}.pagination-num:hover:not(:disabled):not(.active){color:#4a90a4;border-color:#4a90a4}.pagination-num.active{color:#fff;background:#4a90a4;border-color:#4a90a4}.pagination-num.ellipsis{cursor:default;background:0 0;border:none;min-width:32px}.footer{background:#1a1a2e;padding:48px 0}.footer-inner{text-align:center;max-width:1200px;margin:0 auto;padding:0 24px}.copyright{color:#fff6;font-size:.8rem}@media (width<=768px){.nav{background:#1a1a2e;flex-direction:column;gap:4px;padding:16px;display:none;position:absolute;top:70px;left:0;right:0}.mobile-menu-btn,.nav.active{display:flex}.about-content{text-align:center;flex-direction:column;gap:32px}.about-image img{width:150px;height:150px}.pagination,.social-links,.sort-controls,.tag-filter{justify-content:center}.npm-grid,.works-grid{grid-template-columns:1fr}.connect-grid{grid-template-columns:repeat(2,1fr)}.connect-card-email{grid-column:1/-1}.pagination-wrapper{flex-direction:column;align-items:stretch;gap:12px}.pagination{flex-wrap:wrap;gap:8px}.pagination-btn{padding:8px 16px;font-size:.85rem}.pagination-num{min-width:36px;height:36px;font-size:.85rem}.sort-group{gap:6px;padding:8px 12px}.sort-label{font-size:.8rem}.sort-btn{padding:5px 10px;font-size:.75rem}}
