@font-face {
    font-family: 'notoBold';
    src: url('../font/NotoSansKR-Bold.ttf') format('truetype');
    font-weight: bold;
}

@font-face {
    font-family: 'notoLight';
    src: url('../font/NotoSansKR-Light.ttf') format('truetype');
    font-weight: lighter; /* Light font weight */
}

@font-face {
    font-family: 'noto';
    src: url('../font/NotoSansKR-Medium.ttf') format('truetype');
    font-weight: 100; /* Medium font weight */
}

@font-face {
    font-family: 'notoRegular';
    src: url('../font/NotoSansKR-Regular.ttf') format('truetype');
    font-weight: normal;
}

html, body, select, input, textarea, option{
    font-family: 'notoRegular';
    font-weight: normal; 
   
}

select:placeholder, textarea:placeholder{
	font-family: 'notoLight';
    font-weight: normal; 
}
html, body{
    margin: 0;
    padding: 0;
    background-color: rgb(12, 16, 20);
    scroll-behavior: smooth;
    overflow: hidden;
}
.imageModal {
    display: none;
    position: fixed;
    z-index: 9999;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.9);
}

.modalContent {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    max-width: 90%;
    max-height: 90%;
    object-fit: contain;
}

.closeModal {
    position: absolute;
    top: 8px;
    right: 15px;
    cursor: pointer;
    z-index: 10000;
    width: 40px;
}
.downModal{
    position: absolute;
    bottom: 12px;
    right: 4px;
    cursor: pointer;
    z-index: 10000;
    width: 40px;
}

.closeModal:hover {
    color: #bbb;
}
#contentWrap.lock-scroll {
    overflow-y: scroll !important; /* hidden ´ë½Å scroll À¯Áö */
    pointer-events: none; /* ½ºÅ©·Ñ ÀÌº¥Æ® ¸·±â */
    touch-action: none;
}

#contentWrap.lock-scroll .filterOverlay {
    pointer-events: auto; /* ÇÊÅÍ´Â Å¬¸¯ °¡´ÉÇÏ°Ô */
}

.header{
    height: 40px;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    background: black;
    display: flex;
    justify-content: center;
    align-items: center;
    will-change: transform;
    transform: translateZ(0);  /* GPU °¡¼Ó (±ôºýÀÓ ¹æÁö) */
    -webkit-transform: translateZ(0);  /* Safari */
}
.header .logo{
	width: 115px;
}
.header .search {
    position: absolute;
    right: 16px;      /* ¿ìÃø ¿©¹é */
    width: 25px;
    height: auto;
    cursor: pointer;
}
.header .back {
	position: absolute;
    left: 7px;
    width: 20px;
    height: auto;
    cursor: pointer;
}
.header .correction{
    position: absolute;
    right: 5px;
    height: auto;
    gap: 8px;
    cursor: pointer;
    display: flex;
}
.header .correction img{
	width: 25px;
	height: 25px;	
}
.footer{
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	width: 100%;
	height: 50px;
	display: flex;
	will-change: transform;
    justify-content: center;
    z-index: 1000;
    background: black;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);  
}
.footerWrap{
    max-width: 400px;
    width: calc(100% - 20px);
    padding: 10px;
    display: flex;
    justify-content: space-between;
}
.footer img{
    cursor: pointer;
    width: 30px;
    height: 30px;
}
.contentWrap{
	overflow-y: scroll;
    width: 100%;
    height: calc(100vh - 90px);
    position: relative;
    margin-top: 40px;
    margin-bottom: 50px;
    color: white;
    display: flex;
    flex-direction: column;
    align-items: center;
    scroll-behavior: smooth;
}
/* contentWrap ½ºÅ©·Ñ¹Ù ½ºÅ¸ÀÏ */
.contentWrap::-webkit-scrollbar {
    width: 6px;
}

.contentWrap::-webkit-scrollbar-track {
    background: rgb(12, 16, 20);
}

.contentWrap::-webkit-scrollbar-thumb {
    background-color: rgba(180, 180, 180, 0.25);
    border-radius: 10px;
}

.contentWrap::-webkit-scrollbar-thumb:hover {
    background-color: rgba(180, 180, 180, 0.45);
}
.filterOverlay {
  position: fixed;
  inset: 0;
  background: rgba(12, 16, 20, 0.55);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
  z-index: 100;
  overscroll-behavior: contain;
}

.filterPanel {
  position: fixed;
  inset: 0;
  background: rgb(12, 16, 20);
  transform: translateY(100%);
  transition: transform 0.4s ease;
  padding: 40px 10px 50px 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 25px;
}
.customSelect {
  position: relative;
  width: 150px;
  font-weight: bold;
  color: white;
  cursor: pointer;
  user-select: none;
}

.customSelect .selected {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 14px;
  padding: 5px;
  background: black;
  border-bottom: 2px solid white;
}

.customSelect .arrow {
  width: 0;
  height: 0;
  margin-left: 10px;

  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-top: 7px solid white;

  transition: transform 0.2s ease;
}

.customSelect.open .arrow {
  transform: rotate(180deg);
}

.customSelect .options {
  position: absolute;
  top: 100%;
  left: 0;

  width: 100%;
  background: black;
  border: 1px solid white;
  border-top: none;

  list-style: none;
  padding: 0;
  margin: 0;

  display: none;
  z-index: 1000;
}

.customSelect.open .options {
	display: block;
}

.customSelect .options li {
	padding: 10px 5px;
	font-size: 14px;
}

.customSelect .options li:hover {
  background: #333;
}
.dateWrap, .btnWrap, .selectWrap{
	width: 100%;
	max-width: 400px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    font-weight: bold;
}
.selectWrap > span{
	font-size: 16px;
    font-weight: bold;
    margin-right: 10px;
}
.btnWrap button{
	padding: 10px 30px;
    border-radius: 10px;
    font-weight: bold;
    cursor: pointer;
}
.filterPanel textarea{
	width: 80%;
    max-width: 300px;
    border: solid 2px white;
    background: black;
    color: white;
    font-weight: bold;
    padding: 3px;	
    font-size: 14px;
    border-radius: 5px;
    height: 100px;
}
.filterPanel #usrMsg{
	width: 70%;
}
.filterPanel input[type=text]{
	width: 80%;
    max-width: 300px;
    border: none;
    border-bottom: solid 2px white;
    background: black;
    color: white;
    font-weight: bold;
    padding: 5px;	
    font-size: 14px;
}
.filterPanel input[type=date]{
	width: 130px;
    border: none;
    border-bottom: solid 2px white;
    background: black;
    color: white;
    font-size: 14px;
    font-weight: bold;
    padding: 5px;
}
.filterPanel input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(1);
}

.filterPanel input[type="text"]::placeholder {
  color: white;
  opacity: 1; /* Firefox Èå·ÁÁö´Â °Å ¹æÁö */
}

/* Chrome, Safari */
.filterPanel input[type="text"]::-webkit-input-placeholder {
  color: white;
}

/* Firefox */
.filterPanel input[type="text"]::-moz-placeholder {
  color: white;
}

/* IE, Edge (±¸¹öÀü) */
.filterPanel input[type="text"]:-ms-input-placeholder {
  color: white;
}

/* È°¼ºÈ­ »óÅÂ */
.filterOverlay.active {
  opacity: 1;
  pointer-events: auto;
}

.filterOverlay.active .filterPanel {
  transform: translateY(0);
}
.album{
	width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    padding-top: 20px;
}
.boxWrap.ddayAlbum {
    background-position: center 89%;
    font-size: 25px;
    border: solid 3px hotpink;
    background-clip: padding-box;
    background-image: linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.35)), url(../img/ddayImg.jpg);
}
.boxWrap.ddayAlbum.birthDayAlbum{
    background-image: linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.35)), url(../img/birthDayImg.jpg);
}

/* °­·ÄÇÑ ¹ÝÂ¦ÀÌ´Â ±×¶óµð¾ðÆ® Å×µÎ¸® */
.boxWrap.ddayAlbum::before {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 15px;
    padding: 3px;
    background: linear-gradient(
        45deg,
        #ff1493,
        #ff0080,
        #ffb6c1,
        #fff,
        #ffb6c1,
        #ff0080,
        #ff1493
    );
    background-size: 300% 300%;
    -webkit-mask: 
        linear-gradient(#fff 0 0) content-box, 
        linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: gradient-rotate 2s linear infinite;
    z-index: -1;
}

/* »þÀÎ È¿°ú */
.boxWrap.ddayAlbum::after {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 15px;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.3),
        transparent
    );
    animation: shine 2s ease-in-out infinite;
    pointer-events: none;
}

@keyframes gradient-rotate {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

@keyframes shine {
    0% {
        transform: translateX(-100%) skewX(-15deg);
    }
    100% {
        transform: translateX(200%) skewX(-15deg);
    }
}
.boxWrap {
  position: relative;
  overflow: hidden;
  z-index: 1;
  text-align: center;
  width: 70%;
  max-width: 420px;
  height: 120px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 15px 30px;
  font-size: 19px;
  font-family: notoBold;
  border-radius: 15px;
  cursor: pointer;
  background-repeat: no-repeat;
  background-position: center 50%;
  background-size: cover;
}
.boxWrap.realAlbum{
	opacity: 0;
	transition: opacity 0.4s ease;
}
.boxWrap.skeleton {
  background-image: linear-gradient(
    90deg,
    rgba(40, 44, 52, 0.8) 25%,
    rgba(50, 54, 62, 0.9) 37%,
    rgba(40, 44, 52, 0.8) 63%
  );
  background-size: 400% 100%;
  animation: skeleton-loading 1.4s ease infinite;
  opacity: 1;
}
.boxWrap.loaded {
  opacity: 1;
  animation: none;
}
@keyframes skeleton-loading {
  0% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0 50%;
  }
}
/* skeleton shimmer */
.boxWrap.skeleton::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 15px;
  pointer-events: none;
  background: linear-gradient(
    110deg,
    rgba(255,255,255,0) 25%,
    rgba(255,255,255,0.05) 37%,
    rgba(255,255,255,0) 63%
  );
  animation: shimmer 1.3s infinite;
}

@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
.boxWrap .pinkText{
	font-family: notoBold;
    color: pink;
}
.boxWrap .ttl{
	font-size: 18px;
}
.boxWrap .insDt{
	margin-top: 35px;
}
.boxWrap .insDt, .boxWrap .location{
	font-size: 13px;
}
.scrollDim{
	height: 60px;
}
.albumInfoWrap{
	width: 90%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
}
.albumInfoWrap > div{
	width: 100%;
    text-align: center;
}
.albumInfoWrap .info{
	max-width: 600px;
	display: flex;
    justify-content: space-between;
}
.albumFileWrap{
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 15px;
    align-items: center;
}
.albumFile{
	width: 93%;
	max-width: 450px;
	padding-top: 20px;
}
.albumFile .fileWrap{
	width: 100%;
	border-radius: 15px;
}
.albumFile .fileWrap img, .albumFile .fileWrap video{
	width: 100%;
	height: auto;
	border-radius: 15px;
}
.blogBtnWrap{
    height: 35px;
    width: 100%;
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    border-bottom: solid 1px whitesmoke;
    padding-bottom: 20px;
}
.blogBtnWrap > img{
	width: 25px;
	height: 25px;	
	cursor: pointer;
}
.correctionDiv{
    width: 90%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;	
}
.correctionDiv.fileCorrectionDiv{
	flex-direction: column;
}
.correctionDiv .usrImg{
    width: 230px;
    height: auto;
    max-height: 306px;	
    border-radius: 15px;
}
.correctionDiv span{
	font-family: notoBold;
}
.fileAddWrap, .fileDeleteWrap{
    width: 100px;
    border: solid 2px white;
    display: flex;
    flex-direction: row;
    gap: 10px;
    padding: 10px 0;
    border-radius: 15px;
    cursor: pointer;
    font-size: 13px;
    justify-content: center;
    align-items: center;
}
.fileDeleteWrap{
	display: none;
	background: black;
    color: white;
    border: solid 2px white;
}
.fileAddWrap img{
	width: 20px;
	height: auto;
}
.uploadPreviewWrap {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(70px, 70px));
  gap: 8px;

  justify-content: center;

  width: 100%;
  max-height: 250px;
  overflow-y: auto;
}

.uploadPreviewWrap .previewItem {
  position: relative;
  width: 70px;
  height: 70px;

  border-radius: 8px;
  overflow: hidden;
  background: #f3f3f3;
}

.uploadPreviewWrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.uploadPreviewWrap .empty {
  grid-column: 1 / -1;
  text-align: center;
  color: #999;
}

.addInfoWrap{
	width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 30px;	
}
.addInfoWrap textarea{
	width: 80%;
    max-width: 300px;
    border: solid 2px white;
    background: black;
    color: white;
    font-weight: bold;
    padding: 3px;	
    font-size: 14px;
    border-radius: 5px;
    height: 100px;
}
.addInfoWrap input[type=text]{
	width: 80%;
    max-width: 300px;
    border: none;
    border-bottom: solid 2px white;
    background: black;
    color: white;
    font-weight: bold;
    padding: 5px;	
    font-size: 14px;
}
.usrInfoWrap{
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 90%;
    max-width: 700px;
    padding-top: 30px;	
}
.usrInfoWrap .heart{
	font-size: 30px;
}
.usrInfoWrap .infoWrap{
	display: flex;
    align-items: center;
    gap: 5px;
    flex-direction: column;
    height: 100%;
    justify-content: center;
}
.usrInfoWrap .infoWrap img{
    width: 130px;
    border-radius: 25%;
    max-height: 170px;
}
.usrInfoWrap .infoWrap .msgWrap{
	font-size: 10px;
    width: 140px;
    height: 30px;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.functionWrap{
    width: 100%;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 5px;
    padding: 10px 0;
    max-width: 1400px;
}
.functionWrap img{
    width: 30px;
    height: 30px;	
    cursor: pointer;
}
.favoriteWrap {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2px;
    max-width: 1000px;
}

.favoriteDiv {
    aspect-ratio: 1 / 1;
    overflow: hidden;
    position: relative;
}

.favoriteDiv > img:first-child,
.favoriteDiv > video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.favoriteIcon{
	cursor: pointer;
}
.favoriteDiv > img:last-child {
    position: absolute;
	bottom: 2px;
    right: 5px;
    width: 27px;
    height: 27px;
    z-index: 10;
}

.favoriteWrap .empty {
    grid-column: 1 / -1; /* ÀüÃ¼ ¿­À» Â÷Áö */
    aspect-ratio: auto; /* Á¤»ç°¢Çü ºñÀ² ÇØÁ¦ */
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 60px 20px;
    color: #999;
    font-size: 19px;
}