@charset "UTF-8";
/*--------------------------------
setting
----------------------------------*/
body {
    color: #333331;
    font-family: "Montserrat","Zen Kaku Gothic New", sans-serif;
    font-weight: 500;
    font-style: normal;
    line-height: 1.875;
    background: #3F672A;
}
p,h1,h2,h3,h4,h5,h6{
    margin: 0;
}

a{
    text-decoration: none;
}
picture{
    display: block;
}
/* text */


/* laout */
:root{
    --content:min(900px,calc(100vw - 10vw));
    --blank:calc(100vw - var(--content));
    --side:calc(var(--blank) / 2);
}
.aligndefa{
    width:var(--content);
    margin-left: var(--side) !important;
    margin-right: var(--side) !important;
}
.alignfull{
    width: 100vw;
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
}

/*--------------------------------
load
----------------------------------*/
:root{
    --bgHeihgt:180px;
}
/* 背景レイヤー */
#background {
    position: fixed;
    width: 100%;
    height: 100%;
    background: #00000041;
    z-index: 0;
    transition: background-color 0.8s cubic-bezier(0.660, 0.005, 0.490, 1.005);
    filter: blur(6px);
    opacity: 0;
}
#background.animeOn {
    animation: bgFade 2s forwards ease-in-out;
}
#background .bg{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    mix-blend-mode: overlay;
}
#background .bg img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}
@keyframes bgFade {
    0% {
        filter: blur(6px);
        opacity: 0;
    }
    100% {
        filter: blur(0);
        opacity: 1;
    }
}

/* ローディングロゴ */
.loading-logo {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -70%);
    width: min(80%, 600px);
}
.loading-logo svg{
    width: 100%;
}
#mask-line {
    stroke-dasharray:1320px;
    opacity: 0;
}
#mask-line.animeOn {
    animation:h-written 2s forwards cubic-bezier(1.000, 0.175, 0.550, 0.990);
    opacity: 1;
}
@keyframes h-written {
    0% {
        stroke-dashoffset:1320px;
    }
    100% {
        stroke-dashoffset:0px;
    }
}
.loading-logo #logo {
    mask:url(#mask);
}

/* メインコンテンツ */
#main {
  margin-top: var(--bgHeihgt);
  position: relative;
  z-index: 10;
  transform: translateY(100vh);
}
#mainInner{
  background: #fff;
  padding-left: var(--side);
  padding-right: var(--side);
  padding-bottom: 120px;
}
#mainInner > * {
    opacity: 0;
    filter: blur(5px);
    transform: translateY(80px)
}

/* 表示時の状態 */
#background.load {
  background-color: transparent;
}

#main.show {
    animation: wave;
    animation-fill-mode: forwards;
    animation-duration: 1s;
    animation-timing-function: cubic-bezier(0.660, 0.005, 0.490, 1.005);
}
@keyframes wave{
    0%{
        transform: translateY(100vh);
    }
    85%{
            transform: translateY(-20px);
    }
    100%{
            transform: translateY(0);
    }
}
#main.show #mainInner > * {
    animation: mainshow;
    animation-fill-mode: forwards;
    animation-delay: 1s;
    animation-duration: 0.6s;
    animation-timing-function: ease-out;
}
@keyframes mainshow{
    0%{
        opacity: 0;
        filter: blur(5px);
        transform: translateY(80px)
    }
    100%{
        opacity: 1;
        filter: blur(0);
        transform: translateY(0)
    }
}

/*--------------------------------
about
----------------------------------*/
.wave{
    display: flex;
    margin-bottom: -1px;
}
#about {
    display: flex;
    justify-content: center;
    gap: 20px 50px;
}
#about .img{
    width: min(343px,40%);
    flex-shrink: 0;
    position: relative;
}
#about .img .e01{
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
}
#about .txts{
    width: min(100%,500px);
}
#about .txts h1{
    display: flex;
    flex-direction: column;
    font-size: var(--f40px);
    line-height: 1.2;
    gap: 10px;
    padding-top: 30px;
}
#about .txts h1 .en{
    font-size: var(--f20px);
}
#about .txts .desc{
    font-size: var(--f18px);
}
#about .txts .links {
    display: flex;
    gap: 1em;
}
#about .txts .links a:hover{
    color: #FFC800;
}

/*--------------------------------
nav
----------------------------------*/
.hasEn::after{
    content: attr(data-en);
    display: block;
    color: #CCCAC0;
}

#nav {
    display: flex;
    justify-content: center;
    text-align: center;
    line-height: 1.2;
}
#nav .nav__item{
    width: min(33%,290px);
    position: relative;
}
#nav .nav__item::after{
    content: "";
    display: block;
    background: currentColor;
    width: 1px;
    height: 35px;
    transform: rotate(20deg) translateY(-50%);
    border-radius: 2px;
    position: absolute;
    top: 50%;
    right: 0;
}
#nav .nav__item:last-child::after{
    content: none;
}
#nav a.hasEn::after{
    font-size: var(--f14px);
}
#nav a.hasEn:hover::after{
    color: #FFC800;
}

/*--------------------------------
archive
----------------------------------*/
h2.ttl{
    font-size: var(--f32px);
    line-height: 1.2;
    font-weight: 500;
}
h2.ttl::after{
    font-size: var(--f20px);
}

#archive {
    display: flex;
    gap: 20px 6%;
    border-top: solid 1px currentColor;
    border-bottom: solid 1px currentColor;
}
#archive .ttl{
    flex-shrink: 0;
    padding: 1.5rem 0;
}
#archive .list{
    display: flex;
    flex-direction: column;
    flex-basis: 0;
    flex-grow: 1;
    line-height: 1.2;
    height: 13em;
    overflow-y: auto;
}
#archive .list__item {
    padding: 2em 0;
    border-bottom: solid 1px #CCCAC0;
    display: flex;
    gap: 10px;
}
#archive .list__item:last-child {
    border-bottom: none;
}
#archive .list__item a{
    text-decoration: underline;
}

/*--------------------------------
works
----------------------------------*/
#filter {
    display: flex;
    justify-content: flex-end;
    gap: 0 1em;
    flex-wrap: wrap;
}
#filter label {
    display: flex;
    align-items: center;
}
#filter input[type='checkbox']::after{
    left: 0.4em;
    top: 0.2em;
    width: 0.4em;
    height: 0.6em;
    border: solid #ffffff;
    border-width: 0 2px 2px 0;
}
#filter input[type='checkbox'] {
    border: none;
    width: 1.2em;
    background: #F5F4EE;
    border-radius: 3em;
}
#filter input[type='checkbox']:checked{
    background: #FFC800;
}


#worklist {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    grid-auto-flow: dense;
}
.worklist__item{
    width: 100%;
    aspect-ratio: 1/1;
    cursor: pointer;
}
.worklist__item .img{
    width: 100%;
    height: 100%;
}
.worklist__item img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.worklist__item:nth-child(odd) .img{
    clip-path: url(#mask01);
}
.worklist__item:nth-child(even) .img{
    clip-path: url(#mask02);
}
.worklist__item:hover .img{
    background: #000;
}
.worklist__item:hover .img img{
    opacity: 0.7;
}

/* 詳細 */
#detailArea {
    width: 100vw;
    margin: 30px 0;
    margin-right: calc(50% - 50vw);
    margin-left: calc(50% - 50vw);
    background: #F5F4EE;
    grid-column: 1 / -1;
    position: relative;
}
#detailArea .btnarea {
    display: flex;
    justify-content: center;
    margin-right: var(--side);
    margin-left: var(--side);
    transition: all .2s;
}
#detailArea .close-btn {
    position: absolute;
    top: 42px;
    right: 30px;
    display: flex;
    flex-direction: column;
    font-size: var(--f12px);
    gap: 10px;
    color: #B2B1A8;
    cursor: pointer;
}
#detailArea .point{
    width: 24px;
    height: 12px;
    clip-path: circle(62.7% at 50% 0);
    background: #4C4C4C;
    margin-bottom: 30px;
}
#detailArea.left .point {
    --btn-x: calc((var(--content) / 3)* -1);
}
#detailArea.center .point {
    --btn-x: 0;
}
#detailArea.right .point {
    --btn-x: calc(var(--content) / 3);
}
#detailArea .point {
    transform: translateX(var(--btn-x)) scale(var(--btn-scale, 1));
    opacity: 1;
    transition: transform 0.3s ease, opacity 0.3s ease;
    transform-origin: top;
}
#detailArea .point.animate-out {
    transform: translateX(var(--btn-x)) scale(0.1);
    opacity: 0;
    transition: transform 0.2s ease-in, opacity 0.2s ease-in;
}
#detailArea .point.animate-in {
    transform: translateX(var(--btn-x)) scale(1.05);
    opacity: 1;
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
}
#detailArea .point.animate-in.animated-done {
    transform: translateX(var(--btn-x)) scale(1);
    opacity: 1;
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
}

.work-detail-inner .images {
    display: flex;
    justify-content: center;
}
.work-detail-inner .txts {
    margin: 50px 2em;
}
.work-detail-inner .desc::after {
    content: "";
    display: block;
    width: 35px;
    height: 1px;
    background: #CCCAC0;
    margin: 40px 0;
}
.work-detail-inner .desc a{
    text-decoration: underline;
}
.work-detail-inner .desc a:hover {
    color: #FFC800;
}
/*--------------------------------
contact
----------------------------------*/
.e02 {
    display: flex;
    justify-content: flex-end;
    margin-bottom: -50px;
}
.formitem {
    margin: 1rem 0;
}
input{
    width: min(100%, 600px);
}
input[type="text"], input[type="number"], input[type="email"],textarea{
    background: #F5F4EE;
    border: none;
    border-radius: 5px;
}
textarea {
    min-height: 20em;
}
input::placeholder,textarea::placeholder{
    color: #B2B1A8;
}
#contact button {
    background: #4C4B49;
    color: #fff;
    padding: 0.5em 4em;
    border-radius: 5px;
    cursor: pointer;
}
#contact button:hover{
     background: #B2B1A8;
}

#result:not(:empty) {
    margin: 1rem 0;
    background: #fafafa;
    border-radius: 5px;
    padding: 1rem;
    text-align: center;
    color: #b2b1a8;
}
#result .contact_result_img{
    width: 120px;
    margin: 1rem auto;
}
/*--------------------------------
footer
----------------------------------*/
footer {
    position: relative;
    text-align: center;
    font-size: var(--f12px);
    color: #fff;
    margin: 2em 0;
}

/*--------------------------------
----------------------------------
breakpoint
----------------------------------
----------------------------------*/
@media(max-width:1024px){


}
@media(max-width:768px){
    #about {
        flex-direction: column;
        align-items: center;
    }
    #about .img {
        width: min(200px, 80%);
        margin-top: -11.38vw;
        align-self: flex-end;
    }
    #about .img .e01 {
        position: relative;
        clip-path: inset(0 0 6% 0);
    }
    #about .txts {
        margin-top: -190px;
    }
    #about .txts h1 {
        font-size: var(--f30px);
    }
    #about .txts h1 .en {
        font-size: var(--f14px);
    }
    #about .txts .desc {
        font-size: var(--f14px);
    }

    #archive {
        display: block;
        border-top: none;
    }
    #archive .list {
        border-top: solid 1px currentColor;
        font-size: var(--f14px);
    }
    #archive .list__item {
        padding: 1.8em 0;
    }
}
@media(max-width:540px){
    :root{
        --bgHeihgt:80px;
    } 
    h2.ttl {
        font-size: var(--f26px);
    }
    h2.ttl::after {
        font-size: var(--f18px);
    }
    #about .txts {
        margin-top: -120px;
    }
    #nav .nav__item {
        font-size: var(--f12px);
    }
    #nav a.hasEn::after {
        font-size: var(--f10px);
    }
    #filter {
        font-size: var(--f14px);
        margin: 20px 0;
        gap: 0;
    }
    #worklist {
        gap: 5px;
        grid-template-columns: repeat(2, 1fr);
    }
    #detailArea .close-btn {
        top: 20px;
        right: 10px;
    }
    #detailArea .close-btn .text {
        display: none;
    }
    #detailArea.left .point {
    --btn-x: calc((var(--content) / 4)* -1);
    }
    #detailArea.right .point {
        --btn-x: calc(var(--content) / 4);
    }
    .e02 {
        width: 30%;
        margin: 0 0 -50px auto;
    }
}

