/* Header */
header {
    position: fixed;
    top: 0;
    width: 100%;
    background: rgba(var(--color-bg-rgb), 0.95);
    backdrop-filter: blur(10px);
    z-index: 1000;
    padding: 1rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

header.scrolled {
    background: rgba(var(--color-bg-rgb), 0.98);
    box-shadow: 0 2px 20px rgba(var(--color-primary-rgb), 0.1);
}

.nav-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

.logo .name-link {
    font-size: 1.8rem;
    font-weight: bold;
    color: var(--color-primary);
    text-decoration: none;
    transition: all 0.3s ease;
}

.logo .name-link:hover {
    color: var(--color-primary-light);
    text-shadow: 0 0 10px rgba(var(--color-primary-rgb), 0.5);
}

.nav-menu {
    display: flex;
    align-items: center;
    gap: 2rem;
}

.nav-link {
    color: var(--color-text);
    text-decoration: none;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    transition: all 0.3s ease;
    position: relative;
}

.nav-link:hover {
    color: var(--color-primary);
    background: rgba(var(--color-primary-rgb), 0.1);
    transform: translateY(-2px);
}

.nav-link.active {
    color: #ffffff;
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
    box-shadow: 0 4px 15px rgba(var(--color-primary-rgb), 0.3);
    transform: translateY(-1px);
    position: relative;
    padding-left: 1.5rem;
}

.nav-link.active::before {
    content: '●';
    position: absolute;
    left: 0.3rem;
    top: 50%;
    transform: translateY(-50%);
    color: #ffffff;
    font-size: 0.6rem;
    opacity: 0.8;
}

.nav-link::after {
    content: '';
    position: absolute;
    width: 0;
    height: 2px;
    bottom: -5px;
    left: 50%;
    background: var(--color-primary);
    transition: all 0.3s ease;
}

.nav-link:hover::after,
.nav-link.active::after {
    width: 100%;
    left: 0;
}

.nav-link.active::after {
    background: #ffffff;
}

.nav-link.active:hover {
    color: #ffffff;
    background: linear-gradient(135deg, var(--color-primary-light), var(--color-primary));
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(var(--color-primary-rgb), 0.4);
}

.lang-btn {
    background: rgba(var(--color-primary-rgb), 0.2);
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
    padding: 0.5rem 1rem;
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.3s ease;
    font-size: 0.9rem;
}

.lang-btn:hover {
    background: var(--color-primary);
    color: white;
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(var(--color-primary-rgb), 0.3);
}

/* Profile Image */
.profile-image {
    margin-bottom: 2rem;
}

.profile-image img {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    border: 3px solid var(--color-primary);
    box-shadow: 0 0 30px rgba(var(--color-primary-rgb), 0.3);
    transition: all 0.3s ease;
}

.profile-image img:hover {
    transform: scale(1.05);
    box-shadow: 0 0 40px rgba(var(--color-primary-rgb), 0.5);
}

/* Social Links */
.social-links {
    display: flex;
    justify-content: center;
    gap: 1.5rem;
    margin-top: 2rem;
}

.social-link {
    width: 50px;
    height: 50px;
    background: rgba(var(--color-primary-rgb), 0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-primary);
    font-size: 1.2rem;
    text-decoration: none;
    transition: all 0.3s ease;
    border: 1px solid rgba(var(--color-primary-rgb), 0.3);
}

.social-link:hover {
    background: var(--color-primary);
    color: white;
    transform: translateY(-5px) scale(1.1);
    box-shadow: 0 10px 25px rgba(var(--color-primary-rgb), 0.4);
}

/* Custom Tooltip Styles */
.social-link {
    position: relative;
}

.social-link::after {
    content: attr(title);
    position: absolute;
    bottom: -40px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 0.5rem 0.8rem;
    border-radius: 6px;
    font-size: 0.8rem;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    z-index: 1000;
    pointer-events: none;
}

.social-link::before {
    content: '';
    position: absolute;
    bottom: -34px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-bottom: 5px solid rgba(0, 0, 0, 0.9);
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    z-index: 1000;
    pointer-events: none;
}

.social-link:hover::after,
.social-link:hover::before {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(-5px);
}

/* Email Contact */
.email-contact {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 2rem;
    padding: 0.75rem 1.5rem;
    background: rgba(var(--color-primary-rgb), 0.05);
    border-radius: 25px;
    border: 1px solid rgba(var(--color-primary-rgb), 0.2);
    max-width: fit-content;
    margin-left: auto;
    margin-right: auto;
    transition: all 0.3s ease;
}

.email-contact:hover {
    background: rgba(var(--color-primary-rgb), 0.1);
    border-color: rgba(var(--color-primary-rgb), 0.4);
    transform: translateY(-2px);
}

.email-contact i {
    color: var(--color-primary);
    font-size: 1.1rem;
}

.email-contact a {
    color: var(--color-text-muted);
    text-decoration: none;
    font-size: 0.95rem;
    transition: color 0.3s ease;
}

.email-contact a:hover {
    color: var(--color-primary);
}

/* Page Hero */
.page-hero {
    padding: 6rem 0 4rem;
    text-align: center;
    background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.1), rgba(128, 204, 255, 0.05));
}

.page-hero h1 {
    font-size: 2.5rem;
    margin-bottom: 1rem;
    color: var(--color-primary);
}

.page-hero p {
    font-size: 1.1rem;
    color: var(--color-text-muted);
}

/* Overview Section */
.overview {
    padding: 6rem 0;
}

.overview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: 2rem;
}

.overview-card {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 15px;
    padding: 2rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    transition: all 0.3s ease;
    backdrop-filter: blur(10px);
}

.overview-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 20px 40px rgba(var(--color-primary-rgb), 0.1);
}

.overview-card h3 {
    font-size: 1.5rem;
    margin-bottom: 1rem;
    color: var(--color-primary);
}

.overview-card p {
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
}

.project-list, .blog-list {
    margin-bottom: 1.5rem;
}

.project-item, .blog-item {
    padding: 1rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.project-item:last-child, .blog-item:last-child {
    border-bottom: none;
}

.project-item h4, .blog-item h4 {
    color: var(--color-text);
    margin-bottom: 0.5rem;
    font-size: 1rem;
}

.project-item p, .blog-item p {
    color: var(--color-text-faint);
    font-size: 0.9rem;
}

.card-link {
    display: inline-block;
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 500;
    transition: all 0.3s ease;
}

.card-link:hover {
    color: var(--color-primary-light);
    text-shadow: 0 0 5px rgba(var(--color-primary-rgb), 0.5);
}

/* About Summary Styles for Home Page */
.about-summary {
    margin-bottom: 1.5rem;
}

.about-bio {
    color: var(--color-text-muted);
    line-height: 1.6;
    margin-bottom: 1.5rem;
    font-size: 0.95rem;
}

.skills-summary {
    margin-bottom: 1.5rem;
}

.skills-summary h4 {
    color: var(--color-text);
    font-size: 1rem;
    margin-bottom: 0.75rem;
}

.skill-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.skill-tag {
    padding: 0.4rem 0.9rem;
    background: linear-gradient(135deg, #a8d5ff 0%, #7fb3ff 100%);
    color: #2563eb;
    border: none;
    border-radius: 12px;
    font-size: 0.85rem;
    font-weight: 500;
    box-shadow: 0 2px 4px rgba(37, 99, 235, 0.15);
    transition: all 0.3s ease;
}

.skill-tag:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(37, 99, 235, 0.25);
}

.github-summary h4 {
    color: var(--color-text);
    font-size: 1rem;
    margin-bottom: 0.75rem;
}

.github-stats-mini {
    display: flex;
    gap: 1.5rem;
}

.github-stats-mini .stat-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.github-stats-mini .stat-item i {
    color: var(--color-primary);
    font-size: 1.1rem;
}

.github-stats-mini .stat-value {
    color: var(--color-text);
    font-size: 1.2rem;
    font-weight: 600;
}

.github-stats-mini .stat-label {
    color: var(--color-text-faint);
    font-size: 0.85rem;
    margin-left: 0.25rem;
}

/* GitHub Stats Vertical Layout for Home Page */
.github-stats-mini-vertical {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.github-stats-mini-vertical .stat-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.github-stats-mini-vertical .stat-item i {
    color: var(--color-primary);
    font-size: 1.2rem;
    width: 24px;
    text-align: center;
}

.github-stats-mini-vertical .stat-label {
    color: var(--color-text-faint);
    font-size: 0.9rem;
    flex: 1;
}

.github-stats-mini-vertical .stat-value {
    color: var(--color-text);
    font-size: 1.2rem;
    font-weight: 600;
}

/* About List Styles for Home Page */
.about-list {
    margin-bottom: 2rem;
}

.about-item {
    padding: 1.5rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.about-item:first-child {
    padding-top: 0;
}

.about-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.about-item h4 {
    color: var(--color-text);
    margin-bottom: 0.75rem;
    font-size: 1rem;
    font-weight: 600;
}

.about-item p {
    color: var(--color-text-muted);
    line-height: 1.6;
    font-size: 0.95rem;
    margin: 0;
}

/* About Page Specific */
.about-content {
    padding: 4rem 0;
}

.about-grid {
    display: grid;
    gap: 3rem;
    max-width: 900px;
    margin: 0 auto;
}

.profile-section {
    display: flex;
    gap: 2rem;
    align-items: center;
    background: rgba(255, 255, 255, 0.05);
    border-radius: 15px;
    padding: 2rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.profile-section .profile-image img {
    width: 200px;
    height: 200px;
}

.profile-info h2 {
    color: var(--color-primary);
    margin-bottom: 0.5rem;
}

.role {
    color: var(--color-text-muted);
    margin-bottom: 1rem;
}

.bio-section, .skills-section, .certifications-section, .achievements-section, .education-section {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 15px;
    padding: 2rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.bio-section h3, .skills-section h3, .certifications-section h3, .achievements-section h3, .education-section h3 {
    color: var(--color-primary);
    margin-bottom: 1.5rem;
    font-size: 1.3rem;
}

.skills-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 2rem;
}

.skill-category h4 {
    color: var(--color-text);
    margin-bottom: 1rem;
}

.skill-category ul {
    list-style: none;
}

.skill-category li {
    color: var(--color-text-muted);
    padding: 0.3rem 0;
    position: relative;
    padding-left: 1rem;
}

.skill-category li::before {
    content: '▸';
    color: var(--color-primary);
    position: absolute;
    left: 0;
}

/* Certifications Section */
.certifications-list {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.certification-item {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem;
    background: rgba(255, 255, 255, 0.03);
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, 0.05);
    transition: all 0.3s ease;
}

.certification-item:hover {
    background: rgba(255, 255, 255, 0.05);
    border-color: rgba(var(--color-primary-rgb), 0.3);
    transform: translateX(5px);
}

.cert-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    min-width: 40px;
    background: rgba(var(--color-primary-rgb), 0.1);
    border-radius: 8px;
    color: var(--color-primary);
    font-size: 1.2rem;
}

.cert-details {
    flex: 1;
}

.cert-details h4 {
    color: var(--color-text);
    margin: 0 0 0.3rem 0;
    font-size: 1.05rem;
    font-weight: 600;
}

.cert-meta {
    color: #888;
    font-size: 0.9rem;
    margin: 0;
}

.achievements-list {
    display: grid;
    gap: 1.5rem;
}

.achievement-item {
    background: rgba(255, 255, 255, 0.03);
    border-radius: 10px;
    padding: 1.5rem;
    border-left: 3px solid var(--color-primary);
}

.achievement-item h4 {
    color: var(--color-primary);
    margin-bottom: 0.5rem;
}

.timeline {
    position: relative;
    padding-left: 2rem;
}

.timeline::before {
    content: '';
    position: absolute;
    left: 1rem;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--color-primary);
}

.timeline-item {
    position: relative;
    margin-bottom: 2rem;
}

.timeline-item::before {
    content: '';
    position: absolute;
    left: -2.5rem;
    top: 0;
    width: 10px;
    height: 10px;
    background: var(--color-primary);
    border-radius: 50%;
}

.timeline-date {
    color: var(--color-primary);
    font-weight: bold;
    margin-bottom: 0.5rem;
}

.timeline-content h4 {
    color: var(--color-text);
    margin-bottom: 0.5rem;
}

/* Projects Page */
.projects-content {
    padding: 4rem 0;
}

.projects-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    gap: 2rem;
}

.project-card {
    background: rgba(26, 26, 26, 0.8);
    border: 1px solid #333;
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.project-card:hover {
    transform: translateY(-5px);
    border-color: var(--color-primary);
    box-shadow: 0 12px 35px rgba(var(--color-primary-rgb), 0.2);
}

.project-card.featured {
    grid-column: span 2;
}

.project-image {
    position: relative;
    width: 100%;
    height: 200px;
    overflow: hidden;
}

.project-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.project-card:hover .project-image img {
    transform: scale(1.05);
}

.project-content {
    padding: 1.5rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.project-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.project-title {
    color: var(--color-text);
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    flex: 1;
}

.project-stats {
    display: flex;
    align-items: center;
    margin-left: 1rem;
}

.star-count {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #ffd700;
    font-size: 1rem;
    font-weight: 500;
    padding: 0.4rem 0.7rem;
    background: rgba(255, 215, 0, 0.1);
    border-radius: 12px;
    border: 1px solid rgba(255, 215, 0, 0.2);
}

.star-count i {
    font-size: 1rem;
}

.star-number {
    color: #ffd700;
    font-weight: 600;
}

.project-description {
    color: var(--color-text-muted);
    line-height: 1.6;
    margin-bottom: 1.5rem;
    flex: 1;
}

.project-info {
    padding: 2rem;
}

.project-tags, .blog-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.tag {
    background: rgba(var(--color-primary-rgb), 0.2);
    color: var(--color-primary);
    padding: 0.3rem 0.8rem;
    border-radius: 15px;
    font-size: 0.8rem;
    border: 1px solid rgba(var(--color-primary-rgb), 0.3);
    font-weight: 500;
}

/* プロジェクトタグの色分け */
.tag.tag-python {
    background: rgba(255, 193, 7, 0.2);
    color: #ffc107;
    border-color: rgba(255, 193, 7, 0.3);
}

.tag.tag-javascript {
    background: rgba(240, 219, 79, 0.2);
    color: #f0db4f;
    border-color: rgba(240, 219, 79, 0.3);
}

.tag.tag-react {
    background: rgba(97, 218, 251, 0.2);
    color: #61dafb;
    border-color: rgba(97, 218, 251, 0.3);
}

.tag.tag-nodejs {
    background: rgba(76, 175, 80, 0.2);
    color: #4caf50;
    border-color: rgba(76, 175, 80, 0.3);
}

.tag.tag-tensorflow {
    background: rgba(255, 152, 0, 0.2);
    color: #ff9800;
    border-color: rgba(255, 152, 0, 0.3);
}

.tag.tag-pytorch {
    background: rgba(238, 88, 37, 0.2);
    color: #ee5825;
    border-color: rgba(238, 88, 37, 0.3);
}

.tag.tag-fastapi {
    background: rgba(0, 150, 136, 0.2);
    color: #009688;
    border-color: rgba(0, 150, 136, 0.3);
}

.tag.tag-aws {
    background: rgba(255, 152, 0, 0.2);
    color: #ff9800;
    border-color: rgba(255, 152, 0, 0.3);
}

.tag.tag-docker {
    background: rgba(33, 150, 243, 0.2);
    color: #2196f3;
    border-color: rgba(33, 150, 243, 0.3);
}

.tag.tag-firebase {
    background: rgba(255, 193, 7, 0.2);
    color: #ffc107;
    border-color: rgba(255, 193, 7, 0.3);
}

.tag.tag-opencv {
    background: rgba(76, 175, 80, 0.2);
    color: #4caf50;
    border-color: rgba(76, 175, 80, 0.3);
}

.tag.tag-d3js {
    background: rgba(255, 152, 0, 0.2);
    color: #ff9800;
    border-color: rgba(255, 152, 0, 0.3);
}

.tag.tag-html5canvas {
    background: rgba(255, 87, 34, 0.2);
    color: #ff5722;
    border-color: rgba(255, 87, 34, 0.3);
}

.tag.tag-expo {
    background: rgba(33, 150, 243, 0.2);
    color: #2196f3;
    border-color: rgba(33, 150, 243, 0.3);
}

.tag.tag-reactnative {
    background: rgba(97, 218, 251, 0.2);
    color: #61dafb;
    border-color: rgba(97, 218, 251, 0.3);
}

.tag.tag-postgresql {
    background: rgba(51, 103, 145, 0.2);
    color: #336791;
    border-color: rgba(51, 103, 145, 0.3);
}

.tag.tag-pandas {
    background: rgba(150, 208, 255, 0.2);
    color: #150458;
    border-color: rgba(150, 208, 255, 0.3);
}

.tag.tag-matplotlib {
    background: rgba(17, 17, 17, 0.2);
    color: #11557c;
    border-color: rgba(17, 17, 17, 0.3);
}

.tag.tag-jupyter {
    background: rgba(247, 119, 34, 0.2);
    color: #f77722;
    border-color: rgba(247, 119, 34, 0.3);
}

.project-tag, .blog-tag {
    padding: 0.3rem 0.8rem;
    background: rgba(var(--color-primary-rgb), 0.1);
    color: var(--color-primary);
    border: 1px solid rgba(var(--color-primary-rgb), 0.2);
    border-radius: 12px;
    font-size: 0.8rem;
    font-weight: 500;
    transition: all 0.3s ease;
}

.project-tag:hover, .blog-tag:hover {
    background: rgba(var(--color-primary-rgb), 0.2);
    border-color: rgba(var(--color-primary-rgb), 0.4);
}

/* 2420行あたりはデッドコード */
/* 以下はプロジェクトとブログの両方で使われている */

/* Project Tag Colors - Vibrant Pastels */
/* TODO: 色が適切か見直し */

/* ==== Programming ==== */
.project-tag.tag-python { background: linear-gradient(135deg, #a8d5ff 0%, #7fb3ff 100%); color: #2563eb; border: none; box-shadow: 0 2px 4px rgba(37, 99, 235, 0.15); }
.project-tag.tag-javascript { background: linear-gradient(135deg, #fff7a8 0%, #ffed4e 100%); color: #d97706; border: none; box-shadow: 0 2px 4px rgba(217, 119, 6, 0.15); }
.project-tag.tag-cpp { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1e40af; border: none; box-shadow: 0 2px 4px rgba(30, 64, 175, 0.15); }

/* ==== AI / Machine Learning / Data Science ==== */
.project-tag.tag-ai { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.project-tag.tag-ml { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.project-tag.tag-deep-learning { background: linear-gradient(135deg, #ddd6fe 0%, #c4b5fd 100%); color: #6b21a8; border: none; box-shadow: 0 2px 4px rgba(107, 33, 168, 0.15); }
.project-tag.tag-nlp { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.project-tag.tag-kaggle { background: linear-gradient(135deg, #a5f3fc 0%, #67e8f9 100%); color: #0e7490; border: none; box-shadow: 0 2px 4px rgba(14, 116, 144, 0.15); }
.project-tag.tag-transformer { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #ea580c; border: none; box-shadow: 0 2px 4px rgba(234, 88, 12, 0.15); }
.project-tag.tag-tensorflow { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.project-tag.tag-datascience { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1d4ed8; border: none; box-shadow: 0 2px 4px rgba(29, 78, 216, 0.15); }
.project-tag.tag-openai { background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%); color: #047857; border: none; box-shadow: 0 2px 4px rgba(4, 120, 87, 0.15); }

/* ==== Computer Science / Algorithm ==== */
.project-tag.tag-algorithm { background: linear-gradient(135deg, #ddd6fe 0%, #c4b5fd 100%); color: #6b21a8; border: none; box-shadow: 0 2px 4px rgba(107, 33, 168, 0.15); }
.project-tag.tag-graph-theory { background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%); color: #4338ca; border: none; box-shadow: 0 2px 4px rgba(67, 56, 202, 0.15); }
.project-tag.tag-computer-science { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1e40af; border: none; box-shadow: 0 2px 4px rgba(30, 64, 175, 0.15); }
.project-tag.tag-data-structures { background: linear-gradient(135deg, #d8b4fe 0%, #c084fc 100%); color: #7e22ce; border: none; box-shadow: 0 2px 4px rgba(126, 34, 206, 0.15); }
.project-tag.tag-atcoder { background: linear-gradient(135deg, #d4d4d8 0%, #a1a1aa 100%); color: #27272a; border: none; box-shadow: 0 2px 4px rgba(39, 39, 42, 0.15); }

/* ==== 3D / Graphics ==== */
.project-tag.tag-blender { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.project-tag.tag-unity { background: linear-gradient(135deg, #d4d4d8 0%, #a1a1aa 100%); color: #27272a; border: none; box-shadow: 0 2px 4px rgba(39, 39, 42, 0.15); }
.project-tag.tag-3d-modeling { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.project-tag.tag-vrm { background: linear-gradient(135deg, #99f6e4 0%, #5eead4 100%); color: #0f766e; border: none; box-shadow: 0 2px 4px rgba(15, 118, 110, 0.15); }

/* ==== Creative / Character / Animation ==== */
.project-tag.tag-aituber { background: linear-gradient(135deg, #ffc9e0 0%, #ff8fb3 100%); color: #be185d; border: none; box-shadow: 0 2px 4px rgba(190, 24, 93, 0.15); }
.project-tag.tag-animation { background: linear-gradient(135deg, #d8b4fe 0%, #c084fc 100%); color: #7e22ce; border: none; box-shadow: 0 2px 4px rgba(126, 34, 206, 0.15); }
.project-tag.tag-character-design { background: linear-gradient(135deg, #f9c5ff 0%, #f08fff 100%); color: #a21caf; border: none; box-shadow: 0 2px 4px rgba(162, 28, 175, 0.15); }

/* ==== Web Frontend ==== */
.project-tag.tag-react { background: linear-gradient(135deg, #b3f0ff 0%, #61dafb 100%); color: #0369a1; border: none; box-shadow: 0 2px 4px rgba(3, 105, 161, 0.15); }
.project-tag.tag-webgl { background: linear-gradient(135deg, #ffc9e0 0%, #ff8fb3 100%); color: #be185d; border: none; box-shadow: 0 2px 4px rgba(190, 24, 93, 0.15); }
.project-tag.tag-threejs { background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%); color: #047857; border: none; box-shadow: 0 2px 4px rgba(4, 120, 87, 0.15); }
.project-tag.tag-html { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #ea580c; border: none; box-shadow: 0 2px 4px rgba(234, 88, 12, 0.15); }

/* ==== Web Backend ==== */
.project-tag.tag-backend { background: linear-gradient(135deg, #99f6e4 0%, #5eead4 100%); color: #0f766e; border: none; box-shadow: 0 2px 4px rgba(15, 118, 110, 0.15); }
.project-tag.tag-nodejs { background: linear-gradient(135deg, #b3f0ff 0%, #61dafb 100%); color: #0369a1; border: none; box-shadow: 0 2px 4px rgba(3, 105, 161, 0.15); }
.project-tag.tag-rest-api { background: linear-gradient(135deg, #a5f3fc 0%, #67e8f9 100%); color: #0e7490; border: none; box-shadow: 0 2px 4px rgba(14, 116, 144, 0.15); }
.project-tag.tag-fastapi { background: linear-gradient(135deg, #99f6e4 0%, #5eead4 100%); color: #0f766e; border: none; box-shadow: 0 2px 4px rgba(15, 118, 110, 0.15); }
.project-tag.tag-web-dev { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1d4ed8; border: none; box-shadow: 0 2px 4px rgba(29, 78, 216, 0.15); }

/* ==== Others ==== */
.project-tag.tag-tool-development { background: linear-gradient(135deg, #d4d4d8 0%, #a1a1aa 100%); color: #18181b; border: none; box-shadow: 0 2px 4px rgba(24, 24, 27, 0.15); }
.project-tag.tag-software-dev { background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%); color: #059669; border: none; box-shadow: 0 2px 4px rgba(5, 150, 105, 0.15); }

.project-info h3 {
    color: var(--color-primary);
    margin-bottom: 1rem;
    font-size: 1.3rem;
}

.project-info p {
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

.project-links {
    display: flex;
    gap: 1rem;
    margin-top: auto;
}

.project-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    background: rgba(var(--color-primary-rgb), 0.1);
    color: var(--color-primary);
    text-decoration: none;
    border: 1px solid rgba(var(--color-primary-rgb), 0.2);
    border-radius: 8px;
    font-size: 0.9rem;
    font-weight: 500;
    transition: all 0.3s ease;
}

.project-link:hover {
    background: rgba(var(--color-primary-rgb), 0.2);
    border-color: rgba(var(--color-primary-rgb), 0.4);
    transform: translateY(-2px);
}

.project-link i {
    font-size: 1rem;
}

/* Search and Filter Styles */
.projects-filters {
    margin-bottom: 3rem;
}

.blog-search-container {
    margin-bottom: 2rem;
}

.search-container {
    position: relative;
    max-width: 400px;
    margin: 0 auto;
}

.search-container input {
    width: 100%;
    padding: 1rem 1rem 1rem 3rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 25px;
    color: var(--color-text);
    font-size: 1rem;
    transition: all 0.3s ease;
}

.search-container input:focus {
    outline: none;
    border-color: var(--color-primary);
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 0 15px rgba(var(--color-primary-rgb), 0.2);
}

.search-container input::placeholder {
    color: var(--color-text-faint);
}

.search-icon {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--color-text-faint);
    font-size: 1rem;
}

.tag-filters {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-top: 2rem;
    flex-wrap: wrap;
}

.tag-filter-btn {
    background: rgba(255, 255, 255, 0.05);
    color: var(--color-text-muted);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 0.5rem 1rem;
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.3s ease;
    font-size: 0.9rem;
    display: inline-block;
    min-width: 60px;
    text-align: center;
    user-select: none;
    position: relative;
    z-index: 1;
}

.tag-filter-btn:hover,
.tag-filter-btn.active {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(var(--color-primary-rgb), 0.3);
}

.tag-filter-btn::before {
    content: '';
    position: absolute;
    top: -10px;
    left: -10px;
    right: -10px;
    bottom: -10px;
    border-radius: 30px;
    z-index: 0;
    pointer-events: all;
    cursor: pointer;
}

/* Blog Page */
.blog-content {
    padding: 4rem 0;
}

.blog-filters {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-bottom: 3rem;
    flex-wrap: wrap;
}

.filter-btn {
    background: rgba(255, 255, 255, 0.05);
    color: var(--color-text-muted);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 0.7rem 1.5rem;
    border-radius: 25px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: inline-block;
    min-width: 80px;
    text-align: center;
    user-select: none;
    position: relative;
    z-index: 1;
}

.filter-btn:hover,
.filter-btn.active {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(var(--color-primary-rgb), 0.3);
}

/* フィルターボタンの色分け */
.filter-btn[data-category="ai"]:hover,
.filter-btn[data-category="ai"].active {
    background: #ff6b6b;
    border-color: #ff6b6b;
    box-shadow: 0 5px 15px rgba(255, 107, 107, 0.3);
}

.filter-btn[data-category="web"]:hover,
.filter-btn[data-category="web"].active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    box-shadow: 0 5px 15px rgba(var(--color-primary-rgb), 0.3);
}

.filter-btn[data-category="algorithm"]:hover,
.filter-btn[data-category="algorithm"].active {
    background: #4caf50;
    border-color: #4caf50;
    box-shadow: 0 5px 15px rgba(76, 175, 80, 0.3);
}

.filter-btn[data-category="learning"]:hover,
.filter-btn[data-category="learning"].active {
    background: #ffc107;
    border-color: #ffc107;
    box-shadow: 0 5px 15px rgba(255, 193, 7, 0.3);
    color: #333;
}

.filter-btn[data-category="tips"]:hover,
.filter-btn[data-category="tips"].active {
    background: #9c27b0;
    border-color: #9c27b0;
    box-shadow: 0 5px 15px rgba(156, 39, 176, 0.3);
}

.filter-btn[data-category="tutorial"]:hover,
.filter-btn[data-category="tutorial"].active {
    background: #ff9800;
    border-color: #ff9800;
    box-shadow: 0 5px 15px rgba(255, 152, 0, 0.3);
}

.filter-btn::before {
    content: '';
    position: absolute;
    top: -10px;
    left: -10px;
    right: -10px;
    bottom: -10px;
    border-radius: 35px;
    z-index: 0;
    pointer-events: all;
    cursor: pointer;
}

.blog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    gap: 2rem;
}

.blog-card {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 15px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.1);
    transition: all 0.3s ease;
}

.blog-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 20px 40px rgba(var(--color-primary-rgb), 0.1);
}

.blog-image img {
    width: 100%;
    height: 200px;
    object-fit: cover;
}

.blog-info {
    padding: 2rem;
}

/* Legacy blog-meta for backward compatibility */
.blog-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* New blog layout styles */
.blog-meta-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
}

.blog-date {
    color: var(--color-text-faint);
    font-size: 0.9rem;
}

.blog-category {
    padding: 0.3rem 0.8rem;
    border-radius: 15px;
    font-size: 0.8rem;
    border: 1px solid;
    font-weight: 500;
}

/* ブログカテゴリの色分け */
.blog-card[data-category="ai"] .blog-category {
    background: rgba(255, 107, 107, 0.2);
    color: #ff6b6b;
    border-color: rgba(255, 107, 107, 0.3);
}

.blog-card[data-category="web"] .blog-category {
    background: rgba(var(--color-primary-rgb), 0.2);
    color: var(--color-primary);
    border-color: rgba(var(--color-primary-rgb), 0.3);
}

.blog-card[data-category="algorithm"] .blog-category {
    background: rgba(76, 175, 80, 0.2);
    color: #4caf50;
    border-color: rgba(76, 175, 80, 0.3);
}

.blog-card[data-category="learning"] .blog-category {
    background: rgba(255, 193, 7, 0.2);
    color: #ffc107;
    border-color: rgba(255, 193, 7, 0.3);
}

.blog-card[data-category="tips"] .blog-category {
    background: rgba(156, 39, 176, 0.2);
    color: #9c27b0;
    border-color: rgba(156, 39, 176, 0.3);
}

.blog-card[data-category="tutorial"] .blog-category {
    background: rgba(255, 152, 0, 0.2);
    color: #ff9800;
    border-color: rgba(255, 152, 0, 0.3);
}

.blog-category.ai {
    background: rgba(var(--color-primary-rgb), 0.2);
    color: var(--color-primary);
    border-color: rgba(var(--color-primary-rgb), 0.3);
}

.blog-category.web {
    background: rgba(97, 218, 251, 0.2);
    color: #61dafb;
    border-color: rgba(97, 218, 251, 0.3);
}

.blog-category.algorithm {
    background: rgba(155, 89, 182, 0.2);
    color: #9b59b6;
    border-color: rgba(155, 89, 182, 0.3);
}

.blog-category.self-developed {
    background: rgba(155, 89, 182, 0.2);
    color: #9b59b6;
    border-color: rgba(155, 89, 182, 0.3);
}

.blog-category.blender {
    background: rgba(155, 89, 182, 0.2);
    color: #9b59b6;
    border-color: rgba(155, 89, 182, 0.3);
}

.blog-info h3 {
    color: var(--color-text);
    margin-bottom: 1rem;
    font-size: 1.2rem;
}

.blog-info p {
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

.blog-links {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.blog-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--color-primary);
    text-decoration: none;
    padding: 0.5rem 1rem;
    border: 1px solid var(--color-primary);
    border-radius: 12px;
    transition: all 0.3s ease;
    font-size: 0.9rem;
}

.blog-link:hover {
    background: var(--color-primary);
    color: white;
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(var(--color-primary-rgb), 0.3);
}

/* Blog Likes Display */
.blog-likes {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #ffb3d9;
    font-size: 1rem;
    font-weight: 500;
    padding: 0.4rem 0.7rem;
    background: rgba(255, 179, 217, 0.1);
    border-radius: 12px;
    border: 1px solid rgba(255, 179, 217, 0.2);
    transition: all 0.3s ease;
    cursor: default;
}

.blog-likes:hover {
    transform: scale(1.05);
    background: rgba(255, 179, 217, 0.15);
}

.blog-likes i {
    color: #ffb3d9;
    font-size: 1rem;
    transition: all 0.3s ease;
}

.blog-likes .likes-count {
    color: #ffb3d9;
    font-weight: 600;
    min-width: 20px;
    font-size: 1rem;
    letter-spacing: 0.02em;
}

.blog-likes.loading .likes-count {
    opacity: 0.5;
}

.blog-likes.error {
    opacity: 0.4;
}

.blog-likes.error .likes-count::after {
    content: '!';
    color: #ff6b6b;
    margin-left: 0.2rem;
}

.blog-likes[data-platform="qiita"] i {
    color: #ffb3d9;
}

.blog-likes[data-platform="note"] i {
    color: #ffb3d9;
}

/* Language note for Japanese-only articles */
.lang-note {
    color: var(--color-text-faint);
    font-size: 0.8em;
    font-weight: normal;
    opacity: 0.8;
}

/* GitHub Statistics - New Single Card Design */
.github-stats-section {
    margin-bottom: 3rem;
}

.github-stats-card {
    background: rgba(26, 26, 26, 0.8);
    border: 1px solid #333;
    border-radius: 16px;
    padding: 2rem;
    transition: all 0.3s ease;
}

.github-stats-card:hover {
    transform: translateY(-3px);
    border-color: var(--color-primary);
    box-shadow: 0 12px 35px rgba(var(--color-primary-rgb), 0.2);
}

.github-stats-header {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #333;
}

.github-icon {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary), #7b68ee);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.github-icon i {
    font-size: 2rem;
    color: white;
}

.github-info h4 {
    color: var(--color-primary);
    font-size: 1.3rem;
    margin-bottom: 0.5rem;
}

.github-info p {
    color: var(--color-text-faint);
    font-size: 0.9rem;
    margin: 0;
}

.github-stats-content {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1.5rem;
}

.stat-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 12px;
    transition: all 0.3s ease;
}

.stat-item:hover {
    background: rgba(0, 0, 0, 0.5);
    transform: translateY(-2px);
}

.stat-item .stat-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.3), rgba(123, 104, 238, 0.3));
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.stat-item .stat-icon i {
    font-size: 1.2rem;
    color: var(--color-primary);
}

.stat-details {
    flex: 1;
}

.stat-value {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 0.25rem;
}

.stat-label {
    font-size: 0.85rem;
    color: var(--color-text-faint);
    font-weight: 500;
}

.languages-section {
    margin-top: 1rem;
}

.languages-section h5 {
    color: var(--color-primary);
    font-size: 1.1rem;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.languages-section h5::before {
    content: "";
    width: 4px;
    height: 20px;
    background: linear-gradient(135deg, var(--color-primary), #7b68ee);
    border-radius: 2px;
}

.languages-chart {
    min-height: 150px;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.language-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0;
}

.language-info {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.language-color {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    flex-shrink: 0;
}

.language-name {
    color: var(--color-text);
    font-weight: 500;
}

.language-percentage {
    color: var(--color-primary);
    font-weight: 600;
    font-size: 0.9rem;
}

.language-bar {
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
    margin-top: 0.5rem;
}

.language-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--color-primary), #7b68ee);
    border-radius: 2px;
    transition: width 1s ease;
}

.loading-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    color: var(--color-text-faint);
    padding: 2rem;
}

.loading-placeholder i {
    font-size: 1.5rem;
    color: var(--color-primary);
}

/* AtCoder Statistics Styles */
.atcoder-stats-section {
    margin-bottom: 3rem;
}

.atcoder-stats-card {
    background: rgba(26, 26, 26, 0.8);
    border: 1px solid #333;
    border-radius: 16px;
    padding: 2rem;
    transition: all 0.3s ease;
}

.atcoder-stats-card:hover {
    transform: translateY(-3px);
    border-color: var(--color-primary);
    box-shadow: 0 12px 35px rgba(var(--color-primary-rgb), 0.2);
}

.atcoder-stats-header {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #333;
}

.atcoder-icon {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.atcoder-icon i {
    font-size: 2rem;
    color: white;
}

.atcoder-info h4 {
    color: var(--color-primary);
    font-size: 1.3rem;
    margin-bottom: 0.5rem;
}

.atcoder-info p {
    color: var(--color-text-faint);
    font-size: 0.9rem;
    margin: 0;
}

.atcoder-stats-content {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.atcoder-stats-content .stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1.5rem;
}

.atcoder-stats-content .stat-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 12px;
    transition: all 0.3s ease;
}

.atcoder-stats-content .stat-item:hover {
    background: rgba(0, 0, 0, 0.5);
    transform: translateY(-2px);
}

.atcoder-stats-content .stat-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.3), rgba(102, 179, 255, 0.3));
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.atcoder-stats-content .stat-icon i {
    font-size: 1.2rem;
    color: var(--color-primary);
}

/* AtCoder Rating Colors */
.rating-color.gray { background: linear-gradient(135deg, rgba(128, 128, 128, 0.3), rgba(169, 169, 169, 0.3)); }
.rating-color.gray i { color: #808080; }

.rating-color.brown { background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.3), rgba(102, 179, 255, 0.3)); }
.rating-color.brown i { color: var(--color-primary); }

.rating-color.green { background: linear-gradient(135deg, rgba(0, 128, 0, 0.3), rgba(34, 139, 34, 0.3)); }
.rating-color.green i { color: #008000; }

.rating-color.cyan { background: linear-gradient(135deg, rgba(0, 191, 255, 0.3), rgba(135, 206, 235, 0.3)); }
.rating-color.cyan i { color: #00BFFF; }

.rating-color.blue { background: linear-gradient(135deg, rgba(0, 0, 255, 0.3), rgba(30, 144, 255, 0.3)); }
.rating-color.blue i { color: #0000FF; }

.rating-color.yellow { background: linear-gradient(135deg, rgba(255, 215, 0, 0.3), rgba(255, 223, 0, 0.3)); }
.rating-color.yellow i { color: #FFD700; }

.rating-color.orange { background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.3), rgba(102, 179, 255, 0.3)); }
.rating-color.orange i { color: var(--color-primary); }

.rating-color.red { background: linear-gradient(135deg, rgba(255, 0, 0, 0.3), rgba(220, 20, 60, 0.3)); }
.rating-color.red i { color: #FF0000; }

.atcoder-stats-content .stat-details {
    flex: 1;
}

.atcoder-stats-content .stat-value {
    font-size: 1.6rem;
    font-weight: 700;
    color: #8B4513;
    margin-bottom: 0.25rem;
}

.atcoder-stats-content .stat-label {
    font-size: 0.85rem;
    color: var(--color-text-faint);
    font-weight: 500;
}

/* Stats Update Info */
.stats-update-info {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.last-updated {
    color: var(--color-text-faint);
    font-size: 0.85rem;
    margin: 0;
    text-align: right;
}

#rating-chart {
    max-width: 100%;
    height: auto;
}

/* Kaggle Statistics Styles */
.kaggle-stats-section {
    margin-bottom: 3rem;
}

.kaggle-stats-card {
    background: rgba(26, 26, 26, 0.8);
    border: 1px solid #333;
    border-radius: 16px;
    padding: 2rem;
    transition: all 0.3s ease;
}

.kaggle-stats-card:hover {
    transform: translateY(-3px);
    border-color: #20beff;
    box-shadow: 0 12px 35px rgba(32, 190, 255, 0.2);
}

.kaggle-stats-header {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #333;
}

.kaggle-icon {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: linear-gradient(135deg, #20beff, #0f7abd);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.kaggle-icon i {
    font-size: 2rem;
    color: white;
}

.kaggle-info h4 {
    color: #20beff;
    font-size: 1.3rem;
    margin-bottom: 0.5rem;
}

.kaggle-info p {
    color: var(--color-text-faint);
    font-size: 0.9rem;
    margin: 0;
}

.kaggle-stats-content {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.kaggle-stats-content .stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1.5rem;
}

.kaggle-stats-content .stat-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 12px;
    transition: all 0.3s ease;
}

.kaggle-stats-content .stat-item:hover {
    background: rgba(0, 0, 0, 0.5);
    transform: translateY(-2px);
}

.kaggle-stats-content .stat-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(32, 190, 255, 0.3), rgba(15, 122, 189, 0.3));
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.kaggle-stats-content .stat-icon i {
    font-size: 1.2rem;
    color: #20beff;
}

.kaggle-stats-content .stat-details {
    flex: 1;
}

.kaggle-stats-content .stat-value {
    font-size: 1.6rem;
    font-weight: 700;
    color: #20beff;
    margin-bottom: 0.25rem;
}

.kaggle-stats-content .stat-label {
    font-size: 0.85rem;
    color: var(--color-text-faint);
    font-weight: 500;
}

.medal-breakdown {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    font-size: 1.2rem;
}

.medal-breakdown span {
    font-size: 1.4rem;
    font-weight: 700;
}

.specialization-section {
    margin-top: 1rem;
}

.specialization-section h5 {
    color: #20beff;
    font-size: 1.1rem;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.specialization-section h5::before {
    content: "";
    width: 4px;
    height: 20px;
    background: linear-gradient(135deg, #20beff, #0f7abd);
    border-radius: 2px;
}

.specialization-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.specialization-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 1rem;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    border-left: 3px solid #20beff;
}

.specialization-name {
    color: var(--color-text);
    font-weight: 500;
}

.specialization-stats {
    color: #20beff;
    font-size: 0.9rem;
    font-weight: 600;
}

/* SNS Share Buttons */
.sns-share {
    margin: 3rem 0 2rem 0;
    padding: 2rem 0;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    text-align: center;
}

.sns-share h3 {
    margin-bottom: 1.5rem;
    color: var(--color-text);
    font-size: 1.2rem;
    font-weight: 600;
}

.sns-share-buttons {
    display: flex;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.sns-share-btn {
    display: inline-flex;
    align-items: center;
    padding: 0.7rem 1.5rem;
    border: none;
    border-radius: 50px;
    text-decoration: none;
    color: #fff;
    font-weight: 500;
    font-size: 0.9rem;
    transition: all 0.3s ease;
    cursor: pointer;
    min-width: 120px;
    justify-content: center;
}

.sns-share-btn i {
    margin-right: 0.5rem;
    font-size: 1.1rem;
}

.sns-share-btn.twitter {
    background: linear-gradient(135deg, #1da1f2, #0d8bd9);
}

.sns-share-btn.twitter:hover {
    background: linear-gradient(135deg, #0d8bd9, #0a7bc4);
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(29, 161, 242, 0.3);
}

.sns-share-btn.facebook {
    background: linear-gradient(135deg, #1877f2, #166fe5);
}

.sns-share-btn.facebook:hover {
    background: linear-gradient(135deg, #166fe5, #1460d0);
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(24, 119, 242, 0.3);
}

.sns-share-btn.line {
    background: linear-gradient(135deg, #00c300, #00a000);
}

.sns-share-btn.line:hover {
    background: linear-gradient(135deg, #00a000, #008000);
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(0, 195, 0, 0.3);
}

.sns-share-btn.copy {
    background: linear-gradient(135deg, #6c757d, #5a6268);
}

.sns-share-btn.copy:hover {
    background: linear-gradient(135deg, #5a6268, #495057);
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(108, 117, 125, 0.3);
}

.sns-share-btn.copy.copied {
    background: linear-gradient(135deg, #28a745, #20a039);
}

/* Custom X icon */
.fa-x-custom {
    font-family: Arial, sans-serif;
    font-weight: bold;
    font-style: normal;
}

.fa-x-custom::before {
    content: "𝕏";
    font-size: 1.1em;
}

/* Custom Hugging Face icon */
.fa-hf-custom {
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378 0 1.112.178 2.181.503 3.185.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284.278.173.48.408.71.694.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542.01.026.653 1.552 1.657 2.54.616.605 1.01 1.223 1.082 1.912.055.537-.096 1.059-.38 1.572.637.121 1.294.187 1.967.187.657 0 1.298-.063 1.921-.178-.287-.517-.44-1.041-.384-1.581.07-.69.465-1.307 1.081-1.913 1.004-.987 1.647-2.513 1.657-2.539.021-.074.083-.285.233-.542.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952.23-.286.432-.52.71-.694.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174 1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013 1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164 1.607-.007 2.984-1.155 3.572-1.164.196-.003.305.12.305.454 0 .886-.424 2.328-1.563 3.202-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026-.01.008-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116 1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243 1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444-.034-.016-.104-.008-.2.022q-.094.03-.216.087-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096 3 3 0 0 0-.26.219 2 2 0 0 0-.12.121 2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203 0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647 2.822 2.813 2.562 3.244-1.176-.506-1.176-.506-2.866-2.567-3.49-1.898.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405-.238.839-2.71-1.587-3.216-.642-.506.946 3.49 2.056 3.522 2.064 1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194 1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647-2.822 2.813-2.562 3.244 1.176-.506 1.176-.506 2.866-2.567 3.49-1.898-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405.238.839 2.71-1.587 3.216-.642.506.946-3.49 2.056-3.522 2.064-1.29.33-4.568 1.028-5.713-.624'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378 0 1.112.178 2.181.503 3.185.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284.278.173.48.408.71.694.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542.01.026.653 1.552 1.657 2.54.616.605 1.01 1.223 1.082 1.912.055.537-.096 1.059-.38 1.572.637.121 1.294.187 1.967.187.657 0 1.298-.063 1.921-.178-.287-.517-.44-1.041-.384-1.581.07-.69.465-1.307 1.081-1.913 1.004-.987 1.647-2.513 1.657-2.539.021-.074.083-.285.233-.542.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952.23-.286.432-.52.71-.694.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174 1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013 1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164 1.607-.007 2.984-1.155 3.572-1.164.196-.003.305.12.305.454 0 .886-.424 2.328-1.563 3.202-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026-.01.008-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116 1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243 1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444-.034-.016-.104-.008-.2.022q-.094.03-.216.087-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096 3 3 0 0 0-.26.219 2 2 0 0 0-.12.121 2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203 0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647 2.822 2.813 2.562 3.244-1.176-.506-1.176-.506-2.866-2.567-3.49-1.898.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405-.238.839-2.71-1.587-3.216-.642-.506.946 3.49 2.056 3.522 2.064 1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194 1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647-2.822 2.813-2.562 3.244 1.176-.506 1.176-.506 2.866-2.567 3.49-1.898-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405.238.839 2.71-1.587 3.216-.642.506.946-3.49 2.056-3.522 2.064-1.29.33-4.568 1.028-5.713-.624'/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    vertical-align: middle;
}

/* Footer */
footer {
    background: rgba(255, 255, 255, 0.05);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding: 2rem 0;
    text-align: center;
    margin-top: 4rem;
}

footer p {
    color: var(--color-text-faint);
}

footer .last-updated {
    font-size: 0.85rem;
    color: #777;
    margin-bottom: 0.5rem;
}

/* Responsive Design */
@media (max-width: 768px) {
    .container {
        padding: 0 15px;
    }

    .nav-container {
        padding: 0 15px;
        flex-direction: column;
        gap: 1rem;
    }

    .nav-menu {
        gap: 1rem;
        flex-wrap: wrap;
        justify-content: center;
    }

    .profile-image img {
        width: 120px;
        height: 120px;
    }

    .overview-grid {
        grid-template-columns: 1fr;
    }

    .profile-section {
        flex-direction: column;
        text-align: center;
    }

    .profile-section .profile-image img {
        width: 150px;
        height: 150px;
    }

    .skills-grid {
        grid-template-columns: 1fr;
    }

    .projects-grid {
        grid-template-columns: 1fr;
    }

    .project-card.featured {
        grid-column: span 1;
    }

    .blog-grid {
        grid-template-columns: 1fr;
    }

    .social-links {
        gap: 1rem;
    }

    .social-link {
        width: 45px;
        height: 45px;
        font-size: 1.1rem;
    }

    .page-hero h1 {
        font-size: 2rem;
    }

    .timeline {
        padding-left: 1.5rem;
    }

    .timeline::before {
        left: 0.75rem;
    }

    .timeline-item::before {
        left: -2rem;
    }

    .search-container {
        max-width: 100%;
    }

    .tag-filters {
        gap: 0.5rem;
    }

    .projects-filters {
        margin-bottom: 2rem;
    }

    .blog-meta-top {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }

    .blog-likes {
        align-self: flex-end;
    }

    .github-stats-card {
        padding: 1.5rem;
    }

    .github-stats-header {
        flex-direction: column;
        text-align: center;
        gap: 1rem;
        margin-bottom: 1.5rem;
        padding-bottom: 1rem;
    }

    .github-icon {
        width: 50px;
        height: 50px;
    }

    .github-icon i {
        font-size: 1.5rem;
    }

    .stats-row {
        grid-template-columns: 1fr;
        gap: 1rem;
    }

    .stat-item {
        padding: 0.75rem;
        flex-direction: column;
        text-align: center;
        gap: 0.75rem;
    }

    .stat-item .stat-icon {
        width: 35px;
        height: 35px;
    }

    .stat-item .stat-icon i {
        font-size: 1rem;
    }

    .stat-value {
        font-size: 1.4rem;
    }

    .languages-section h5 {
        font-size: 1rem;
    }

    .atcoder-stats-card {
        padding: 1.5rem;
    }

    .atcoder-stats-header {
        flex-direction: column;
        text-align: center;
        gap: 1rem;
        margin-bottom: 1.5rem;
        padding-bottom: 1rem;
    }

    .atcoder-icon {
        width: 50px;
        height: 50px;
    }

    .atcoder-icon i {
        font-size: 1.5rem;
    }

    .atcoder-stats-content .stats-row {
        grid-template-columns: 1fr;
        gap: 1rem;
    }

    .atcoder-stats-content .stat-item {
        padding: 0.75rem;
        flex-direction: column;
        text-align: center;
        gap: 0.75rem;
    }

    .atcoder-stats-content .stat-icon {
        width: 35px;
        height: 35px;
    }

    .atcoder-stats-content .stat-icon i {
        font-size: 1rem;
    }

    .atcoder-stats-content .stat-value {
        font-size: 1.4rem;
    }

    .rating-graph-section h5 {
        font-size: 1rem;
    }

    .rating-graph {
        padding: 1rem;
        min-height: 250px;
    }

    .kaggle-stats-card {
        padding: 1.5rem;
    }

    .kaggle-stats-header {
        flex-direction: column;
        text-align: center;
        gap: 1rem;
        margin-bottom: 1.5rem;
        padding-bottom: 1rem;
    }

    .kaggle-icon {
        width: 50px;
        height: 50px;
    }

    .kaggle-icon i {
        font-size: 1.5rem;
    }

    .kaggle-stats-content .stats-row {
        grid-template-columns: 1fr;
        gap: 1rem;
    }

    .kaggle-stats-content .stat-item {
        padding: 0.75rem;
        flex-direction: column;
        text-align: center;
        gap: 0.75rem;
    }

    .kaggle-stats-content .stat-icon {
        width: 35px;
        height: 35px;
    }

    .kaggle-stats-content .stat-icon i {
        font-size: 1rem;
    }

    .kaggle-stats-content .stat-value {
        font-size: 1.4rem;
    }

    .specialization-section h5 {
        font-size: 1rem;
    }

    .medal-breakdown {
        flex-direction: column;
        gap: 0.25rem;
    }

    .specialization-item {
        flex-direction: column;
        text-align: center;
        gap: 0.5rem;
    }

    .sns-share-buttons {
        flex-direction: column;
        align-items: center;
        max-width: 300px;
        margin: 0 auto;
    }

    .sns-share-btn {
        width: 100%;
        max-width: 250px;
    }
}

@media (max-width: 480px) {
    .overview-card, .bio-section, .skills-section, .certifications-section, .achievements-section, .education-section {
        padding: 1.5rem;
    }

    .project-info, .blog-info {
        padding: 1.5rem;
    }

    .project-links, .blog-links {
        flex-direction: column;
    }
}

/* Blog Tag Colors — mirrors .project-tag.tag-* colors; base styles shared via ".project-tag, .blog-tag" */
.blog-tag.tag-ai { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.blog-tag.tag-ml { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.blog-tag.tag-nlp { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.blog-tag.tag-python { background: linear-gradient(135deg, #a8d5ff 0%, #7fb3ff 100%); color: #2563eb; border: none; box-shadow: 0 2px 4px rgba(37, 99, 235, 0.15); }
.blog-tag.tag-javascript { background: linear-gradient(135deg, #fff7a8 0%, #ffed4e 100%); color: #d97706; border: none; box-shadow: 0 2px 4px rgba(217, 119, 6, 0.15); }
.blog-tag.tag-react { background: linear-gradient(135deg, #b3f0ff 0%, #61dafb 100%); color: #0369a1; border: none; box-shadow: 0 2px 4px rgba(3, 105, 161, 0.15); }
.blog-tag.tag-nodejs { background: linear-gradient(135deg, #b3f0ff 0%, #61dafb 100%); color: #0369a1; border: none; box-shadow: 0 2px 4px rgba(3, 105, 161, 0.15); }
.blog-tag.tag-vrm { background: linear-gradient(135deg, #99f6e4 0%, #5eead4 100%); color: #0f766e; border: none; box-shadow: 0 2px 4px rgba(15, 118, 110, 0.15); }
.blog-tag.tag-animation { background: linear-gradient(135deg, #d8b4fe 0%, #c084fc 100%); color: #7e22ce; border: none; box-shadow: 0 2px 4px rgba(126, 34, 206, 0.15); }
.blog-tag.tag-algorithm { background: linear-gradient(135deg, #ddd6fe 0%, #c4b5fd 100%); color: #6b21a8; border: none; box-shadow: 0 2px 4px rgba(107, 33, 168, 0.15); }
.blog-tag.tag-deep-learning { background: linear-gradient(135deg, #ddd6fe 0%, #c4b5fd 100%); color: #6b21a8; border: none; box-shadow: 0 2px 4px rgba(107, 33, 168, 0.15); }
.blog-tag.tag-tensorflow { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.blog-tag.tag-blender { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #c2410c; border: none; box-shadow: 0 2px 4px rgba(194, 65, 12, 0.15); }
.blog-tag.tag-3d-modeling { background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); color: #dc2626; border: none; box-shadow: 0 2px 4px rgba(220, 38, 38, 0.15); }
.blog-tag.tag-character-design { background: linear-gradient(135deg, #f9c5ff 0%, #f08fff 100%); color: #a21caf; border: none; box-shadow: 0 2px 4px rgba(162, 28, 175, 0.15); }
.blog-tag.tag-tool-development { background: linear-gradient(135deg, #d4d4d8 0%, #a1a1aa 100%); color: #18181b; border: none; box-shadow: 0 2px 4px rgba(24, 24, 27, 0.15); }
.blog-tag.tag-web-dev { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1d4ed8; border: none; box-shadow: 0 2px 4px rgba(29, 78, 216, 0.15); }
.blog-tag.tag-frontend { background: linear-gradient(135deg, #b3f0ff 0%, #61dafb 100%); color: #0369a1; border: none; box-shadow: 0 2px 4px rgba(3, 105, 161, 0.15); }
.blog-tag.tag-rest-api { background: linear-gradient(135deg, #a5f3fc 0%, #67e8f9 100%); color: #0e7490; border: none; box-shadow: 0 2px 4px rgba(14, 116, 144, 0.15); }
.blog-tag.tag-backend { background: linear-gradient(135deg, #99f6e4 0%, #5eead4 100%); color: #0f766e; border: none; box-shadow: 0 2px 4px rgba(15, 118, 110, 0.15); }
.blog-tag.tag-data-structures { background: linear-gradient(135deg, #d8b4fe 0%, #c084fc 100%); color: #7e22ce; border: none; box-shadow: 0 2px 4px rgba(126, 34, 206, 0.15); }
.blog-tag.tag-graph-theory { background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%); color: #4338ca; border: none; box-shadow: 0 2px 4px rgba(67, 56, 202, 0.15); }
.blog-tag.tag-computer-science { background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%); color: #1e40af; border: none; box-shadow: 0 2px 4px rgba(30, 64, 175, 0.15); }
.blog-tag.tag-transformer { background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%); color: #ea580c; border: none; box-shadow: 0 2px 4px rgba(234, 88, 12, 0.15); }
.blog-tag.tag-unity { background: linear-gradient(135deg, #d4d4d8 0%, #a1a1aa 100%); color: #27272a; border: none; box-shadow: 0 2px 4px rgba(39, 39, 42, 0.15); }
.blog-tag.tag-aituber { background: linear-gradient(135deg, #ffc9e0 0%, #ff8fb3 100%); color: #be185d; border: none; box-shadow: 0 2px 4px rgba(190, 24, 93, 0.15); }
.blog-tag.tag-software-dev { background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%); color: #059669; border: none; box-shadow: 0 2px 4px rgba(5, 150, 105, 0.15); }

/* ============================================================
   Loading Screen
   ============================================================ */
.loading-screen {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--color-bg);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    visibility: visible;
    transition: opacity 1s ease-out, visibility 1s ease-out;
}

.loading-screen.hidden {
    opacity: 0;
    visibility: hidden;
}

.loading-stars {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.loading-stars::before,
.loading-stars::after {
    content: '';
    position: absolute;
    width: 2px;
    height: 2px;
    background: #fff;
    border-radius: 50%;
    box-shadow:
        25vw 18vh 0 0 #fff, 80vw 30vh 0 0 #fff, 40vw 70vh 0 0 #fff,
        90vw 40vh 0 0 #fff, 15vw 90vh 0 0 #fff, 70vw 60vh 0 0 #fff,
        5vw 50vh 0 0 #fff, 95vw 80vh 0 0 #fff, 35vw 25vh 0 0 #fff,
        60vw 95vh 0 0 #fff, 85vw 15vh 0 0 #fff, 10vw 75vh 0 0 #fff,
        50vw 45vh 0 0 #fff, 75vw 85vh 0 0 #fff, 20vw 65vh 0 0 #fff;
    animation: twinkle 2s infinite ease-in-out alternate;
}

.loading-stars::after {
    width: 1px;
    height: 1px;
    animation: twinkle 1.5s infinite ease-in-out alternate-reverse;
    box-shadow:
        12vw 33vh 0 0 #fff, 87vw 77vh 0 0 #fff, 23vw 12vh 0 0 #fff,
        78vw 45vh 0 0 #fff, 43vw 88vh 0 0 #fff, 67vw 23vh 0 0 #fff,
        18vw 67vh 0 0 #fff, 92vw 8vh 0 0 #fff, 48vw 52vh 0 0 #fff,
        73vw 93vh 0 0 #fff, 3vw 38vh 0 0 #fff, 58vw 18vh 0 0 #fff;
}

.loading-shooting-stars {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.loading-shooting-stars::before,
.loading-shooting-stars::after {
    content: '';
    position: absolute;
    width: 2px;
    height: 2px;
    background: linear-gradient(45deg, #fff, transparent);
    border-radius: 50%;
    animation: shooting 3s linear infinite;
}

.loading-shooting-stars::before {
    top: 20%;
    left: -10%;
    animation-delay: 0s;
}

.loading-shooting-stars::after {
    top: 40%;
    left: -10%;
    animation-delay: 1.5s;
}

.loading-content {
    text-align: center;
    z-index: 10000;
}

.loading-title {
    font-size: 4rem;
    font-weight: bold;
    background: linear-gradient(45deg, var(--color-primary), var(--color-primary-light), var(--color-primary-lighter));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 3rem;
    animation: loadingTitleGlow 2s ease-in-out infinite alternate;
    transform: scale(1);
    transition: all 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.loading-title.shrink {
    transform: scale(0.75) translateY(-200px);
    opacity: 0.8;
}

@keyframes loadingTitleGlow {
    from {
        text-shadow: 0 0 20px rgba(var(--color-primary-rgb), 0.5);
        transform: scale(1);
    }
    to {
        text-shadow: 0 0 40px rgba(var(--color-primary-rgb), 0.8);
        transform: scale(1.05);
    }
}

.loading-bar-container {
    width: 300px;
    margin: 0 auto;
}

.loading-bar {
    width: 100%;
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
    margin-bottom: 1rem;
}

.loading-progress {
    height: 100%;
    background: linear-gradient(90deg, var(--color-primary), var(--color-primary-light));
    border-radius: 2px;
    width: 0%;
    animation: loadingProgress 2s ease-out forwards;
    box-shadow: 0 0 10px rgba(var(--color-primary-rgb), 0.5);
}

@keyframes loadingProgress {
    0% { width: 0%; }
    25% { width: 40%; }
    60% { width: 75%; }
    85% { width: 95%; }
    100% { width: 100%; }
}

.loading-text {
    color: var(--color-text-muted);
    font-size: 1rem;
    opacity: 0.8;
    animation: loadingTextPulse 1.5s ease-in-out infinite;
}

@keyframes loadingTextPulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 1; }
}

/* ============================================================
   Hero Section
   ============================================================ */
.hero {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    position: relative;
}

.hero-content {
    z-index: 1;
}

.hero h1 {
    font-size: 3rem;
    margin-bottom: 1rem;
    background: linear-gradient(45deg, var(--color-primary), var(--color-primary-light), var(--color-primary-lighter));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: glow 2s ease-in-out infinite alternate;
}

@keyframes glow {
    from { text-shadow: 0 0 20px rgba(var(--color-primary-rgb), 0.5); }
    to { text-shadow: 0 0 30px rgba(var(--color-primary-rgb), 0.8); }
}

.intro {
    font-size: 1.2rem;
    margin-bottom: 2rem;
    color: var(--color-text-muted);
    min-height: 1.5em;
    text-align: center;
}

.intro .jp, .intro .en {
    display: block;
    min-height: 1.5em;
}

/* ============================================================
   Placeholder Images
   ============================================================ */
.placeholder-image {
    width: 100%;
    height: 250px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-weight: bold;
    font-size: 1.2rem;
    text-align: center;
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.8), rgba(128, 204, 255, 0.6));
    position: relative;
    overflow: hidden;
}

.placeholder-image::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background:
        radial-gradient(circle at 20% 80%, rgba(120, 119, 198, 0.3) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(255, 119, 198, 0.3) 0%, transparent 50%),
        radial-gradient(circle at 40% 40%, rgba(120, 219, 255, 0.3) 0%, transparent 50%);
    animation: shimmer 3s ease-in-out infinite;
}

@keyframes shimmer {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.7; }
}

.placeholder-image span {
    position: relative;
    z-index: 1;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

.placeholder-image.profile {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    font-size: 1rem;
}

.blog-image .placeholder-image {
    height: 200px;
}

/* ============================================================
   Responsive (Loading Screen + Hero)
   ============================================================ */
@media (max-width: 768px) {
    .hero h1 {
        font-size: 2rem;
    }
}

@media (max-width: 480px) {
    .hero h1 {
        font-size: 1.7rem;
    }

    .intro {
        font-size: 1rem;
    }

    .loading-title {
        font-size: 2.5rem;
    }

    .loading-bar-container {
        width: 250px;
    }
}

/* Contribution graph placeholder */
.contribution-graph-placeholder {
    color: var(--color-primary);
    text-align: center;
    padding: 2rem;
}

.contribution-graph-placeholder .contribution-graph-icon {
    font-size: 3rem;
    margin-bottom: 1rem;
    display: block;
}

.contribution-graph-placeholder .contribution-graph-title {
    font-size: 1.1rem;
    margin-bottom: 0.5rem;
}

.contribution-graph-placeholder .contribution-graph-subtitle {
    color: var(--color-text-faint);
    font-size: 0.9rem;
}
