@charset "UTF-8";

/********************************

    基本設定

********************************/

:root {
    /* 配色 */
    --base-color: #ffffff; /* 通常の背景の色 */
    --main-color: #f4f4f4; /* スキル部分の背景など。メインの色 */
    --sub-color: #a8d0e6; /* アイコンの色など、サブカラー */
    --accent-color: #f66c6c; /* 見出しの色など、アクセントカラー */
    --font-color1: #ffffff;  /* 背景に色がある場合の文字の色 */
    --font-color2: #24305e;  /* 背景が白い場合の文字の色 */
    /* 欧文デザインフォント */
    --design-font: "Amatic SC";
    /* 日本語フォント */
    --japanese-font: "Noto Sans JP";
    /* serifかsans-serifか */
    --fallback-font: sans-serif
}

html {
    font-family: var(--japanese-font), var(--fallback-font);
    font-weight: 300;
}

body {
    /*background: url("../images/main_sp.jpg") no-repeat center top; !* スマホ用メインの画像 *!
    background-size: cover;
    background-attachment: fixed;*/
}

.bg {
	position: absolute;
	width: 100%;
	height: 80vh;
	
	picture {
		display: block;
	}
	img {
		object-fit: cover;
		object-position: center bottom;
	}
}

p {
    font-size: clamp(0.875rem, 0.8028rem + 0.3082vw, 1rem);
    font-weight: 300;
    line-height: 1.5;
    color: var(--font-color2);
}

img {
    width: 100%;
}

/* サイトのタイトル */
h1 {
    color: var(--font-color2);
    font-family: var(--design-font), var(--japanese-font), var(--fallback-font); /* フォントを変更する */
}

h1 a {
    color: var(--font-color2);
    text-decoration: none;
}

/* 中見出し */
h2 {
    margin-bottom: 30px;
    text-align: center;
    font-size: 42px;
    color: var(--accent-color);
    font-family: var(--design-font), var(--japanese-font), var(--fallback-font); /* フォントを変更する */
}

/* 小見出し */
h3 {
    color: var(--font-color2);
    position: relative;
    margin-bottom: 1em;
    text-align: center;
    font-weight: normal;
}

h3::before {
    content: '';
    position: absolute;
    bottom: -15px;
    width: 60px;
    height: 5px;
    left: 50%;
    translate: -50% 0;
    background-color: var(--accent-color);
    border-radius: 2px;
}

ul, li {
    list-style-type: none;
}

footer {
	position: relative;
	z-index: 20;
    text-align: center;
    padding: 10px;
    background: var(--main-color);
    color: var(--font-color2);
}

/* ヘッダーのすりガラス部分 */
.header-inner {
    position: relative;
    margin: auto;
    background: rgba(255,255,255,0.2); /* ヘッダー背景の半透明 */
    -webkit-backdrop-filter: blur(5px); /* すりガラス効果 Safari用 */
    backdrop-filter: blur(5px); /* すりガラス効果 Chrome用 */
    border-radius: 15px;
}

/* トップへ戻るボタン */
.page-top {
    width: 50px;
    height: 50px;
    position: fixed;
    right: 20px;
	bottom: -50px;
    background: var(--sub-color);
    opacity: 0.6;
    border-radius: 50%;
}

.page-top a {
    position: relative;
    display: block;
    width: 50px;
    height: 50px;
    text-decoration: none;
}

.page-top a::before {
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    content: '\f102';
    font-size: 25px;
    color: var(--font-color1);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/********************************

    ホーム

********************************/

/*********** ヘッダー ***********/

.home {
    .header {
        position: relative;
        height: 80vh;
        display: grid;
        place-content: center;
    }

    .header-inner {
        padding: 10px;
        box-shadow: 0 32px 24px -32px hsl(200 50% 20% / 40%);
    }

    .title {
        padding: 60px 20px;
        border: 2px solid #ffffff;
        border-radius: 10px;

        & h1 {
            margin-bottom: 10px;
            font-size: 48px;
            text-align: center;
        }
    }

    .sub-title {
        color: var(--font-color2);
        font-size: 24px;
        text-align: center;
        font-family: var(--design-font), var(--japanese-font), var(--fallback-font); /* フォントを変更する */
    }

    /* スクロールボタン */

    .scroll {
        position: absolute;
        bottom: 20px;
        left: 50%;
        height: 40px;
        width: 40px;
        background: rgba(255,255,255,0.5); /* スクロールボタンの半透明 */
        -webkit-backdrop-filter: blur(5px); /* すりガラス効果 Safari用 */
        backdrop-filter: blur(5px); /* すりガラス効果 Chrome用 */
        transform: translateX(-50%);
        border-radius: 50%;
    }

    /* スクロールボタン矢印 */

    .scroll::before {
        font-family: 'Font Awesome 5 Free';
        font-weight: 900;
        content: '\f103';
        font-size: 20px;
        color: var(--font-color2);
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

    /* 波 */

    .wave {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        overflow: hidden;
        line-height: 0;
        transform: rotate(180deg) translateY(100%);
    }

    .wave svg {
        position: relative;
        display: block;
        width: calc(100% + 1.3px);
        height: 38px;
    }

    .wave .shape-fill {
        fill: #FFF
    }
}

/*********** 自己紹介 ***********/

.presentation {
	position: relative;
	z-index: 10;
    padding: 40px 20px;
    background: var(--base-color);
}

.presentation__text p:not(:last-of-type) {
    margin: 0 0 15px;
}

.presentation__text a {
    color: var(--accent-color);

    &:hover {
        text-decoration: underline;
    }
}

.portrait {
    display: block;
    width: 144px;
    height: 144px;
    border-radius: 50%;
    margin: 0 auto 30px;
}

/*********** メイン ***********/

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

/* スキル */

.skills {
    padding: 40px 20px;
    background: var(--main-color); /* スキルセクションの背景 */
}

.skills__inner {
    margin: auto;
    max-width: 1260px;
}

.skills-list__item {
    display: flex;
    align-items: center;
    margin-bottom: 30px;
    opacity: 0;
    transition: opacity 1.5s 0.2s;

    &.visible {
        opacity: 1;
    }
}

.skill-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--sub-color); /* スキルアイコンの背景色 */
    color: var(--font-color1); /* スキルアイコンの色 */
    height: 70px;
    width: 70px;
    font-size: 30px; /* スキルアイコンの大きさ */
    border-radius: 50%;
    margin-right: 20px;
}

.skill-text {
    flex: 1;
}

.skill-name {
    font-size: 32px;
    margin-bottom: 10px;
    font-family: var(--design-font), var(--japanese-font), var(--fallback-font); /* フォントを変更する */
}

/* 実績 */

.works {
    padding: 40px 20px;
    background: var(--base-color); /* 実績セクションの背景 */
}

/* ホームの実績一覧 */
.home .works__inner {
    max-width: 1266px;
    margin: auto;
}

.works-list {
    display: grid;
    gap: 30px 50px;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    margin-bottom: 80px;
}

.works-list__item {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 5;
    text-decoration: none;
    row-gap: 10px;
    margin-bottom: 40px;
    opacity: 0;
    transition: opacity 1.5s 0.2s;

    &.visible {
        opacity: 1;
    }

}

.work-image {
    padding: 4.5% 4px 4px;
    background: url(../images/template.svg) #d6d6d6 center top no-repeat; /* ブラウザのモックアップ */
    background-size: contain;
    border-radius: 5px 5px 0 0;
}

.work-name {
    color: var(--accent-color);
}

.work-date {
    font-size: 14px;
    text-align: right;
}

.works__sub-heading {
    margin-bottom: 48px;
    font-size: clamp(1.125rem, 0.7111rem + 1.2327vw, 1.5rem);
}

.categories-container {
    margin-bottom: 24px;
}

.categories {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: flex-start;
    font-size: clamp(0.75rem, 0.6778rem + 0.3082vw, 0.875rem);
}

.category-label {
    display: block;
    padding: 5px 12px;
    color: var(--accent-color);
    border: 1px solid var(--accent-color);
    border-radius: 3px;
}

.other-works {
    width: fit-content;
    margin: auto;
}

.other-works-list {
    display: grid;
    font-size: clamp(1rem, 0.9278rem + 0.3082vw, 1.125rem);
    gap: 12px;
    margin-bottom: 20px;
    color: var(--font-color2);
}

.other-works-list__item {
    position: relative;
    padding-left: 17px;

    &::before {
        content: "";
        position: absolute;
        top: 8px;
        left: 0;
        rotate: 50deg;
        width: 6px;
        height: 10px;
        border-right: 2px solid var(--accent-color);
        border-bottom: 2px solid var(--accent-color);
    }
}

/* コンタクト・SNS */

.contact {
    padding: 40px 20px;
    background: rgba(255,255,255,0.8);
    backdrop-filter: blur(5px);

    .custom-shape-divider-top-1705283703 {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        overflow: hidden;
        line-height: 0;
        transform: rotate(180deg);
    }

    .custom-shape-divider-top-1705283703 svg {
        position: relative;
        display: block;
        width: calc(100% + 1.3px);
        height: 32px;
    }

    .custom-shape-divider-top-1705283703 .shape-fill {
        fill: #ffffff;
    }

}

ul.contact-list {
    display: flex;
    width: 200px;
    margin: auto;
    justify-content: space-around;
}

ul.contact-list li a {
    font-size: 38px; /* SNSアイコンの大きさ */
    color: var(--sub-color); /* SNSアイコンの色 */
}

/********************************

	下層ページ

********************************/

/*********** ヘッダー ***********/

.page .header-inner {
    padding: 10px;
}

.page h1 {
    text-align: center;
    font-size: 24px;
}

/*********** 実績詳細 ***********/

.work-detail {
    padding: 40px 20px;
    background: var(--base-color);
}

.work-detail h2 {
    line-height: 1.2;
    font-family: var(--japanese-font), sans-serif; /* ここだけフォントをもとのまま */
    font-weight: 100;
    margin-bottom: 0;
    font-size: clamp(1.5rem, 1.1039rem + 1.6901vw, 2.625rem);
}


/* 実績上部 */

/* 実績一覧 */
.page .works__inner {
    max-width: 800px;
    margin: auto;
}

.pager {
    margin-bottom: 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.pager a {
    font-size: 30px;
    color: var(--sub-color)
}

.work-info {
    text-align: right;
    margin-bottom: 30px;
}

.work-main-image {
    margin-bottom: 30px;
    padding: 4.5% 4px 4px;
    background: url(../images/template.svg) #d6d6d6 center top no-repeat; /* ブラウザのモックアップ */
    background-size: contain;
    border-radius: 5px 5px 0 0;
}

.work-text {
    display: grid;
    gap: 24px;
    margin-bottom: 60px;
}

.link-buttons {
    gap: 10px;
    display: flex;
    justify-content: center;
}

.link-button {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 20px;
    background-color: var(--accent-color);
    color: var(--font-color1);
    border-radius: 5px;

    &::after {
        content: "";
        width: 10px;
        height: 10px;
        transition: .2s;
        border-top: 2px solid var(--font-color1);
        border-right: 2px solid var(--font-color1);
        margin-top: 1px;
        rotate: 45deg;
    }

}

/* PC画面のキャプチャ */
.work-images-pc li {
    margin: 0 0 4% 0;
    padding: 4.5% 4px 4px;
    background: url(../images/template.svg) #d6d6d6 center top no-repeat; /* ブラウザのモックアップ */
    background-size: contain;
    border-radius: 5px 5px 0 0;
}

/* スマホ画面のキャプチャ */
.work-images-sp {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;

    & li {
        margin: 0 0 4% 0;
        padding: 5% 10px 10px;
        width: 48%;
        background: url(../images/template_sp.svg) #f7f7f7 center top no-repeat; /* スマホのモックアップ */
        background-size: contain;
        border-radius: 15px 15px 5px 5px;

        & img{
            border: 2px solid #cccccc;
            border-radius: 5px;
        }
    }
}

/********************************

    タブレット向け

********************************/

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

    /*********** 共通 ***********/

    body {
        /*background: url("../images/main.jpg") no-repeat center; !* タブレット、PC用メインの画像 *!
        background-size: cover;
        background-attachment: fixed;*/
    }

    /*********** ホームのヘッダー ***********/


    .home {
        .header {
            padding: 20px;
            height: 90vh;
        }

        .title {
            padding: 80px 20px;
        }

        /* ホームのみヘッダーの飾り設定 */
        .header-inner {
	        
            &::before, &::after {
                height: 150px;
                width: 150px;
            }
        }
	    
	    .bg {
		    position: absolute;
		    height: 160vh;
		    img {
			    height: 100vh;
		    }
	    }
    }
    
    .main {

	    width: 100%;
    }

    /*********** 自己紹介 ***********/

    .presentation {
        padding: 120px 20px;
    }

    .presentation-inner {
        display: flex;
        align-items: center;
        max-width: 900px;
        margin: auto;
    }

    .portrait {
        margin: 0 50px 0 0;
    }

    /*********** 実績 ***********/

    .work-image {
        transition: 0.2s box-shadow;
    }

    .works-list__item:hover .work-image{
        box-shadow: 0 32px 24px -32px hsl(200 50% 20% / 40%);
    }

    /*********** コンタクト ***********/

    ul.contact-list li a:hover {
        opacity: 0.8;
    }

    /*********** 下層ページのヘッダー ***********/

    .page .header {
    }
}

/********************************

    PC向け

********************************/

@media screen and (min-width: 1024px) {

    /*********** 共通 ***********/

    h2 {
        font-size: 56px;
        margin-bottom: 60px;
        line-height: 1;
    }

    p {
        font-size: 18px;
    }

    /*********** ホームのヘッダー ***********/

    /* ホームのみヘッダーの飾り設定 */
    .home .header-inner::before,
    .home .header-inner::after {
        height: 200px;
        width: 200px;
    }

    .home .title h1 {
        font-size: 80px;
    }

    .home .sub-title {
        font-size: 36px;
    }

    .portrait {
        width: 230px;
        height: 230px;
    }

    /*********** スキル ***********/

    .skills {
        padding: 120px 20px 80px;
    }

    .skills-list {
        display: flex;
        flex-wrap: wrap;
        margin: 0;
        gap: 40px;
        align-items: flex-start;
    }

    .skills-list li {
        flex: 1;
    }

    .skill-icon {
        width: 90px;
        height: 90px;
        font-size: 38px;
    }

    .skill-name {
        font-size: 42px;
    }

    /*********** 実績 ***********/

    .works {
        padding: 120px 20px ;
    }

    /*********** コンタクト・SNS ***********/

    .contact {
        padding: 120px 20px ;
    }

    /*********** 下層ページのヘッダー ***********/

    .page h1 {
        font-size: 48px;
    }

    /*********** 下層ページのメイン ***********/


    /*********** 下層ページの実績詳細 ***********/

    .work-detail {
        padding: 80px 20px;
        margin: auto;
    }
}

