:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}#root{min-height:100vh}:root{--main-color:#2563eb;--main-color-dark:#1d4ed8;--text-color:#1f2937;--sub-text:#6b7280;--bg-gradient:radial-gradient(circle at top, #f8fbff 0%, #eef3f8 35%, #e9edf3 100%);--card-bg:#ffffffeb;--card-border:#ffffffb3;--shadow-sm:0 6px 18px #0f172a0f;--shadow-md:0 12px 32px #0f172a17;--shadow-lg:0 20px 48px #0f172a24}body{background:var(--bg-gradient);color:var(--text-color);font-family:Inter,Noto Sans JP,sans-serif;line-height:1.7;overflow-x:hidden}.container{max-width:1100px;margin:0 auto;padding:0 20px}section{padding:88px 0}h1,h2,h3,h4,p{margin:0}h1,h2,h3{color:#111827;line-height:1.3}h2{text-align:center;letter-spacing:.01em;margin-bottom:14px;font-size:2rem;position:relative}h2:after{content:"";background:linear-gradient(90deg, var(--main-color), #60a5fa);border-radius:999px;width:64px;height:4px;margin:12px auto 0;display:block}p{color:var(--text-color)}.section-label,.hero-label{color:var(--main-color);letter-spacing:.18em;text-transform:uppercase;margin-bottom:14px;font-size:.78rem;font-weight:700;display:inline-block}.section-desc{color:#4b5563;max-width:720px;margin:0 auto}.header a,.contact a,.about a{position:relative}.header a:after,.contact a:after,.about a:after{content:"";background:var(--main-color);width:0;height:2px;transition:width .3s;position:absolute;bottom:-3px;left:0}.header a:hover:after,.contact a:hover:after,.about a:hover:after{width:100%}.header{-webkit-backdrop-filter:blur(14px);z-index:50;background:#ffffffc7;border-bottom:1px solid #e2e8f0e6;width:100%;position:sticky;top:0;box-shadow:0 2px 12px #0f172a0a}.header-inner{justify-content:space-between;align-items:center;min-height:72px;display:flex}.header h1,.header .logo{letter-spacing:-.03em;margin:0;font-size:1.9rem;font-weight:800}.header nav{align-items:center;gap:22px;display:flex}.header a{color:#4b5563;font-size:.95rem;font-weight:500;transition:color .25s}.header a:hover{color:var(--main-color)}.hero{text-align:center;background:radial-gradient(circle at 100% 0,#2563eb1f,#0000 28%),linear-gradient(135deg,#eef6ff,#f8fafc 52%,#f3f7fb);width:100%;padding:120px 0 110px;position:relative;overflow:hidden}.hero .container{z-index:1;position:relative}.hero:before{content:"";filter:blur(10px);background:#2563eb17;border-radius:50%;width:280px;height:280px;position:absolute;top:-80px;right:-80px}.hero:after{content:"";filter:blur(8px);background:#60a5fa1f;border-radius:50%;width:160px;height:160px;position:absolute;bottom:-100px;left:-60px}.hero h2{opacity:0;margin-bottom:18px;font-size:clamp(2.2rem,5vw,3.5rem);animation:.8s forwards fade-up;transform:translateY(20px)}.hero h2:after{display:none}.hero p{color:#475569;opacity:0;max-width:680px;margin:0 auto 28px;font-size:1.05rem;animation:.8s .18s forwards fade-up;transform:translateY(20px)}.hero-actions{justify-content:center;margin-bottom:28px;display:flex}.hero .btn{opacity:0;width:100%;min-width:0;max-width:260px;animation:.8s .36s forwards fade-up;transform:translateY(20px)}.hero-text{font-size:.98rem;line-height:1.8}.hero-sub{font-size:.84rem}@keyframes fade-up{to{opacity:1;transform:translateY(0)}}.project-links{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:20px;display:flex}.btn{border-radius:999px;padding:10px 18px;font-size:14px;font-weight:500}.outline-btn{color:#2563eb;background:#fff;border:2px solid #2563eb}.outline-btn:hover{background:#eff6ff}.btn,.contact-btn{background:linear-gradient(135deg, var(--main-color), #3b82f6);color:#fff;letter-spacing:.01em;border-radius:12px;justify-content:center;align-items:center;padding:12px 24px;font-weight:700;transition:transform .25s,box-shadow .25s,background .25s;display:inline-flex;box-shadow:0 10px 24px #2563eb3d}.btn:hover,.contact-btn:hover{background:linear-gradient(135deg, var(--main-color-dark), var(--main-color));transform:translateY(-3px);box-shadow:0 16px 30px #2563eb47}.contact-btn.outline{color:var(--main-color);border:2px solid var(--main-color);box-shadow:none;background:#fff}.contact-btn.outline:hover{background:#eff6ff}.projects{text-align:center}.project-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:stretch;gap:32px;margin-top:44px;display:grid}.card{background:var(--card-bg);border:1px solid var(--card-border);border-top:4px solid var(--main-color);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);border-radius:22px;padding:20px 20px 24px;transition:transform .28s,box-shadow .28s,border-color .28s;position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;background:linear-gradient(#ffffff3d 0%,#fff0 30%);position:absolute;inset:0}.card:hover{box-shadow:var(--shadow-lg);border-color:#bfdbfee6;transform:translateY(-8px)}.card img{object-fit:cover;background:linear-gradient(#f8fbff 0%,#eef4ff 100%);border:1px solid #dbeafe;border-radius:14px;width:100%;height:190px;margin-bottom:18px;transition:transform .45s;box-shadow:inset 0 1px #ffffffb3}.card:hover img{transform:scale(1.03)}.card h3{letter-spacing:-.02em;margin-bottom:12px;font-size:1.55rem}.card p{color:#374151;font-size:.97rem}.card p+p{margin-top:10px}.card strong{color:#111827}.card>.btn{margin-top:18px}.card-section{background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--shadow-md);border-radius:20px;margin-top:40px;padding:40px 20px}.card img{object-fit:cover;object-position:top;background:#f8fbff;border:1px solid #dbeafe;border-radius:14px;width:100%;height:190px;margin-bottom:18px;display:block}.project-grid{margin-top:30px}.badge{letter-spacing:.03em;color:#15803d;background:#eefbf3;border:1px solid #bbf7d0;border-radius:999px;justify-content:center;align-items:center;margin:4px 0 14px;padding:6px 12px;font-size:.8rem;font-weight:700;line-height:1;display:inline-flex}.badge.gray{color:#c2410c;background:#fff7ed;border-color:#fdba74}.tags{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:18px;display:flex}.tag,.skill-list li{color:var(--main-color);background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;justify-content:center;align-items:center;font-weight:600;line-height:1;display:inline-flex}.tag{padding:6px 10px;font-size:.76rem;box-shadow:0 2px 6px #2563eb0f}.about,.contact{box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);text-align:center;background:#ffffffe6;border:1px solid #ffffffb3;border-radius:22px;margin-top:40px;padding:40px}.about p,.contact p,.about li,.contact li{color:#374151}.about ul{margin:0;padding:0;list-style:none}.about ul:not(.skill-list) li+li{margin-top:10px}.about h2{margin-bottom:28px}.about-intro{margin-bottom:32px}.about-intro p+p{margin-top:16px}.about-block+.about-block{border-top:1px solid #e5e7eb;margin-top:28px;padding-top:24px}.about h3{color:#111827;margin-bottom:12px;font-size:1.1rem}.skill-list{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0;padding:0;list-style:none;display:flex}.skill-list li{box-sizing:border-box;margin:0;padding:8px 12px;font-size:.9rem}.contact-message{color:#4b5563;margin-bottom:28px}.contact-item{flex-direction:column;align-items:center;gap:6px;margin-bottom:18px;display:flex}.contact-item span{color:#6b7280;letter-spacing:.05em;font-size:.8rem}.contact-item a{color:var(--main-color);word-break:break-all;font-size:1rem;font-weight:600}.contact-buttons{flex-wrap:wrap;justify-content:center;gap:14px;margin-top:20px;display:flex}.footer{text-align:center;color:#6b7280;-webkit-backdrop-filter:blur(8px);background:#ffffffc7;border-top:1px solid #e2e8f0e6;padding:32px 0}@media (width<=768px){section{padding:68px 0}.container{padding:0 16px}.header-inner{min-height:64px}.header h1,.header .logo{font-size:1.45rem}.header nav{gap:12px}.header a{font-size:.82rem}.hero{padding:92px 0 84px}.hero h2{font-size:2rem}.hero p{font-size:.97rem}.hero-actions{margin-bottom:24px}.project-grid{grid-template-columns:1fr;gap:24px}.card{border-radius:18px;padding:18px 18px 22px}.card img{height:180px}.about,.contact{border-radius:18px;padding:28px 20px}}@media (width<=480px){.header nav{gap:10px}.hero h2{font-size:1.75rem}.btn,.contact-btn{text-align:center;width:100%;max-width:260px}.card h3{font-size:1.3rem}.card img{height:170px}}
