/* ===========================================
   COMPONENTS STYLES
   =========================================== */

.grecaptcha-badge{
	opacity:0 !important;
}

/* Main Visual Slider */
.main-visual {
    margin-top: 90px;
    height: 80vh;
    min-height: 600px;
    position: relative;
    overflow: hidden;
    background: #000;
}

.slider-container {
    position: relative;
    width: 100%;
    height: 100%;
    padding: 40px;
    box-sizing: border-box;
}

.slider-track {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}

.slider-wrapper {
    display: flex;
    height: 100%;
    transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
    gap: 20px;
}

.slide-item {
    width: calc((100% - 40px) / 3); /* 3枚表示に戻す */
    height: 100%;
    position: relative;
    overflow: hidden;
    cursor: pointer;
    transition: all 0.3s ease;
    border-radius: 20px;
    flex-shrink: 0;
    aspect-ratio: 3/4;
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.slide-item:hover {
    transform: translateY(-10px) scale(1.02);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
    border-color: rgba(255, 255, 255, 0.2);
}

/* Background gradients for different items - 10色対応版 */
.slide-item.pink {
    background: linear-gradient(135deg, #E8A5C0, #9F5F80);
    box-shadow: 0 10px 30px rgba(232, 165, 192, 0.2);
}

.slide-item.red {
    background: linear-gradient(135deg, #E53E3E, #9B2C2C);
    box-shadow: 0 10px 30px rgba(229, 62, 62, 0.2);
}

.slide-item.purple {
    background: linear-gradient(135deg, #D53F8C, #702459);
    box-shadow: 0 10px 30px rgba(213, 63, 140, 0.2);
}

.slide-item.blue {
    background: linear-gradient(135deg, #3182CE, #1A365D);
    box-shadow: 0 10px 30px rgba(49, 130, 206, 0.2);
}

.slide-item.green {
    background: linear-gradient(135deg, #38A169, #1C4532);
    box-shadow: 0 10px 30px rgba(56, 161, 105, 0.2);
}

.slide-item.orange {
    background: linear-gradient(135deg, #FF8C00, #FF4500);
    box-shadow: 0 10px 30px rgba(255, 140, 0, 0.2);
}

.slide-item.teal {
    background: linear-gradient(135deg, #20B2AA, #008B8B);
    box-shadow: 0 10px 30px rgba(32, 178, 170, 0.2);
}

.slide-item.indigo {
    background: linear-gradient(135deg, #4B0082, #663399);
    box-shadow: 0 10px 30px rgba(75, 0, 130, 0.2);
}

.slide-item.yellow {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    box-shadow: 0 10px 30px rgba(255, 215, 0, 0.2);
}

.slide-item.gray {
    background: linear-gradient(135deg, #708090, #2F4F4F);
    box-shadow: 0 10px 30px rgba(112, 128, 144, 0.2);
}

/* 画像表示 - 正方形ベース + imgタグ使用（確実版） */
.slide-image {
    width: 70%;
    height: 0;
    padding-bottom: 70%; /* 正方形を維持 */
    background: rgba(0, 0, 0, 0.2);
    margin: 12% auto 8% auto;
    border-radius: 15px;
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.15);
    transition: all 0.3s ease;
}

/* imgタグのスタイル */
.slide-img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain; /* 画像全体を表示、切れない */
    object-position: center center;
    transition: all 0.3s ease;
}
.slide-item:hover .slide-image {
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    border-color: rgba(255, 255, 255, 0.25);
}

.slide-content {
    position: absolute;
    bottom: 60px;
    left: 25px;
    right: 25px;
    color: #fff;
    transition: all 0.3s ease;
    transform: translateY(0);
}

.slide-item:hover .slide-content {
    transform: translateY(-5px);
}

.slide-category {
    background: rgba(255, 255, 255, 0.25);
    padding: 5px 14px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: inline-block;
    margin-bottom: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    border: 1px solid rgba(255, 255, 255, 0.3);
}

.slide-date {
    font-size: 12px;
    opacity: 0.9;
    margin-bottom: 10px;
    font-family: 'Helvetica Neue', sans-serif;
    font-weight: 300;
    letter-spacing: 0.5px;
}

.slide-title {
    font-size: 14px;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: 0.5px;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

/* スライダーリンク用スタイル */
.slide-link {
    text-decoration: none;
    color: inherit;
    display: block;
    width: 100%;
    height: 100%;
}

.slide-link:hover {
    text-decoration: none;
    color: inherit;
}

.slide-item {
    position: relative;
    overflow: hidden;
}

.slide-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.05);
    opacity: 0;
    transition: opacity 0.5s ease;
    z-index: 0;
}

.mission-box:hover, .vision-box:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.05);
    border-color: rgba(255, 255, 255, 0.15);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2), 0 0 15px rgba(255, 255, 255, 0.05);
}

.mission-box:hover::before, .vision-box:hover::before {
    opacity: 1;
}

.mission-title, .vision-title {
    font-size: 18px;
    font-weight: 300;
    letter-spacing: 8px;
    color: rgba(255, 255, 255, 0.8);
    margin-bottom: 40px;
    text-transform: uppercase;
    position: relative;
    display: inline-block;
}

.mission-title::after, .vision-title::after {
    content: '';
    position: absolute;
    bottom: -15px;
    left: 0;
    width: 40px;
    height: 1px;
    background: rgba(255, 255, 255, 0.3);
    transition: width 0.4s ease;
}

.mission-box:hover .mission-title::after, 
.vision-box:hover .vision-title::after {
    width: 100%;
    background: rgba(255, 255, 255, 0.5);
}

.mission-content, .vision-content {
    position: relative;
    z-index: 1;
}

.mission-text, .vision-text {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.english-text {
    font-size: 32px;
    font-weight: 200;
    line-height: 1.3;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.9);
}

.japanese-text {
    font-size: 15px;
    font-weight: 300;
    letter-spacing: 2px;
    color: rgba(255, 255, 255, 0.7);
    margin-top: 10px;
}

/* Info Sections (AUDITION, RECRUIT, CONTACT) */
.info-section {
    padding: 100px 40px;
    background: transparent;
    position: relative;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.info-container {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 60px;
}

.info-title {
    flex: 0 0 300px;
}

.info-title h2 {
    font-size: 40px;
    font-weight: 100;
    letter-spacing: 4px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 15px;
}

.info-subtitle {
    font-size: 14px;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.5);
    font-weight: 300;
}

.info-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.info-description {
    font-size: 16px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 300;
    margin-bottom: 30px;
    letter-spacing: 0.5px;
}

.info-button {
    display: inline-flex;
    align-items: center;
    padding: 12px 30px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 30px;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.info-button::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    transform: translateX(-100%);
    transition: transform 0.6s ease;
}

.info-button:hover {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.3);
    transform: translateY(-3px);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2), 0 0 10px rgba(255, 255, 255, 0.1);
}

.info-button:hover::before {
    transform: translateX(100%);
}

.info-button span {
    position: relative;
    z-index: 1;
}

.contact-us-button {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.08));
    border-color: rgba(255, 255, 255, 0.2);
}

/* Contact methods styling */
.contact-methods {
    display: flex;
    width: 100%;
    gap: 40px;
    margin-bottom: 40px;
}

.contact-method {
    flex: 1;
    padding: 30px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 20px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: all 0.3s ease;
}

.contact-method:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.2);
    transform: translateY(-5px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2);
}

.contact-method-title {
    font-size: 18px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.contact-phone {
    font-size: 24px;
    font-weight: 400;
    color: #fff;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.contact-hours {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.7);
    font-weight: 300;
}

.contact-email-button {
    display: inline-flex;
    align-items: center;
    padding: 12px 25px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 30px;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.3s ease;
    margin-top: 15px;
}

.contact-email-button span {
    margin-right: 8px;
}

.contact-email-button .arrow-icon {
    transition: transform 0.3s ease;
}

.contact-email-button:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: translateY(-3px);
}

.contact-email-button:hover .arrow-icon {
    transform: translateX(5px);
}

/* Navigation */
.slider-nav {
    position: absolute;
    top: 40px;
    right: 40px;
    display: flex;
    align-items: center;
    gap: 15px;
    z-index: 10;
    background: rgba(0, 0, 0, 0.5);
    padding: 10px 20px;
    border-radius: 25px;
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}

.slider-counter {
    font-size: 14px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.9);
    letter-spacing: 1px;
    min-width: 40px;
    text-align: center;
}

.nav-dots-container {
    display: flex;
    gap: 8px;
}

.nav-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.4);
    cursor: pointer;
    transition: all 0.3s ease;
    border: none;
}

.nav-dot.active {
    background: #fff;
    width: 24px;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(255, 255, 255, 0.3);
}

.slider-controls {
    position: absolute;
    bottom: 25px;
    left: 40px;
    display: flex;
    gap: 0;
    z-index: 10;
    background: rgba(0, 0, 0, 0.5);
    border-radius: 25px;
    overflow: hidden;
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}

.slider-arrows {
    background: transparent;
    color: rgba(255, 255, 255, 0.7);
    border: none;
    width: 44px;
    height: 44px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    transition: all 0.3s ease;
    font-weight: 300;
}

.slider-arrows:hover {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
}

.slider-arrows:active {
    background: rgba(255, 255, 255, 0.2);
}

.prev-arrow {
    border-right: 1px solid rgba(255, 255, 255, 0.1);
}

/* SERVICE Section */
.service-section {
    padding: 100px 40px;
    background: transparent;
    position: relative;
}

.service-title {
    text-align: center;
    margin-bottom: 80px;
}

.service-title h2 {
    font-size: 48px;
    font-weight: 100;
    letter-spacing: 8px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 20px;
}

.service-subtitle {
    font-size: 14px;
    letter-spacing: 3px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

.service-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px;
    max-width: 1400px;
    margin: 0 auto;
}

.service-card {
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 20px;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    position: relative;
    cursor: default;
}

.service-card.has-link {
    cursor: pointer;
}

.service-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.05);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 1;
    pointer-events: none;
}

.service-card:hover::before {
    opacity: 1;
}

.service-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3), 0 0 15px rgba(255, 255, 255, 0.1);
}

/* サービスカードのホバー効果強化 */
.service-card.has-link:hover {
    transform: translateY(-10px) scale(1.02);
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.4);
    border-color: rgba(255, 255, 255, 0.3);
}

.service-card.has-link:hover .service-content {
    transform: translateY(-8px);
}

.service-card.has-link:hover .service-image {
    transform: scale(1.08);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3);
}

/* サービスリンク用スタイル */
.service-link {
    text-decoration: none;
    color: inherit;
    display: block;
    width: 100%;
    height: 100%;
}

.service-link:hover {
    text-decoration: none;
    color: inherit;
}

.service-image {
    width: 100%;
    position: relative;
    overflow: hidden;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    transition: all 0.4s ease;
}

.service-image::before {
    content: "";
    display: block;
    padding-top: 56.25%; /* 16:9 aspect ratio */
}

.service-content {
    padding: 30px;
    flex: 1;
    position: relative;
    z-index: 2;
}

.service-name {
    font-size: 24px;
    font-weight: 400;
    margin-bottom: 5px;
    color: #fff;
    letter-spacing: 1px;
}

.service-type {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.7);
    margin-bottom: 20px;
    font-weight: 300;
    letter-spacing: 1px;
    display: inline-block;
    padding: 4px 12px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 20px;
    border: 1px solid rgba(255, 255, 255, 0.15);
}

/* ===========================================
   サービス説明文 - 省略完全無効化
   =========================================== */

.service-description {
    /* 基本スタイル */
    font-size: 14px !important;
    line-height: 1.8 !important;
    color: rgba(255, 255, 255, 0.8) !important;
    font-weight: 300 !important;
    letter-spacing: 0.3px !important;
    margin-bottom: 20px !important;
    
    /* 省略を完全に無効化 - 重要な順序 */
    display: block !important;          /* 最初にblockに設定 */
    -webkit-box-orient: unset !important;
    -webkit-line-clamp: unset !important;
    overflow: visible !important;
    text-overflow: unset !important;
    white-space: normal !important;
    max-height: none !important;
    height: auto !important;
    min-height: auto !important;
    
    /* Flexboxの無効化 */
    -webkit-box: none !important;
    -moz-box: none !important;
    -ms-flexbox: none !important;
    -webkit-flex: none !important;
    flex: none !important;
    
    /* テキスト改行設定 */
    word-wrap: break-word !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
}

.service-description p {
    /* 段落要素も同様に設定 */
    margin: 0 0 15px 0 !important;
    font-size: inherit !important;
    line-height: inherit !important;
    color: inherit !important;
    font-weight: inherit !important;
    letter-spacing: inherit !important;
    
    /* 省略無効化 */
    display: block !important;
    -webkit-box-orient: unset !important;
    -webkit-line-clamp: unset !important;
    overflow: visible !important;
    text-overflow: unset !important;
    white-space: normal !important;
    max-height: none !important;
    height: auto !important;
    
    /* Flexboxの無効化 */
    -webkit-box: none !important;
    -moz-box: none !important;
    flex: none !important;
    
    word-wrap: break-word !important;
    word-break: break-word !important;
}

.service-description p:last-child {
    margin-bottom: 0 !important;
}

/* 他の要素も同様に */
.service-description > * {
    display: block !important;
    -webkit-box-orient: unset !important;
    -webkit-line-clamp: unset !important;
    overflow: visible !important;
    text-overflow: unset !important;
    white-space: normal !important;
    max-height: none !important;
    height: auto !important;
    -webkit-box: none !important;
    flex: none !important;
}

/* リスト要素 */
.service-description ul,
.service-description ol {
    margin: 15px 0 !important;
    padding-left: 20px !important;
    display: block !important;
    -webkit-line-clamp: unset !important;
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
}

.service-description li {
    margin-bottom: 8px !important;
    display: list-item !important;
    -webkit-line-clamp: unset !important;
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
    word-wrap: break-word !important;
}

/* 強制的にすべてのWebkitプロパティをリセット */
.service-description,
.service-description *,
.service-description p,
.service-description div {
    -webkit-line-clamp: unset !important;
    -webkit-box-orient: unset !important;
    -webkit-box: none !important;
}

/* 詳細リンク */
.service-more-link {
    display: inline-flex;
    align-items: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: 12px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.3s ease;
    margin-top: 15px;
    opacity: 0;
    transform: translateY(10px);
}

.service-card.has-link:hover .service-more-link {
    opacity: 1;
    transform: translateY(0);
    color: rgba(255, 255, 255, 1);
}

.service-more-link .arrow-icon {
    margin-left: 8px;
    transition: transform 0.3s ease;
}

.service-card.has-link:hover .service-more-link .arrow-icon {
    transform: translateX(5px);
}

/* NEWS Section */
.news-section {
    padding: 100px 40px;
    background: transparent;
    position: relative;
}

.news-title {
    text-align: center;
    margin-bottom: 80px;
}

.news-title h2 {
    font-size: 48px;
    font-weight: 100;
    letter-spacing: 8px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 20px;
}

.news-subtitle {
    font-size: 14px;
    letter-spacing: 3px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

.news-container {
    display: flex;
    flex-direction: column;
    gap: 30px;
    max-width: 1000px;
    margin: 0 auto;
}


.news-card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3), 0 0 15px rgba(255, 255, 255, 0.1);
}

.news-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 25px;
    min-width: 120px;
    background: rgba(255, 255, 255, 0.1);
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    transition: all 0.4s ease;
}

.news-card:hover .news-date {
    background: rgba(255, 255, 255, 0.15);
}

.date-day {
    font-size: 36px;
    font-weight: 200;
    line-height: 1;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 5px;
}

.date-weekday {
    font-size: 14px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.date-month {
    font-size: 14px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.news-content {
    padding: 30px;
    flex: 1;
}

.news-category {
    display: inline-block;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    padding: 5px 15px;
    border-radius: 15px;
    font-size: 10px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 300;
    margin-bottom: 15px;
}

.news-headline {
    font-size: 18px;
    font-weight: 400;
    color: #fff;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
}

.news-text {
    font-size: 14px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 300;
    margin-bottom: 20px;
    letter-spacing: 0.3px;
}

.news-card {
    display: flex;
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 20px;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
    cursor: pointer; /* この行を追加 */
}

/* ニュースカードリンク用スタイル */
.news-card-link {
    text-decoration: none !important;
    color: inherit !important;
    display: flex;
    width: 100%;
    height: 100%;
    transition: all 0.3s ease;
}

.news-card-link:hover {
    text-decoration: none !important;
    color: inherit !important;
}

.news-card-link:visited {
    text-decoration: none !important;
    color: inherit !important;
}

.news-card-link:focus {
    text-decoration: none !important;
    color: inherit !important;
    outline: none;
}

/* ニュース内のRead Moreを通常のテキストスタイルに */
.news-more {
    display: inline-flex;
    align-items: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: 12px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.3s ease;
    margin-top: 10px;
}

.news-card:hover .news-more {
    color: rgba(255, 255, 255, 1);
}

.news-more .arrow-icon {
    margin-left: 8px;
    transition: transform 0.3s ease;
}

.news-card:hover .news-more .arrow-icon {
    transform: translateX(5px);
}

.news-more-button-container {
    text-align: center;
    margin-top: 60px;
}

.news-more-button {
    display: inline-flex;
    align-items: center;
    padding: 14px 36px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 30px;
    color: #fff;
    text-decoration: none;
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.news-more-button::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    transform: translateX(-100%);
    transition: transform 0.6s ease;
}

.news-more-button:hover {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.3);
    transform: translateY(-3px);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2), 0 0 10px rgba(255, 255, 255, 0.1);
}

.news-more-button:hover::before {
    transform: translateX(100%);
}

.news-more-button span {
    position: relative;
    z-index: 1;
}

.news-more-button .arrow-icon {
    margin-left: 10px;
    font-style: normal;
    position: relative;
    z-index: 1;
    transition: transform 0.3s ease;
}

.news-more-button:hover .arrow-icon {
    transform: translateX(5px);
}

/* ===================================================
   TALENT Section - 完全修正版（レイアウト安定化）
   =================================================== */

.talent-section {
    padding: 100px 40px;
    background: transparent;
    position: relative;
}

.talent-title {
    text-align: center;
    margin-bottom: 60px;
}

.talent-title h2 {
    font-size: 48px;
    font-weight: 100;
    letter-spacing: 8px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 20px;
}

.talent-subtitle {
    font-size: 14px;
    letter-spacing: 3px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

/* タレントフィルターボタン */
.talent-filter {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-bottom: 60px;
    flex-wrap: wrap;
}

.filter-btn {
    padding: 10px 25px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 25px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 14px;
    font-weight: 300;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    position: relative;
    overflow: hidden;
    outline: none;
    user-select: none;
}

.filter-btn::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    transition: left 0.6s ease;
    z-index: 0;
}

.filter-btn:hover::before {
    left: 100%;
}

.filter-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.3);
    color: rgba(255, 255, 255, 0.9);
    transform: translateY(-2px);
}

.filter-btn.active {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.4);
    color: #fff;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
}

.filter-btn:active {
    transform: scale(0.95);
}

/* アニメーション中は無効化 */
.talent-filter.animating .filter-btn {
    pointer-events: none;
    opacity: 0.7;
}

/* タレントグリッド - 完全修正版（position fixed問題解決） */
.talent-grid {
    /* 基本グリッド設定 */
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    max-width: 1200px;
    margin: 0 auto;
    
    /* レイアウト安定化 */
    min-height: 450px;
    width: 100%;
    position: relative;
    
    /* グリッドアイテムの配置を制御 */
    grid-auto-rows: minmax(350px, auto);
    grid-auto-flow: row;
    align-items: start;
    justify-items: stretch;
    align-content: start;
}

/* タレントカード - 修正版（flexboxとgridの競合解決） */
.talent-card {
    /* 重要: display: flexを削除してgridの自然な配置を使用 */
    
    /* 基本スタイル */
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 20px;
    padding: 30px;
    text-align: center;
    position: relative;
    overflow: hidden;
    box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
    
    /* サイズ設定 */
    width: 100%;
    height: auto;
    min-height: 350px;
    
    /* グリッド位置は自動 */
    grid-column: auto;
    grid-row: auto;
    
    /* アニメーション設定 */
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: opacity, transform, visibility;
    
    /* 初期状態 */
    opacity: 1;
    transform: translateY(0) scale(1);
    visibility: visible;
    pointer-events: auto;
}

/* 非表示状態のカード - レイアウト保持版 */
.talent-card.hidden {
    /* 非表示状態（レイアウトは保持） */
    opacity: 0;
    visibility: hidden;
    transform: translateY(30px) scale(0.95);
    pointer-events: none;
    
    /* アニメーション時間短縮 */
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 表示状態のカード */
.talent-card:not(.hidden) {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
    pointer-events: auto;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ホバー効果（表示中のカードのみ） */
.talent-card:not(.hidden):hover {
    transform: translateY(-8px) scale(1.02);
    background: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.25);
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.4), 0 0 15px rgba(255, 255, 255, 0.1);
}

.talent-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.12) 0%, transparent 50%);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
    z-index: 1;
}

.talent-card:not(.hidden):hover::before {
    opacity: 1;
}

/* タレント画像 */
.talent-image {
    width: 100%;
    max-width: 250px;
    aspect-ratio: 1;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 15px;
    margin: 0 auto 20px auto;
    position: relative;
    overflow: hidden;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    transition: all 0.4s ease;
    flex-shrink: 0;
}

.talent-card:not(.hidden):hover .talent-image {
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);
    transform: scale(1.02);
}

/* タレント情報 */
.talent-info {
    width: 100%;
    text-align: center;
    position: relative;
    z-index: 2;
}

.talent-name {
    font-size: 16px;
    font-weight: 300;
    color: #fff;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.talent-name-en {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.7);
    margin-bottom: 12px;
    letter-spacing: 1px;
    font-weight: 200;
}

.talent-role {
    display: inline-block;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    padding: 5px 15px;
    border-radius: 15px;
    font-size: 10px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 300;
}

/* もっと見るボタン */
.talent-more-button-container {
    text-align: center;
    margin-top: 60px;
}

.talent-more-button {
    display: inline-flex;
    align-items: center;
    padding: 14px 36px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 30px;
    color: #fff;
    text-decoration: none;
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 1px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.talent-more-button::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    transform: translateX(-100%);
    transition: transform 0.6s ease;
}

.talent-more-button:hover {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.3);
    transform: translateY(-3px);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2), 0 0 10px rgba(255, 255, 255, 0.1);
}

.talent-more-button:hover::before {
    transform: translateX(100%);
}

.talent-more-button span {
    position: relative;
    z-index: 1;
}

.arrow-icon {
    margin-left: 10px;
    font-style: normal;
    position: relative;
    z-index: 1;
    transition: transform 0.3s ease;
}

.talent-more-button:hover .arrow-icon {
    transform: translateX(5px);
}

/* MISSION & VISION Section */
.mission-vision-section {
    padding: 120px 40px;
    position: relative;
    overflow: hidden;
}

.mission-vision-section::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: 
        radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.04) 0%, transparent 60%),
        radial-gradient(circle at 80% 70%, rgba(255, 255, 255, 0.04) 0%, transparent 60%);
    pointer-events: none;
    z-index: -1;
}

.mission-vision-container {
    max-width: 1400px;
    margin: 0 auto;
    display: flex;
    gap: 60px;
}

.mission-box, .vision-box {
    flex: 1;
    padding: 60px 40px;
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 20px;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
    position: relative;
}

.mission-box::before, .vision-box::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, transparent 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 1;
    pointer-events: none;
}

/* ===========================================
   RESPONSIVE STYLES
   =========================================== */

@media (max-width: 1024px) {
    .service-container {
        grid-template-columns: repeat(2, 1fr);
        gap: 30px;
        max-width: 1000px;
    }
    
    .talent-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 25px;
        min-height: 400px;
    }
    
    .talent-card {
        min-height: 320px;
    }
}

@media (max-width: 768px) {
    .main-visual {
        margin-top: 75px;
        height: 70vh;
        min-height: 500px;
    }

    .slider-container {
        padding: 20px;
    }

    .slider-wrapper {
        gap: 15px;
    }

    .slide-item {
        width: 100%; /* スマホでは1枚ずつ表示 */
        height: 400px;
        aspect-ratio: 3/4;
    }

    .slide-image {
        width: 75%;
        padding-bottom: 75%; /* 正方形維持 */
        margin: 15% auto 10% auto;
    }

    .slide-content {
        bottom: 15px;
        left: 15px;
        right: 15px;
    }

    .slide-title {
        font-size: 14px;
    }

    .slider-nav {
        top: 20px;
        right: 20px;
        padding: 8px 16px;
    }

    .slider-counter {
        font-size: 12px;
        min-width: 35px;
    }

    .nav-dots-container {
        display: none;
    }

    .slider-controls {
        left: 20px;
        bottom: 20px;
    }

    .service-section {
        padding: 60px 20px;
    }

    .service-title h2 {
        font-size: 36px;
        letter-spacing: 6px;
        margin-bottom: 15px;
    }

    .service-subtitle {
        font-size: 12px;
        letter-spacing: 2px;
    }

    .service-container {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .service-content {
        padding: 25px;
    }

    .service-name {
        font-size: 20px;
    }

    /* モバイル版サービス説明文 */
    .service-description {
        font-size: 13px !important;
        line-height: 1.7 !important;
        overflow: visible !important;
        white-space: normal !important;
        text-overflow: unset !important;
        -webkit-line-clamp: unset !important;
        max-height: none !important;
        height: auto !important;
    }

    .service-description p {
        overflow: visible !important;
        white-space: normal !important;
        text-overflow: unset !important;
        -webkit-line-clamp: unset !important;
        max-height: none !important;
        height: auto !important;
    }

    .service-more-link {
        opacity: 1;
        transform: translateY(0);
    }

    .news-section {
        padding: 60px 20px;
    }

    .news-title h2 {
        font-size: 36px;
        letter-spacing: 6px;
        margin-bottom: 15px;
    }

    .news-subtitle {
        font-size: 12px;
        letter-spacing: 2px;
    }

    .news-card {
        flex-direction: column;
    }

    .news-card-link {
        flex-direction: column;
    }

    .news-date {
        flex-direction: row;
        justify-content: center;
        gap: 10px;
        padding: 15px;
        min-width: auto;
        width: 100%;
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    }

    .date-day {
        font-size: 28px;
        margin-bottom: 0;
        margin-right: 5px;
    }

    .date-weekday, .date-month {
        font-size: 12px;
    }

    .news-content {
        padding: 20px;
    }

    .news-headline {
        font-size: 16px;
    }

    .news-text {
        font-size: 13px;
        line-height: 1.6;
        margin-bottom: 15px;
    }

    .news-more-button-container {
        margin-top: 40px;
    }

    .news-more-button {
        padding: 12px 30px;
        font-size: 14px;
    }

    .talent-section {
        padding: 60px 20px;
    }

    .talent-title h2 {
        font-size: 36px;
        letter-spacing: 6px;
        margin-bottom: 15px;
    }

    .talent-subtitle {
        font-size: 12px;
        letter-spacing: 2px;
    }

    .talent-filter {
        gap: 15px;
        margin-bottom: 40px;
    }

    .filter-btn {
        padding: 8px 20px;
        font-size: 12px;
        letter-spacing: 0.5px;
    }

    .talent-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
        min-height: 350px;
    }

    .talent-card {
        padding: 20px;
        min-height: 280px;
    }

    .talent-image {
        width: 100%;
        margin-bottom: 15px;
    }

    .talent-name {
        font-size: 15px;
    }

    .talent-name-en {
        font-size: 10px;
    }

    .talent-more-button-container {
        margin-top: 40px;
    }

    .talent-more-button {
        padding: 12px 30px;
        font-size: 14px;
    }

    .mission-vision-section {
        padding: 100px 30px;
    }
    
    .mission-box, .vision-box {
        padding: 50px 30px;
    }
    
    .english-text {
        font-size: 28px;
    }
    
    .japanese-text {
        font-size: 14px;
    }

    .info-section {
        padding: 60px 20px;
    }

    .info-container {
        flex-direction: column;
        gap: 30px;
    }

    .info-title {
        flex: none;
        width: 100%;
        text-align: center;
    }

    .info-title h2 {
        font-size: 36px;
        letter-spacing: 3px;
    }

    .info-content {
        align-items: center;
        text-align: center;
    }

    .info-description {
        font-size: 15px;
        margin-bottom: 25px;
    }

    .contact-methods {
        flex-direction: column;
        gap: 20px;
    }

    .contact-method {
        padding: 25px;
    }

    .contact-method-title {
        font-size: 16px;
    }

    .contact-phone {
        font-size: 22px;
    }
}

@media (max-width: 480px) {
    .main-visual {
        margin-top: 65px;
    }

    .slider-container {
        padding: 15px;
    }

    .slider-wrapper {
        gap: 10px;
    }

    .slide-item {
        height: 55vh;
    }

    .slide-image {
        width: 80%;
        padding-bottom: 80%; /* 正方形維持 */
        margin: 20% auto 15% auto;
    }

    .slide-content {
        bottom: 12px;
        left: 12px;
        right: 12px;
    }

    .slider-arrows {
        width: 40px;
        height: 40px;
        font-size: 14px;
    }

    .slider-nav {
        top: 15px;
        right: 15px;
        padding: 6px 12px;
    }

    .slider-counter {
        font-size: 11px;
        min-width: 30px;
    }

    .slider-controls {
        left: 15px;
        bottom: 15px;
    }

    .service-section {
        padding: 40px 15px;
    }

    .service-title h2 {
        font-size: 28px;
        letter-spacing: 4px;
        margin-bottom: 10px;
    }

    .service-subtitle {
        font-size: 11px;
        letter-spacing: 1.5px;
    }

    .service-content {
        padding: 20px;
    }

    .service-container {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .service-name {
        font-size: 18px;
    }

    .service-type {
        font-size: 12px;
        margin-bottom: 15px;
        padding: 3px 10px;
    }

    /* 480px版サービス説明文 */
    .service-description {
        font-size: 12px !important;
        line-height: 1.6 !important;
        overflow: visible !important;
        white-space: normal !important;
        text-overflow: unset !important;
        -webkit-line-clamp: unset !important;
        max-height: none !important;
        height: auto !important;
    }

    .service-description p {
        overflow: visible !important;
        white-space: normal !important;
        text-overflow: unset !important;
        -webkit-line-clamp: unset !important;
        max-height: none !important;
        height: auto !important;
    }

    .news-section {
        padding: 40px 15px;
    }

    .news-title h2 {
        font-size: 28px;
        letter-spacing: 4px;
        margin-bottom: 10px;
    }

    .news-subtitle {
        font-size: 11px;
        letter-spacing: 1.5px;
    }

    .news-date {
        padding: 12px;
    }

    .date-day {
        font-size: 24px;
    }

    .date-weekday, .date-month {
        font-size: 10px;
    }

    .news-content {
        padding: 15px;
    }

    .news-category {
        font-size: 9px;
        padding: 4px 12px;
        margin-bottom: 10px;
    }

    .news-headline {
        font-size: 15px;
    }

    .news-text {
        font-size: 12px;
        line-height: 1.5;
        margin-bottom: 12px;
    }

    .news-more {
        font-size: 11px;
    }

    .news-more-button-container {
        margin-top: 30px;
    }

    .news-more-button {
        padding: 10px 25px;
        font-size: 13px;
        letter-spacing: 0.5px;
    }

    .talent-section {
        padding: 40px 15px;
    }

    .talent-title h2 {
        font-size: 28px;
        letter-spacing: 4px;
        margin-bottom: 10px;
    }

    .talent-subtitle {
        font-size: 11px;
        letter-spacing: 1.5px;
    }

    .talent-filter {
        gap: 10px;
        margin-bottom: 30px;
    }

    .filter-btn {
        padding: 6px 15px;
        font-size: 11px;
        letter-spacing: 0.5px;
        min-width: 60px;
    }

    .talent-grid {
        grid-template-columns: 1fr;
        gap: 15px;
        min-height: 300px;
    }

    .talent-card {
        padding: 20px;
        border-radius: 15px;
        min-height: 320px;
    }

    .talent-image {
        width: 100%;
        margin-bottom: 12px;
        border-radius: 12px;
    }

    .talent-name {
        font-size: 14px;
    }

    .talent-name-en {
        font-size: 9px;
    }

    .talent-role {
        font-size: 8px;
        padding: 4px 12px;
    }

    .talent-more-button-container {
        margin-top: 30px;
    }

    .talent-more-button {
        padding: 10px 25px;
        font-size: 13px;
        letter-spacing: 0.5px;
    }

    .mission-vision-section {
        padding: 80px 20px;
    }
    
    .mission-vision-container {
        flex-direction: column;
        gap: 40px;
    }
    
    .mission-box, .vision-box {
        padding: 40px 25px;
    }
    
    .mission-title, .vision-title {
        font-size: 16px;
        letter-spacing: 6px;
        margin-bottom: 30px;
    }
    
    .english-text {
        font-size: 24px;
    }
    
    .japanese-text {
        font-size: 13px;
        letter-spacing: 1.5px;
    }

    .info-section {
        padding: 40px 15px;
    }

    .info-title h2 {
        font-size: 28px;
        letter-spacing: 2px;
    }

    .info-subtitle {
        font-size: 12px;
    }

    .info-description {
        font-size: 12px;
        line-height: 1.7;
        margin-bottom: 20px;
        width: 90%;
    }

    .info-button {
        padding: 10px 25px;
        font-size: 13px;
    }
}