/* --- CSS Variables & Reset --- */
        :root {
            /* ポップなブルー基調 */
            --color-brand: #3B82F6;
            --color-brand-vivid: #2563EB;
            --color-brand-light: #EFF6FF;
            
            --color-navy-bg: #1e1b4b;
            --color-navy-light: #312e81;
            
            --color-black: #1E293B;
            --color-offwhite: #F8FAFC;
            --color-white: #ffffff;
            
            --color-gray-100: #F1F5F9;
            --color-gray-200: #E2E8F0;
            --color-gray-400: #94A3B8;
            --color-gray-500: #64748B;
            --color-gray-600: #475569;
            --color-gray-800: #334155;
            
            /* アクセント */
            --color-dot: #6366f1;
            --color-gold: #fbbf24;
            
            /* 図形用のポップカラー */
            --color-shape-blue: #4A7BF7;
            --color-shape-purple: #9B72F0;
            --color-shape-pink: #F76E8A;
            --color-shape-mint: #4AD9B5;
            --color-shape-yellow: #FFD166;
            --color-shape-orange: #FF8E53;
            
            --font-sans: 'Noto Sans JP', sans-serif;
            --font-en: 'Montserrat', sans-serif;
            
            --container-width: 1000px;
            --header-height: 80px;
        }

        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        html {
            scroll-behavior: smooth;
        }

        body {
            font-family: var(--font-sans);
            background-color: var(--color-white);
            color: var(--color-black);
            overflow-x: hidden;
            cursor: none;
            -webkit-font-smoothing: antialiased;
        }

        a {
            text-decoration: none;
            color: inherit;
        }

        ul, ol {
            list-style: none;
        }

        img, svg {
            display: block;
            max-width: 100%;
        }

        button {
            background: none;
            border: none;
            cursor: pointer;
            font-family: inherit;
        }

        /* --- Utilities --- */
        .container {
            width: 100%;
            max-width: var(--container-width);
            margin: 0 auto;
            padding: 0 1.25rem; /* カード幅を確保するため少し狭める */
        }
        @media (min-width: 768px) {
            .container { padding: 0 4rem; }
        }

        .font-en {
            font-family: var(--font-en);
        }

        .text-brand { color: var(--color-brand-vivid); }
        .text-white { color: var(--color-white); }
        .text-black { color: var(--color-black); }
        .bg-black { background-color: var(--color-black); }
        .bg-white { background-color: var(--color-white); }

        .text-outline {
            -webkit-text-stroke: 1px #ddd;
            color: transparent;
        }
        .text-outline-dark {
            -webkit-text-stroke: 1px rgba(0,0,0,0.1);
            color: transparent;
        }

        /* Flex & Grid Utilities */
        .flex { display: flex; }
        .flex-col { flex-direction: column; }
        .items-center { align-items: center; }
        .justify-between { justify-content: space-between; }
        .justify-center { justify-content: center; }
        .gap-2 { gap: 0.5rem; }
        .gap-4 { gap: 1rem; }
        
        /* --- Animations --- */
        @keyframes marquee {
            0% { transform: translateX(0%); }
            100% { transform: translateX(-100%); }
        }
        @keyframes float {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-20px); }
        }
        @keyframes spin {
            to { transform: rotate(360deg); }
        }
        @keyframes bounce {
            0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); }
            50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); }
        }

        /* --- Custom Cursor --- */
        #cursor {
            position: fixed;
            top: 0;
            left: 0;
            width: 20px;
            height: 20px;
            border: 2px solid var(--color-brand);
            border-radius: 50%;
            pointer-events: none;
            z-index: 9999;
            transform: translate(-50%, -50%);
            transition: width 0.3s, height 0.3s, background-color 0.3s;
            mix-blend-mode: difference;
        }
        #cursor-dot {
            position: fixed;
            top: 0;
            left: 0;
            width: 8px;
            height: 8px;
            background-color: var(--color-brand);
            border-radius: 50%;
            pointer-events: none;
            z-index: 9999;
            transform: translate(-50%, -50%);
        }
        body:hover #cursor.hovered {
            width: 50px;
            height: 50px;
            background-color: rgba(59, 130, 246, 0.2);
            border-color: transparent;
        }
        @media (max-width: 768px) {
            #cursor, #cursor-dot { display: none; }
            body { cursor: auto; }
        }

        /* --- Header --- */
        .site-header {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            z-index: 50;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 2rem 2rem;
            mix-blend-mode: difference;
            color: white;
        }
        .site-title {
            font-size: 1.5rem;
            font-weight: 700;
            letter-spacing: -0.05em;
        }
        .menu-btn {
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            justify-content: center;
            width: 3rem;
            height: 3rem;
            gap: 0.375rem;
        }
        .menu-btn span {
            display: block;
            height: 2px;
            background-color: white;
            transition: width 0.3s;
        }
        .menu-btn span:first-child { width: 2rem; }
        .menu-btn span:last-child { width: 1.5rem; }
        .menu-btn:hover span { width: 2.5rem; }

        @media (min-width: 768px) {
            .site-header { padding: 2.5rem 4rem; }
        }

        /* --- Menu Overlay --- */
        #menu-overlay {
            position: fixed;
            inset: 0;
            background-color: var(--color-white);
            z-index: 100;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            color: var(--color-black);
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.5s, visibility 0.5s;
        }
        #menu-overlay.visible {
            opacity: 1;
            visibility: visible;
        }
        .menu-nav {
            display: flex;
            flex-direction: column;
            gap: 2rem;
            text-align: center;
        }
        .menu-link {
            font-size: 2.5rem;
            font-weight: 700;
            transition: all 0.3s;
            -webkit-text-stroke: 1px var(--color-black);
            color: var(--color-black);
        }
        .menu-link:hover {
            color: transparent;
            -webkit-text-stroke: 1px var(--color-brand);
        }
        
        #close-menu {
            position: absolute;
            top: 2rem;
            right: 2rem;
            color: var(--color-black);
            width: 3rem;
            height: 3rem;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        @media (min-width: 768px) {
            #close-menu {
                top: 2.5rem;
                right: 4rem;
            }
            .menu-link { font-size: 4rem; }
        }

        /* --- Hero Section --- */
        .hero-section {
            position: relative;
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
            background-color: var(--color-white);
            padding-top: 6rem; 
        }
        
        /* Floating Shapes Container */
        .hero-shapes {
            position: absolute;
            inset: 0;
            pointer-events: none;
            z-index: 5;
            overflow: hidden;
        }
        .shape {
            position: absolute;
            opacity: 0.6;
            /* 修正: パフォーマンス最適化。left/topは使用せずtransformのみにする */
            will-change: transform;
            top: 0;
            left: 0;
        }
        .shape--circle { border-radius: 50%; }
        .shape--square { border-radius: 6px; }
        .shape--triangle {
            width: 0;
            height: 0;
            background: none !important;
            border-left: var(--size) solid transparent;
            border-right: var(--size) solid transparent;
        }
        .shape--triangle-up { border-bottom: calc(var(--size) * 1.7) solid var(--shape-color); }
        .shape--triangle-down { border-top: calc(var(--size) * 1.7) solid var(--shape-color); }

        /* Background Blobs */
        .blob {
            position: absolute;
            border-radius: 50%;
            filter: blur(80px);
            animation: float 6s ease-in-out infinite;
            opacity: 0.5;
            z-index: 1;
        }
        .blob-1 {
            top: 15%;
            left: -10%;
            width: 40vw;
            height: 40vw;
            background-color: #BAE6FD;
        }
        .blob-2 {
            bottom: 10%;
            right: -10%;
            width: 35vw;
            height: 35vw;
            background-color: #DDD6FE;
            animation-delay: -2s;
        }

        .hero-content-wrapper {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
            gap: 2rem;
            position: relative;
            z-index: 10;
            width: 100%;
        }

        .hero-text-area { 
            width: 100%;
            max-width: 1000px;
            margin: 0 auto;
        }

        .hero-title {
            font-size: 3rem;
            font-weight: 700;
            line-height: 1.1;
            letter-spacing: -0.02em;
            margin-bottom: 2rem;
            color: var(--color-black);
        }
        @media (min-width: 768px) { .hero-title { font-size: 4.5rem; } }
        @media (min-width: 1024px) { .hero-title { font-size: 6rem; } }

        .hero-subtitle {
            font-size: 1.125rem;
            font-weight: 700;
            color: var(--color-gray-600);
            margin-bottom: 1rem;
            font-family: var(--font-sans);
            letter-spacing: normal;
        }
        
        .hero-desc {
            font-size: 1rem;
            color: var(--color-gray-500);
            line-height: 2;
            max-width: 40rem;
            margin: 0 auto;
        }

        /* Marquee */
        .marquee-container {
            position: absolute;
            bottom: 2rem;
            left: 0;
            width: 100%;
            overflow: hidden;
            padding: 1.5rem 0;
            border-top: 1px solid var(--color-gray-100);
            border-bottom: 1px solid var(--color-gray-100);
            background-color: rgba(255, 255, 255, 0.8);
            backdrop-filter: blur(8px);
            z-index: 10;
        }
        .marquee-content {
            display: flex;
            white-space: nowrap;
            animation: marquee 25s linear infinite;
        }
        .marquee-item {
            font-size: 2.5rem;
            font-weight: 900;
            margin: 0 3rem;
            color: var(--color-black);
        }
        .marquee-item.outline {
             -webkit-text-stroke: 1px var(--color-gray-400);
             color: transparent;
        }
        @media (min-width: 768px) { .marquee-item { font-size: 4rem; } }
        
        /* --- Vision Section --- */
        .vision-section {
            padding: 10rem 0;
            background-color: var(--color-brand-light); 
            color: var(--color-black);
            border-radius: 40px 40px 0 0;
            margin-top: -2.5rem;
            position: relative;
            z-index: 20;
        }
        @media (min-width: 768px) { .vision-section { border-radius: 80px 80px 0 0; } }

        .vision-content {
            max-width: 64rem;
            margin: 0 auto;
            text-center;
        }
        .vision-label {
            color: var(--color-brand);
            font-weight: 700;
            letter-spacing: 0.1em;
            font-size: 0.875rem;
            margin-bottom: 2rem;
            display: block;
        }
        .vision-heading {
            font-size: 2.25rem;
            font-weight: 700;
            line-height: 1.5;
            margin-bottom: 4rem;
            color: var(--color-black);
        }
        @media (min-width: 768px) { .vision-heading { font-size: 3.5rem; } }

        .vision-text {
            color: var(--color-gray-600);
            line-height: 2.2;
            font-size: 1rem;
            margin-bottom: 5rem;
            text-align: left;
        }
        @media (min-width: 768px) { .vision-text { text-align: center; font-size: 1.125rem; } }

        /* --- Service Section --- */
        .service-section {
            padding: 10rem 0;
            background-color: var(--color-white);
        }
        .service-header {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            align-items: flex-end;
            margin-bottom: 6rem;
            padding: 0 1rem;
        }
        .service-title {
            font-size: 3.5rem;
            font-weight: 900;
            line-height: 1;
            letter-spacing: -0.05em;
            color: var(--color-black);
        }
        @media (min-width: 768px) {
            .service-header { flex-direction: row; }
            .service-title { font-size: 7rem; }
        }

        .service-grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 4rem;
            max-width: 800px;
            margin: 0 auto;
        }

        /* Service Card Styles */
        .service-card {
            background-color: var(--color-offwhite);
            border-radius: 2rem;
            padding: 2rem;
            position: relative;
            overflow: hidden;
            transition: all 0.5s cubic-bezier(0.25, 1, 0.5, 1);
            border: 1px solid transparent;
        }
        @media (min-width: 768px) {
            .service-card {
                padding: 3rem;
            }
        }

        .service-card:hover {
            transform: translateY(-10px) scale(1.02);
            box-shadow: 0 25px 50px -12px rgba(59, 130, 246, 0.15);
            background-color: white;
            border-color: var(--color-brand-light);
        }
        
        .card-accent {
            background-color: var(--color-brand-light);
            color: var(--color-black);
        }
        .card-accent:hover {
             background-color: var(--color-brand);
             color: white;
        }
        .card-accent:hover .card-num { color: rgba(255,255,255,0.3); }
        .card-accent:hover .service-icon { color: white; }
        .card-accent:hover .card-sub { color: rgba(255,255,255,0.9); }
        .card-accent:hover .card-desc { color: rgba(255,255,255,0.9); }
        .card-accent:hover .card-tag { color: white; }
        .card-accent:hover .card-arrow { background-color: white; color: var(--color-brand); }

        .card-offset { margin-top: 0; }

        .card-blob {
            position: absolute;
            top: -3rem;
            right: -3rem;
            width: 12rem;
            height: 12rem;
            background-color: white;
            border-radius: 50%;
            transition: transform 0.5s, background-color 0.5s;
            opacity: 0.5;
        }
        .service-card:hover .card-blob { transform: scale(1.5); }
        
        .card-num {
            position: relative;
            font-size: 3rem;
            font-weight: 900;
            color: var(--color-gray-200);
            font-family: var(--font-en);
            transition: color 0.5s;
        }
        @media (min-width: 768px) { .card-num { font-size: 4rem; } }

        .service-card:hover .card-num { color: var(--color-brand-light); }
        .card-accent .card-num { color: white; opacity: 0.5; }

        .card-content {
            position: relative;
            margin-top: 2rem;
            min-height: auto;
        }
        @media (min-width: 768px) { .card-content { margin-top: 3rem; } }

        .card-heading {
            font-size: 1.5rem;
            font-weight: 700;
            margin-bottom: 1.5rem;
            display: block;
            line-height: 1.3;
        }
        @media (min-width: 768px) { .card-heading { font-size: 1.75rem; } }

        .service-icon {
            width: 2rem;
            height: 2rem;
            color: var(--color-brand);
            transition: all 0.5s;
        }
        .service-card:hover .service-icon { transform: scale(1.2) rotate(10deg); }

        /* Image Placeholder */
        .service-img-placeholder {
            width: 100%;
            height: auto;
            aspect-ratio: 16 / 9;
            background-color: rgba(255, 255, 255, 0.5);
            border: 2px dashed var(--color-gray-200);
            border-radius: 1rem;
            margin: 1.5rem 0 2rem;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--color-gray-400);
            font-size: 0.875rem;
            font-family: var(--font-en);
            transition: all 0.3s;
        }
        .service-card:hover .service-img-placeholder {
            border-color: var(--color-brand);
            color: var(--color-brand);
            background-color: rgba(255, 255, 255, 0.8);
        }
        .card-accent .service-img-placeholder {
            background-color: rgba(255, 255, 255, 0.3);
            border-color: rgba(0,0,0,0.1);
            color: rgba(0,0,0,0.4);
        }
        .card-accent:hover .service-img-placeholder {
            border-color: white;
            color: white;
            background-color: rgba(255, 255, 255, 0.2);
        }

        .card-sub { font-size: 1rem; font-weight: 700; color: var(--color-gray-500); margin-bottom: 2rem; transition: color 0.3s; line-height: 1.6;}
        @media (min-width: 768px) { .card-sub { font-size: 1.1rem; } }

        .card-desc { font-size: 0.95rem; line-height: 1.9; color: var(--color-gray-600); transition: color 0.3s; }
        @media (min-width: 768px) { .card-desc { font-size: 1rem; } }
        
        .card-footer {
            margin-top: 3rem;
            padding-top: 2rem;
            border-top: 1px dashed var(--color-gray-200);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .card-tag { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.1em; color: var(--color-brand); transition: color 0.3s;}
        .card-arrow {
            width: 2.5rem;
            height: 2.5rem;
            border-radius: 50%;
            background-color: var(--color-black);
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.3s;
        }
        .card-accent .card-arrow { background-color: var(--color-brand); color: white; }
        .service-card:hover .card-arrow { transform: rotate(45deg); }

        /* --- Company Section --- */
        .company-section {
            padding: 8rem 1.5rem;
            background-color: var(--color-offwhite);
            position: relative;
        }
        .company-list-container {
            max-width: 800px;
            margin: 0 auto;
            background-color: var(--color-white);
            border-radius: 2rem;
            padding: 3rem 2rem;
            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
        }
        @media (min-width: 768px) {
            .company-list-container { padding: 5rem; }
        }

        .company-item {
            display: flex;
            flex-direction: column;
            margin-bottom: 2.5rem;
        }
        .company-item:last-child { margin-bottom: 0; }
        
        .company-label {
            font-size: 0.9rem;
            font-weight: 700;
            color: var(--color-black);
            display: flex;
            align-items: center;
            margin-bottom: 0.75rem;
        }
        /* ドット装飾 */
        .company-label::before {
            content: '';
            display: inline-block;
            width: 6px;
            height: 6px;
            background-color: var(--color-dot);
            border-radius: 50%;
            margin-right: 0.75rem;
        }
        
        .company-value {
            font-size: 1rem;
            color: var(--color-gray-600);
            padding-left: 1.25rem;
            line-height: 1.8;
            font-weight: 500;
        }
        .company-value a {
            color: var(--color-brand);
            text-decoration: underline;
            text-underline-offset: 4px;
        }

        /* --- Contact Section --- */
        .contact-section {
            background-color: var(--color-navy-bg);
            color: white;
            padding: 8rem 1.5rem;
            text-align: center;
            position: relative;
            overflow: hidden;
        }
        .contact-bg-shape {
            position: absolute;
            border-radius: 50%;
            background-color: rgba(255, 255, 255, 0.03);
            pointer-events: none;
        }
        .contact-shape-1 { width: 400px; height: 400px; top: -100px; right: -100px; }
        .contact-shape-2 { width: 300px; height: 300px; bottom: -50px; left: -50px; }

        .contact-container {
            position: relative;
            z-index: 10;
            max-width: 600px;
            margin: 0 auto;
        }
        
        .contact-label {
            color: var(--color-gold);
            font-family: var(--font-en);
            font-weight: 700;
            letter-spacing: 0.2em;
            font-size: 0.75rem;
            margin-bottom: 1.5rem;
            display: inline-block;
        }
        .contact-label::before {
            content: '●';
            margin-right: 0.5em;
            font-size: 0.6em;
            vertical-align: middle;
        }

        .contact-heading-new {
            font-size: 2rem;
            font-weight: 700;
            margin-bottom: 2rem;
        }
        @media (min-width: 768px) { .contact-heading-new { font-size: 2.5rem; } }

        .contact-text {
            color: var(--color-gray-400);
            line-height: 1.8;
            margin-bottom: 3rem;
            font-size: 0.95rem;
        }

        .contact-btn-new {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            background: linear-gradient(135deg, #4F46E5, #8B5CF6);
            color: white;
            font-weight: 700;
            padding: 1.25rem 3rem;
            border-radius: 9999px;
            transition: transform 0.3s, box-shadow 0.3s;
            box-shadow: 0 4px 15px rgba(79, 70, 229, 0.4);
            font-size: 1rem;
        }
        .contact-btn-new:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 25px rgba(79, 70, 229, 0.6);
        }
        .contact-btn-new svg {
            margin-left: 0.75rem;
            width: 1.25rem;
            height: 1.25rem;
        }

        /* --- Footer --- */
        .site-footer {
            background-color: var(--color-navy-bg);
            color: var(--color-gray-400);
            padding: 4rem 1.5rem;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
        }
        .footer-nav {
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 2rem;
            margin-bottom: 3rem;
            font-family: var(--font-en);
            font-size: 0.9rem;
        }
        .footer-nav a {
            color: var(--color-gray-400);
            transition: color 0.3s;
        }
        .footer-nav a:hover { color: white; }

        .footer-divider {
            height: 1px;
            background-color: rgba(255, 255, 255, 0.1);
            width: 100%;
            max-width: 800px;
            margin: 0 auto 3rem;
        }

        .footer-copy {
            text-align: center;
            font-size: 0.8rem;
            font-family: var(--font-en);
            display: flex;
            flex-direction: column;
            gap: 1rem;
        }
        .footer-bottom-link {
            color: var(--color-gray-500);
            transition: color 0.3s;
        }
        .footer-bottom-link:hover { color: white; }