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

body {
    background-color: #050a0a;
    color: #fff;
    font-family: 'Noto Serif JP', serif;
    line-height: 1.8;
    overflow-x: hidden;
}

.background-wrap {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    z-index: 1;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #f1f1f1;
    transition: background 1.2s cubic-bezier(0.22, 1, 0.36, 1);
    overflow: hidden;
}

.background-wrap .logo {
    position: relative;
    z-index: 5;
    height: 100vh;
    width: auto;
    object-fit: contain;
    opacity: 1;
    transition: opacity 1.2s ease, filter 1.2s ease, transform 1.2s ease;

    -webkit-mask-image: linear-gradient(to right,
            transparent 0%,
            black 30%,
            black 70%,
            transparent 100%);
    mask-image: linear-gradient(to right,
            transparent 0%,
            black 30%,
            black 70%,
            transparent 100%);
    backface-visibility: hidden;
    transform: translateZ(0);
}

.is-scrolled .background-wrap {
    background-color: #050a0a;
}

.is-scrolled .background-wrap .logo {
    opacity: 0.4;
    filter: blur(5px) grayscale(10%);
}

.overlay-mist {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom,
            transparent 0%,
            rgba(5, 10, 10, 0.4) 50%,
            #0d1818 100%);
    z-index: 10;
}

main {
    position: relative;
    z-index: 10;
}

.fv {
    height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.fv-text h1 {
    font-family: 'Cinzel', serif;
    font-size: clamp(3rem, 10vw, 5rem);
    letter-spacing: 0.3em;
    font-weight: 400;
    margin-bottom: 0.5rem;
}

.fv-text p {
    font-family: 'Cinzel', serif;
    letter-spacing: 0.5em;
    font-size: 0.9rem;
    opacity: 0.8;
}

.section {
    min-height: auto;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: 25vh 20px 15vh;
}

.section.company {
    border-top: none;
}

.content-box {
    width: 700px;
    max-width: 100%;
    margin: 0 auto;
    padding: 60px 0;
    background: transparent;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    border-left: none;
    border-right: none;
}

.content-box p {
    font-size: 1.1rem;
    letter-spacing: 0.15em;
    line-height: 2.0;
    color: rgba(255, 255, 255, 0.9);
}

.section.service .content-box p {
    text-align: left;
    padding: 0 10px;
}

.company-info {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    padding: 0 10px;
}

.company-row {
    display: flex;
    padding-bottom: 0.8rem;
}

.company-label {
    width: 120px;
    font-size: 1.1rem;
    color: rgba(255, 255, 255, 0.7);
    letter-spacing: 0.2em;
}

.company-value {
    flex: 1;
    text-align: left;
    font-size: 1rem;
    letter-spacing: 0.1em;
}

h2 {
    font-family: 'Cinzel', serif;
    font-size: clamp(2rem, 5vw, 2.5rem);
    margin-bottom: 3rem;
    letter-spacing: 0.3em;
    text-align: center;
}

.forest-shadows {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    pointer-events: none;
}

.tree-branch {
    position: absolute;
    width: 150%;
    height: 150%;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-image: url('../img/ryanmcguire-forest-238379.jpg');

    filter: blur(20px) brightness(0.1) contrast(1.2);
    opacity: 0;
    transition: opacity 2s ease, filter 2s ease;
}

.is-scrolled .tree-branch {
    opacity: 1;
    filter: blur(12px) brightness(0.18) contrast(1.1);
}

.is-scrolled .background-wrap {
    background-color: #102020;
}

.branch-1 {
    top: -25%;
    left: -25%;
    transform: rotate(-5deg);
    animation: wind-sway 25s infinite ease-in-out;
}

.branch-2 {
    bottom: -25%;
    right: -25%;
    transform: rotate(175deg) scaleX(-1);
    animation: wind-sway 30s infinite ease-in-out reverse;
}





@media screen and (max-width: 768px) {

    .background-wrap .logo {
        height: 100vh;  
        width: auto; 
        max-width: none; 
        object-fit: cover;

        -webkit-mask-image: linear-gradient(to right,
                transparent 0%,
                black 15%, 
                black 85%,
                transparent 100%);
        mask-image: linear-gradient(to right,
                transparent 0%,
                black 15%,
                black 85%,
                transparent 100%);
    }

    .is-scrolled .background-wrap .logo {
        opacity: 0.5; 
        filter: blur(4px) grayscale(10%);
    }

    .section.service .content-box p {
        text-align: center;
        padding: 0 15px;
        word-break: break-all; 
        font-size: 0.9rem;
    }

    .company-info {
        align-items: center;
        text-align: center;
        font-size: 0.9rem;
    }

    .company-row {
        flex-direction: column;
        align-items: center;
        width: 100%;
        padding-bottom: 1.5rem;
    }

    .company-label {
        width: 100%;
        text-align: center;
        margin-bottom: 0.5rem;
        font-size: 0.9rem;
    }

    .company-value {
        width: 100%;
        text-align: center;
        font-size: 1.1rem;
    }

    .section {
        padding: 15vh 20px 10vh;
    }

    .content-box {
        width: 100%;
        padding: 40px 0;
    }

    h2 {
        font-size: 1.5rem;
        margin-bottom: 1.5rem;
    }

    .tree-branch {
        width: 250%; 
        height: 120%;
    }
}

@media screen and (max-width: 480px) {
    .fv-text h1 {
        font-size: 2.8rem;
        letter-spacing: 0.2em;
    }
}