@charset "UTF-8";

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&family=Outfit:wght@100..900&family=Shippori+Mincho&display=swap');


@layer reset, base;

/* ------------------------------------------------------ */

/* リセット */

/* ------------------------------------------------------ */
@layer reset {

    *,
    *::before,
    *::after {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
        list-style: none;
    }

    a {
        color: inherit;
        text-decoration: inherit;
        -webkit-tap-highlight-color: transparent;
        -webkit-touch-callout: none;
    }

    img {
        width: 100%;
        height: auto;
    }

    svg,
    img {
        vertical-align: bottom;
    }

    button,
    input,
    textarea {
        margin: 0;
        font-family: inherit;
        font-size: 100%;
        font-weight: inherit;
        color: inherit;
        background-color: transparent;
        background-image: none;
    }

    button,
    input[type="submit"] {
        cursor: pointer;
        border: none;
        -webkit-tap-highlight-color: transparent;
        -webkit-touch-callout: none;
    }
}

/* ------------------------------------------------------ */

/* 基本スタイル */

/* ------------------------------------------------------ */
@layer base {
    :root {
        /* カラー */
        --black: #222;
        --white: #fff;
        --text: var(--black);
        --background: var(--white);
        --primary: #EF7A16;
        --attention: red;
        --gray: #efefef;
        --darkgray: #707070;
        --darkblue: #1E2D62;

        /* ページの左右の余白（画面幅1440pxで64px） */
        --page-padding: max(16px, 4.4vw);

        /* 欧文フォント */
        --latin-font: "Outfit", "Outfit Fallback", sans-serif;
    }

    /* 代替フォント */
    @font-face {
        font-family: "Outfit Fallback";
        src: local("Arial"), local("ArialMT");
        size-adjust: 99.8204%;
        ascent-override: 100.18%;
        descent-override: 26.0468%;
        line-gap-override: 0%;
    }

    /* スムーススクロール */
    :root {
        scroll-behavior: smooth;
    }

    /* ページ */
    body {
        font-family: "Noto Sans JP", sans-serif;
        font-optical-sizing: auto;
        font-size: clamp(15px, 1.4vw, 24px);
        /* 画面幅1440pxで20px */
        line-height: 1.8;
        color: var(--text);
        background-color: var(--background);
    }

    /* 画像 */
    img {
        object-fit: cover;
        border-radius: 8px;
    }
}

/* ------------------------------------------------------ */

/* ページヘッダー */

/* ------------------------------------------------------ */
body>header {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-auto-flow: column;
    align-items: center;
    padding-block: 1em;
    padding-inline: var(--page-padding);

    .logo img {
        width: 17em;
        height: auto;
    }

    @media (width >=768px) {
            .logo img {
        width: 20em;
        height: auto;
    }
        }
}

/* ------------------------------------------------------ */

/* ナビゲーションメニュー */

/* ------------------------------------------------------ */
.menu {
    font-family: var(--latin-font);
    font-weight: 700;

    ul {
        display: flex;
        gap: 1.5em;

        a {
            display: flex;
        }
    }
}

/* ------------------------------------------------------ */

/* ヒーロー */

/* ------------------------------------------------------ */
/* レイアウト */
.hero {
    display: block grid;
    grid-template: "heading" "cta" "photo";
    gap: 2em;
    justify-items: center;
    padding-block: 4em 0;
    padding-inline: var(--page-padding);
    text-align: center;

    > :is(h1, hgroup) {
        grid-area: heading;

        span {
            display: block;
        }
    }

    >.cta {
        grid-area: cta;
    }

    >img {
        grid-area: photo;
    }

    @media (width >=1192px) {
        grid-template: "heading cta" "photo photo";
        grid-template-columns: 1fr 17em;
        justify-items: stretch;
        align-items: end;
        text-align: left;
    }
}

/* スタイル */
.hero {
    hgroup {
        display: grid;

        p {
            grid-row: 1;
            font-weight: 700;
        }
    }

    h1 {
        font-family: "Shippori Mincho", serif;
        font-size: max(48px, 8.3vw);
        /* 画面幅1440pxで120px */
        font-weight: 900;
        line-height: 1;

        span {
            font-family: "Noto Sans JP", sans-serif;
            font-size: clamp(16px, 2.7vw, 40px);
            font-style: normal;
            font-weight: 700;
            line-height: 3;
        }
    }

    img {
        /* aspect-ratio: 3/4; */
        object-fit: cover;
        border-radius: 8px;

        @media (width >=768px) {
            aspect-ratio: 2/1;
        }
    }
}

/* ------------------------------------------------------ */

/* CTA */

/* ------------------------------------------------------ */
.cta {
    p {
        margin-block: 1em;
    }
}

.cta {
    p {
        font-size: 14px;
        font-weight: 400;
        line-height: 2;
        text-align: center;

        a {
            font-size: 32px;
            font-weight: 700;
            line-height: 1;
            letter-spacing: 0.18em;
        }

        span {
            display: block;
        }
    }
}

/* ------------------------------------------------------ */

/* ボタン */

/* ------------------------------------------------------ */
button,
input[type="submit"],
.primary-button {
    padding: 14px 24px;
    font-weight: bold;
    line-height: 1;
    border: solid 1px transparent;
    border-radius: 8px;
}

.primary-button {
    display: inline-block;
    width: 100%;
    color: var(--white);
    background-color: var(--primary);
    transition: background-color 0.5s;
    text-align: center;

    @media (prefers-reduced-motion) {
        transition: none;
    }

    @media (hover: hover) {
        &:hover {
            background-color: lch(from var(--primary) l c calc(h - 20));
        }
    }
}

.secondary-button {
    width: 100%;
    font-weight: normal;
    color: var(--darkgray);
    background-color: transparent;
    border-color: var(--darkgray);
}


/* ------------------------------------------------------ */

/* メッセージ */

/* ------------------------------------------------------ */
/* レイアウト */
.message {
    padding-block: 5em;
    text-align: center;
}

/* スタイル */
.message {
    font-size: clamp(16px, 2.7vw, 40px);
    /* 画面幅1440pxで40px */
    line-height: 1.5;
    line-break: strict;
}

/* ------------------------------------------------------ */

/* サービス */

/* ------------------------------------------------------ */
/* レイアウト */
.services {
    display: grid;
    gap: 5em;
    padding-block: 7em;
    padding-inline: var(--page-padding);

    >hgroup {
        display: grid;
        align-content: end;

        p {
            grid-row: 1;
        }
    }

    @media (width >=768px) {
        grid-template-columns: 1fr 4fr;

        >hgroup {
            align-self: start;
            position: sticky;
            top: 20px;

            writing-mode: vertical-rl;
        }
    }
}

/* スタイル */
.services {
    background-color: var(--gray);

    >hgroup {
        h2 {
            color: var(--darkblue);
            font-family: var(--latin-font);
            font-size: clamp(54px, 6.6vw, 96px);
            /* 画面幅1440pxで96px */

            line-height: 1;
            text-transform: uppercase;
        }

        p {
            color: var(--primary);
            font-size: 1.2em;
            font-weight: bold;
        }
    }
}

/* ------------------------------------------------------ */

/* カード */

/* ------------------------------------------------------ */
/* カード一覧 */
.cards {
    display: grid;
    gap: 4em;

    /* クエリコンテナを作成 */
    container-type: inline-size;
}

/* カードのレイアウト */
.card {
    display: grid;
    grid-template-areas: "heading" "photo" "text";
    gap: 1em 3em;

    >hgroup {
        grid-area: heading;
    }

    >img {
        grid-area: photo;
        height: 180px;
    }

    >p {
        grid-area: text;
    }

    /* クエリコンテナに合わせてレイアウトを変更 */

    @container (width >=580px) {
        grid-template-areas: "photo . " "photo heading" "photo text" "photo . ";
        grid-template-columns: 1fr 2fr;
        grid-template-rows: 20px auto auto 20px;

        >img {
            height: 0;
            min-height: 200px;
        }
    }
}

/* カードのスタイル */
.card {
    font-size: max(15px, 2cqw);
    /* クエリコンテナ幅1000pxで20px */

    hgroup {
        display: grid;
        gap: 0.25em;

        h3 {
            font-size: 2em;
            font-weight: 700;
            line-height: 1;
        }

        p {
            grid-row: 1;
            font-weight: 700;
        }
    }

    a {
        display: block;
        width: max-content;
        margin-left: auto;
        font-family: var(--latin-font);
        font-weight: 600;
    }
}

/* ------------------------------------------------------ */

/* ワークフロー */

/* ------------------------------------------------------ */
/* レイアウト */
.workflow {
    display: grid;
    gap: 5em;
    padding-block: 7em;
    padding-inline: var(--page-padding);

    >hgroup {
        display: grid;
        align-content: end;

        p {
            grid-row: 1;
        }
    }

    @media (width >=768px) {
        grid-template-columns: 1fr 4fr;

        >hgroup {
            align-self: start;
            position: sticky;
            top: 20px;

            writing-mode: vertical-rl;
        }
    }
}

/* スタイル */
.workflow {

    >hgroup {
        h2 {
            color: var(--darkblue);
            font-family: var(--latin-font);
            font-size: clamp(54px, 6.6vw, 96px);
            /* 画面幅1440pxで96px */

            line-height: 1;
            text-transform: uppercase;
        }

        p {
            color: var(--primary);
            font-size: 1.2em;
            font-weight: bold;
        }
    }
}

.flow {
    container-type: inline-size;
}

.flow-item {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin-top: 3em;

    @container (width >=580px) {
        flex-direction: row-reverse;
        justify-content: center;
        align-items: center;
        gap: 3em;

        .flow-txt {
            width: 590px;
        }

        .flow-img {
            width: 100%;
            max-width: 290px;
        }
    }
}

.flow-item:first-of-type {
    margin-top: 0;
}

.flow-list {
    margin-top: 1em;
}

.flow-list li {
    margin-left: 1em;
    list-style-type: disc;
}

/* ------------------------------------------------------ */

/* ワーク */

/* ------------------------------------------------------ */
/* レイアウト */
.work {
    display: grid;
    gap: 5em;
    padding-block: 7em;
    padding-inline: var(--page-padding);

    >hgroup {
        display: grid;
        align-content: end;

        p {
            grid-row: 1;
        }
    }

    >.cards {
        .card {
            p {
                padding-left: 3rem;
            }
        }
    }

    @media (width >=768px) {
        grid-template-columns: 1fr 4fr;

        >hgroup {
            align-self: start;
            position: sticky;
            top: 20px;

            writing-mode: vertical-rl;
        }

        >.cards {
        .card {
            p {
                padding-left: 0;
            }
        }
    }
    }
}

/* スタイル */
.work {
    background-color: var(--gray);

    >hgroup {
        h2 {
            color: var(--darkblue);
            font-family: var(--latin-font);
            font-size: clamp(54px, 6.6vw, 96px);
            /* 画面幅1440pxで96px */

            line-height: 1;
            text-transform: uppercase;
        }

        p {
            color: var(--primary);
            font-size: 1.2em;
            font-weight: bold;
        }
    }
}

/* ------------------------------------------------------ */

/* プロフィール */

/* ------------------------------------------------------ */
/* レイアウト */
.profile {
    display: grid;
    gap: 5em;
    padding-block: 7em;
    padding-inline: var(--page-padding);

    >hgroup {
        display: grid;
        align-content: end;

        p {
            grid-row: 1;
        }
    }

    @media (width >=768px) {
        grid-template-columns: 1fr 4fr;

        >hgroup {
            align-self: start;
            position: sticky;
            top: 20px;

            writing-mode: vertical-rl;
        }
    }
}

/* スタイル */
.profile {

    >hgroup {
        h2 {
            color: var(--darkblue);
            font-family: var(--latin-font);
            font-size: clamp(54px, 6.6vw, 96px);
            /* 画面幅1440pxで96px */

            line-height: 1;
            text-transform: uppercase;
        }

        p {
            color: var(--primary);
            font-size: 1.2em;
            font-weight: bold;
        }
    }
}

/* ------------------------------------------------------ */

/* リンク　（2色の下線を表示） */

/* ------------------------------------------------------ */

/* 1色目の表示範囲を管理（初期値20%） */
@property --bar {
    syntax: "<percentage>";
    inherits: true;
    initial-value: 20%;
}

/* 2色の設定 */
:root {
    /* 1色目 */
    --bar-color-primary: var(--primary);

    /* 2色目 */
    --bar-color-secondary: var(--darkgray);

    .menu {
        --bar-color-secondary: transparent;
        --bar: 0%;
    }
}

:is(.menu, #services) a {
    background-image: linear-gradient(to right, var(--bar-color-primary) var(--bar), var(--bar-color-secondary) var(--bar));
    background-repeat: no-repeat;
    background-position: bottom;
    background-size: auto 2px;
    transition: --bar 0.2s ease-in;

    @media (prefers-reduced-motion) {
        transition: none;
    }

    @media (hover: hover) {
        &:hover {
            --bar: 100%;
        }
    }
}

/* ------------------------------------------------------ */

/* ページのフッター */

/* ------------------------------------------------------ */
/* カラースキーム */
body>footer {
    color: var(--white);
    background-color: var(--darkblue);
}

/* レイアウト */
body>footer {
    display: grid;
    gap: 1.5em;
    justify-items: center;
    padding-block: 4em;
    padding-inline: var(--page-padding);
    position: relative;

    .logo img {
        width: 17em;
        height: auto;
    }

    .copyright {
        font-size: 10px;
    }

    .pagetop {
        position: absolute;
        right: 10px;
        top: -45px;
        width: 60px;
        height: 60px;

        a {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: var(--primary);
            -webkit-transition: background-color 0.3s;
            transition: background-color 0.3s;
            line-height: 1;
            font-size: 14px;
            font-weight: bold;
            text-align: center;
            margin: 0 auto;
            color: #fff;
        }

        a:hover,
        a:focus {
            background-color: var(--darkblue);
        }
    }

    @media (width >=768px) {
        grid-template-columns: 1fr auto;
        grid-auto-flow: column;
        justify-items: start;
        align-items: baseline;

        .logo {
            align-self: center;
        }
    }
}

/* スタイル */
body>footer {
    .logo {
        font-family: var(--latin-font);
        font-size: 1.2em;
        font-weight: 700;
    }

    .menu {
        font-weight: 500;
    }
}

/* ------------------------------------------------------ */

/* 会社概要 */

/* ------------------------------------------------------ */
.overview {
    display: flex;
    flex-wrap: wrap;
    max-width: 700px;
}

.overview dt {
    width: 200px;
    border-top: solid 1px var(--text);
    padding: 40px 0;
}

.overview dt:last-of-type {
    border-bottom: solid 1px var(--text);
}

.overview dd {
    width: calc(100% - 200px);
    border-top: solid 1px var(--text);
    padding: 40px 0;
    color: var(--darkgray);
    line-height: 1.8;
}

.overview dd:last-of-type {
    border-bottom: solid 1px var(--text);
}

@media screen and (max-width: 767px) {
    .overview dt {
        width: 100px;
        padding: 20px 0;
    }

    .overview dd {
        width: calc(100% - 100px);
        padding: 20px 0;
    }
}

/* ------------------------------------------------------ */

/* スマホメニュー */

/* ------------------------------------------------------ */
.btn-menu {
    position: fixed;
    right: 1rem;
    top: 1rem;
    z-index: 1;
    padding: 1rem;
    color: #fff;
    font-size: 14px;
    background: var(--primary);
    width: 80px;
    height: 80px;
    border-radius: 50%;
    cursor: pointer;
    transition: 0.4s;

    @media (width >=768px) {
        display: none;
    }
}

#menu-close {
    z-index: 3;
}

@media screen and (max-width: 767px) {
    .menu-container {
        position: fixed;
        top: 0;
        left: 0;
        z-index: 2;
        width: 100%;
        height: 100vh;
        background: #eee;

        display: flex;
        align-items: center;
        justify-content: center;
        opacity: 0;
        visibility: hidden;

        transition: .4s;
    }

    .menu ul {
        display: block;
        text-align: center;
    }

    .menu ul a {
        color: var(--primary);
        display: block;
        padding: 1.5rem;
        font-size: 2rem;
    }

    .panel-open {
        opacity: 1;
        visibility: visible;
    }
}