/* ==========================================================================
 リセット・共通ページ・コンポーネント 
==========================================================================*/

/* ==========================================================================
   Reset & Base Styles
   ========================================================================== */

/* Universal Reset */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

*::before,
*::after {
    box-sizing: border-box;
}

/* HTML & Body */
html {
    scroll-behavior: smooth;
    font-size: 100%;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    padding: 0;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 1rem;
    line-height: 1.6;
    color: #333;
    background-color: #fff;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
    margin: 0;
    padding: 0;
    font-weight: inherit;
    font-size: inherit;
}

/* Lists */
ol, ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

li {
    margin: 0;
    padding: 0;
}

/* Links */
a {
    text-decoration: none;
    color: inherit;
}

/* Images */
img {
    max-width: 100%;
    height: auto;
    vertical-align: top;
    border: 0;
}

/* Form Elements */
input, button, textarea, select {
    margin: 0;
    padding: 0;
    border: none;
    background: none;
    font-family: inherit;
    font-size: inherit;
    color: inherit;
}

button {
    cursor: pointer;
    outline: none;
}

/* Tables */
table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* Other Elements */
p, blockquote, pre {
    margin: 0;
}

address {
    font-style: normal;
}

figure {
    margin: 0;
}

hr {
    border: 0;
    height: 1px;
    background: #ccc;
    margin: 0;
}

/* スマホタブレットの両サイドpadding */
.sptabcont{padding: 0 clamp(1rem, 4vw, 1.25rem);}

/* --------------------------------------------------------------------------
   parts Compornents
--------------------------------------------------------------------------*/

/* moreボタン */
.more-button {
    background-color: #444444;
    color: white;
    border: 1px solid transparent;
    padding:.8rem 3rem;
    border-radius: 50px;
    font-size:1.1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.3s ease;
    text-decoration: none;
    display: inline-block;
    text-align: center;
}

.more-button:hover {
    background-color: white;
    color: #444444;
    border-color: #444444;
}

.more-button:visited {
    background-color: #444444;
    color: white;
}

.more-button:visited:hover {
    background-color: white;
    color: #444444;
    border-color: #444444;
}

.button-container {
    text-align: center;
}

/* ==========================================================================
   Header Components
   ========================================================================== */

.header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background: transparent;
    z-index: 1000;
}

.header-container {
    max-width: 75rem;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: clamp(0.75rem, 2vw, 1rem) 0;
    width: 100%;
    box-sizing: border-box;
}

/* ロゴ */
.logo {
    display: flex;
    align-items: baseline;
    line-height: 0;
    transform: translateY(-0.625rem);
}

.logo img {
    height: auto;
    width: auto;
}

/* ナビゲーション */
.nav {
    display: flex;
    align-items: center;
    gap: clamp(3rem, 5vw, 4rem);
}

.nav-list {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: clamp(1.5rem, 3vw, 2rem);
    transform: translateY(-0.625rem);
}

.nav-link {
    color: #373737;
    text-decoration: none;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 900;
    font-size: 1rem;
    letter-spacing: 0.05em;
    transition: color 0.3s ease;
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.nav-link:hover {
    color: #FF9130;
}

.nav-arrow {
    font-size: 1rem;
    font-weight: normal;
}

/* お問い合わせボタン */
.contact-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 9rem;
    height: 9rem;
    background: linear-gradient(180deg, #FF9130 0%, #FF9130 60%, #FFAE00 100%);
    border-radius: 50%;
    text-decoration: none;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
    transition: opacity 0.3s ease, box-shadow 0.3s ease;
    gap: 0.25rem;
    position: relative;
}

.contact-btn:hover {
    opacity: 0.8;
    box-shadow: none;
}

.contact-btn-mail {
    position: absolute;
    top: 1.3rem;
    left: 50%;
    transform: translateX(-50%);
    width: 2rem;
    height: 2rem;
    background: url('../images/icn_mail.png') no-repeat center;
    background-size: contain;
}

.contact-btn-text {
    color: #fff;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 500;
    text-align: center;
    line-height: 1.2;
    letter-spacing: 0.05em;
    margin-top: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.contact-btn-jp {
    font-size: 1.0625rem;
    margin-top: 1rem;
}

.contact-btn-en {
    font-size: 0.775rem;
    margin-top: 0.5rem;
}

/* ハンバーガーメニューボタン（デフォルトは非表示） */
.hamburger-btn {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 1.875rem;
    background: none;
    border: none;
    cursor: pointer;
    gap: 0.25rem;
}

.hamburger-line {
    width: 1.25rem;
    height: 0.125rem;
    background: #373737;
    transition: all 0.3s ease;
}

/* モバイル・タブレット用固定お問い合わせボタン（デフォルトは非表示） */
.contact-btn-fixed {
    display: none;
    position: fixed;
    bottom: 8rem;
    right: 0;
    width: 6rem;
    min-height: 4rem;
    padding: 0.75rem 0.5rem;
    background: linear-gradient(180deg, #FF9130 0%, #FF9130 60%, #FFAE00 100%);
    border-radius:0.75rem 0 0 0.75rem;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    z-index: 1000;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    gap: 0.25rem;
}

.contact-btn-fixed:hover {
    opacity: 0.8;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
}

.contact-btn-fixed:active {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

.contact-btn-fixed-mail {
    position: absolute;
    top: 0.875rem;
    left: 50%;
    transform: translateX(-50%);
    width: 1.5rem;
    height: 1.5rem;
    background: url('../images/icn_mail.png') no-repeat center;
    background-size: contain;
}

.contact-btn-fixed-text {
    color: #fff;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 500;
    text-align: center;
    line-height: 1.2;
    letter-spacing: 0.05em;
    margin-top: 1.3rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.contact-btn-fixed-en {
    font-size: 0.8rem;
    margin-top: 0.8rem;
}

/* お問い合わせページでボタンを非表示 */
body.contact-page .contact-btn,
body.contact-page .contact-btn-fixed {
    display: none;
}

/* iPad対応 */
@media screen and (max-width: 63.9375rem) {
    .contact-btn {display: none;}
    .contact-btn-fixed {display: flex;}
}

/* スマートフォン・タブレット対応（768px以下） */
@media screen and (max-width: 47.9375rem) {
    /* パソコン版ボタンを非表示 */
    .contact-btn {display: none;}
    
    /* タブレット・モバイル版ボタンを表示 */
    .contact-btn-fixed {
        display: flex;
        bottom: 7rem; /* スマホ用に調整（もう少し上に配置） */
        right: 0; /* 右端にぴったりくっつける */
        width: 5rem; /* スマホ用により小さく */
        min-height: 3.5rem;
        padding: 0.625rem 0.375rem;
    }

    .contact-btn-fixed-mail {
        top: 0.75rem;
        width: 1.25rem;
        height: 1.25rem;
    }


    .contact-btn-fixed-en {
        font-size: 0.7rem;
        margin-top: 0.3rem;
    }
}




/* ==========================================================================
   Footer Contact Components
   ========================================================================== */

        /* Contact section styles */
        .ft_contact {
            position: relative;
            background-color: #6AAA42;
            width: 100%;
            overflow: hidden;
            padding:10rem 0;
        }

        /* Background triangles */
        .ft_contact::before,
        .ft_contact::after {
            content: '';
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 0;
            height: 0;
            z-index: 1;
        }

        /* First triangle (smaller, darker) */
        .ft_contact::before {
            border-left: 393px solid transparent;
            border-right: 393px solid transparent;
            border-top: 10rem solid #77B550;
            max-width: 786px;
        }

        /* Second triangle (larger, lighter) */
        .ft_contact::after {
            border-left: 550px solid transparent;
            border-right: 550px solid transparent;
            border-top: 15rem solid #71B249;
            max-width: 1100px;
            z-index: 0;
        }

        /* Container */
        .fcontact_container {
            position: relative;
            z-index: 2;
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 clamp(1rem, 4vw, 1.25rem);
            text-align: center;
            color: white;
        }

        /* Subtitle */
        .fcontact_subtitle {
            font-size: 0.875rem;
            font-weight: normal;
            margin: 0 0 1rem 0;
            letter-spacing: 0.05em;
        }

        /* Main title */
        .fcontact_title {
            font-size: clamp(2.5rem, 5vw, 3.5rem);
            font-weight: bold;
            letter-spacing: 0.2em;
            margin: 0 0 2rem 0;
        }

        /* Service list */
        .fcontact_services {
            font-size: clamp(0.875rem, 2vw, 1rem);
            margin: 0 0 2.5rem 0;
            letter-spacing: 0.05em;
        }

        /* Description */
        .fcontact_description {
            font-size: clamp(0.875rem, 2vw, 1rem);
            margin: 0 0 3rem 0;
            line-height: 1.6;
        }

        /* Button */
        .fcontact_button {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.75rem;
            background-color: transparent;
            border: 2px solid white;
            border-radius: 50px;
            color: white;
            text-decoration: none;
            font-size: clamp(0.875rem, 2vw, 1rem);
            font-weight: 500;
            padding: 1rem 2rem;
            transition: all 0.3s ease;
            letter-spacing: 0.05em;
        }

        .fcontact_button:hover {
            background-color: #49931B;
            transform: translateY(-2px);
        }

        /* Button icon */
        .fcontact_button_icon {
            width: 24px;
            height: 24px;
            background: url('../images/icn_mail.png') no-repeat center center;
            background-size: contain;
        }

        /* iPad (1024px～) */
        @media screen and (min-width: 64rem) and (max-width: 90rem) {
            .ft_contact {
                padding: 8rem 0;
            }
            
            .fcontact_title {
                margin-bottom: 1.75rem;
            }
            
            .fcontact_services {
                margin-bottom: 2.25rem;
            }
            
            .fcontact_description {
                margin-bottom: 2.75rem;
            }
        }

        /* タブレット (768px～1023px) */
        @media screen and (max-width: 63.9375rem) {
            .ft_contact {
                padding: 8rem 0;
            }
            
            .ft_contact::before {
                border-left-width: 300px;
                border-right-width: 300px;
            }
            
            .ft_contact::after {
                border-left-width: 400px;
                border-right-width: 400px;
            }
            
            .fcontact_title {
                margin-bottom: 1.5rem;
            }
            
            .fcontact_services {
                margin-bottom: 2rem;
            }
            
            .fcontact_description {
                margin-bottom: 2.5rem;
            }
        }

        /* スマートフォン (～767px) */
        @media screen and (max-width: 47.9375rem) {
            .ft_contact {
                padding: 5rem 0;
            }
            
            .ft_contact::before {
                border-left-width: 200px;
                border-right-width: 200px;
            }
            
            .ft_contact::after {
                border-left-width: 280px;
                border-right-width: 280px;
            }
            
            .fcontact_subtitle {
                font-size: 0.75rem;
                margin-bottom: 0.75rem;
            }
            
            .fcontact_title {
                margin-bottom: 1.25rem;
            }
            
            .fcontact_services {
                margin-bottom: 1.5rem;
                font-size: 0.8125rem;
            }
            
            .fcontact_description {
                margin-bottom: 2rem;
                font-size: 0.8125rem;
            }
            
            .fcontact_button {
                padding: 0.875rem 1.75rem;
                font-size: 0.8125rem;
            }
            
            .fcontact_button_icon {
                width: 20px;
                height: 20px;
            }
        }


/* ==========================================================================
   ページトップリンクボタン Components
   ========================================================================== */
        .page-top-btn {
            position: fixed;
            bottom: 2rem;
            right: 2rem;
            width: 3.5rem;
            height: 3.5rem;
            background-color: #6AAA42;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            color: white;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            z-index: 1000;
            border: none;
            cursor: pointer;
            /* 初期非表示 */
            opacity: 0;
            transform: translateY(100px);
            visibility: hidden;
        }

        .page-top-btn.show {
            opacity: 1;
            transform: translateY(-2px);
            visibility: visible;
        }

        .page-top-btn:hover {
            background-color: #5d963a;
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
        }

        .page-top-btn:active {
            transform: translateY(0);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
        }

        .page-top-icon {
            width: 1.5rem;
            height: 1.5rem;
            transition: transform 0.3s ease;
        }

        .page-top-btn:hover .page-top-icon {
            transform: translateY(-1px);
        }


        /* スマートフォン対応 */
        @media screen and (max-width: 47.9375rem) {
            .page-top-btn {
                bottom: 1.5rem;
                right: 1.5rem;
                width: 3rem;
                height: 3rem;
            }

            .page-top-icon {
                width: 1.25rem;
                height: 1.25rem;
            }
        }

/* ==========================================================================
   Footer Components
   ========================================================================== */

.footer {
    background-color: #444;
    padding: clamp(2rem, 4vw, 3rem) 0;
}

/* タブレット・モバイル版でのフッターパディング調整 */
@media screen and (max-width: 63.9375rem) {
    .footer {
        padding: clamp(2rem, 4vw, 3rem) 0;
    }
}

.footer-container {
    max-width: 75rem;
    margin: 0 auto;
    padding: 0 clamp(1rem, 4vw, 2rem);
}

.footer-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: clamp(2rem, 4vw, 3rem);
}

/* フッターロゴエリア */
.footer-left {
    display: flex;
    flex-direction: column;
    gap: 1.875rem;
    position: relative;
}

.footer-logo {
    display: block;
    line-height: 0;
}

.footer-logo img {
    height: auto;
    width: auto;
}

.footer-tags {
    display: flex;
    gap: 0.75rem;
}

.footer-tag {
    color: #fff;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 400;
    font-size: 0.875rem;
    padding: 0.2rem 1rem;
    border: 1px solid #fff;
    border-radius: 0.25rem;
    letter-spacing: 0.05em;
}

/* フッターナビゲーション */
.footer-nav {
    transform: translateY(-0.3125rem);
}

.footer-nav-list {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: clamp(1.5rem, 3vw, 2rem);
}

.footer-nav-link {
    color: #fff;
    text-decoration: none;
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 900;
    font-size: 1rem;
    letter-spacing: 0.05em;
    transition: color 0.3s ease;
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.footer-nav-link:hover {
    color: #FF9130;
}

/* コピーライト */
.footer-copyright {
    text-align: center;
}

.footer-copyright p {
    color: #fff;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 0.875rem;
    margin: 0;
    opacity: 0.8;
}

/* ==========================================================================
   Responsive Design - iPad (1024px width)
   ========================================================================== */

/* iPad specific targeting - multiple approaches for better compatibility */
@media screen and (min-width: 64rem) and (max-width: 90rem) {
    .header-container {
        padding-left: clamp(2rem, 4vw, 4rem);
        padding-right: clamp(2rem, 4vw, 4rem);
    }
    
    .main-visual-container {
        padding: 0 clamp(2rem, 4vw, 4rem) !important;
    }
    
    .circular-text {
        top: 28% !important;
        right: -130px !important;
        width: 72% !important;
    }
    
    .mv-sato img {
        margin-left: 2rem !important;
    }
}

/* Additional iPad targeting with touch device detection */
@media screen and (min-width: 1024px) and (max-width: 1440px) and (pointer: coarse) {
    .header-container {
        padding-left: clamp(2rem, 4vw, 4rem) !important;
        padding-right: clamp(2rem, 4vw, 4rem) !important;
    }
    
    .main-visual-container {
        padding: 0 clamp(2rem, 4vw, 4rem) !important;
    }
    
    .circular-text {
        top: 28% !important;
        right: -130px !important;
        width: 72% !important;
    }
    
    .mv-sato img {
        margin-left: 2rem !important;
    }
}

/* Specific for iPad dimensions */
@media screen and (device-width: 1024px) and (device-height: 1366px) {
    .header-container {
        padding-left: clamp(2rem, 4vw, 4rem) !important;
        padding-right: clamp(2rem, 4vw, 4rem) !important;
    }
    
    .main-visual-container {
        padding: 0 clamp(2rem, 4vw, 4rem) !important;
    }
    
    .circular-text {
        top: 28% !important;
        right: -130px !important;
        width: 72% !important;
    }
    
    .mv-sato img {
        margin-left: 2rem !important;
    }
}

/* ==========================================================================
   Responsive Design - Tablet (768px～1023px)
   ========================================================================== */

@media screen and (max-width: 63.9375rem) {
    .header-container {
        max-width: none;
        padding: clamp(0.75rem, 2vw, 1rem) clamp(1.25rem, 4vw, 2.5rem);
        align-items: flex-end;
    }
    
    .logo {
        transform: none;
    }
    
    .nav-list {
        transform: none;
    }
    
    /* PC版のナビゲーションを非表示 */
    .nav-list{
        display: none;
    }
    
    /* ハンバーガーメニューを表示 */
    .hamburger-btn {
        display: flex;
    }
    

    
    /* ハンバーガーメニューが開かれている時 */
    .nav.menu-open .nav-list {
        display: flex;
        position: fixed;
        top: clamp(4rem, 8vw, 5rem);
        left: 0;
        right: 0;
        background: rgba(255, 255, 255, 0.5);
        backdrop-filter: blur(10px);
        flex-direction: column;
        width: 100%;
        padding: 1.25rem;
        gap: 0.9375rem;
        z-index: 1002;
    }
    
    .nav.menu-open .hamburger-line:nth-child(1) {
        transform: translateY(0.375rem) rotate(45deg);
    }
    
    .nav.menu-open .hamburger-line:nth-child(2) {
        opacity: 0;
    }
    
    .nav.menu-open .hamburger-line:nth-child(3) {
        transform: translateY(-0.375rem) rotate(-45deg);
    }
    
    .nav-link {
        font-size: 1rem;
        padding: 0.625rem 0;
        border-bottom: 0.0625rem solid rgba(240, 240, 240, 0.7);
        justify-content: center;
    }
    
    .nav-link:last-child {
        border-bottom: none;
    }
    
    /* フッター - タブレット版 */
    .footer-left,
    .footer-nav {
        display: none;
    }
    
    .footer-content {
        margin-bottom: 0;
    }
}

/* ==========================================================================
   Responsive Design - Mobile (～767px)
   ========================================================================== */

@media screen and (max-width: 47.9375rem) {
    .header-container {
        padding: clamp(0.5rem, 2vw, 0.75rem) clamp(1rem, 4vw, 1.25rem);
        align-items: flex-end;
    }
    
    .logo {
        transform: none;
    }
    
    .nav-list {
        transform: none;
    }
    
    .logo img {
        height: clamp(1.75rem, 4vw, 2rem);
    }
    
    /* PC版のナビゲーションを非表示 */
    .nav-list{display: none;}
    
    /* ハンバーガーメニューを表示 */
    .hamburger-btn {
        display: flex;
    }
    
    /* ハンバーガーメニューが開かれている時 */
    .nav.menu-open .nav-list {
        display: flex;
        position: fixed;
        top: clamp(3.5rem, 7vw, 4rem);
        left: 0;
        right: 0;
        background: rgba(255, 255, 255, 0.5);
        backdrop-filter: blur(10px);
        flex-direction: column;
        width: 100%;
        padding: 1.25rem;
        gap: 0.9375rem;
        z-index: 1002;
    }
    
    .nav.menu-open .hamburger-line:nth-child(1) {
        transform: translateY(0.375rem) rotate(45deg);
    }
    
    .nav.menu-open .hamburger-line:nth-child(2) {
        opacity: 0;
    }
    
    .nav.menu-open .hamburger-line:nth-child(3) {
        transform: translateY(-0.375rem) rotate(-45deg);
    }
    
    .nav-link {
        font-size: clamp(0.8rem, 2vw, 0.875rem);
        padding: 0.75rem 0;
        border-bottom: 0.0625rem solid rgba(240, 240, 240, 0.7);
        justify-content: center;
    }
    
    .nav-link:last-child {
        border-bottom: none;
    }
    
    /* フッター - スマートフォン版 */
    .footer-left,
    .footer-nav {
        display: none;
    }
    
    .footer-content {
        margin-bottom: 0;
    }
}
