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