diff --git a/apps/cs/app/auth/login/page.tsx b/apps/cs/app/auth/login/page.tsx
new file mode 100644
index 000000000..8f9e6adc6
--- /dev/null
+++ b/apps/cs/app/auth/login/page.tsx
@@ -0,0 +1,2 @@
+import { LoginPage } from "@/pages/auth/login";
+export default LoginPage;
diff --git a/apps/cs/public/images/bg_login.jpg b/apps/cs/public/images/bg_login.jpg
new file mode 100755
index 000000000..b7793d16a
Binary files /dev/null and b/apps/cs/public/images/bg_login.jpg differ
diff --git a/apps/cs/src/pages/auth/login/index.ts b/apps/cs/src/pages/auth/login/index.ts
new file mode 100644
index 000000000..2093c3d8d
--- /dev/null
+++ b/apps/cs/src/pages/auth/login/index.ts
@@ -0,0 +1 @@
+export { LoginPage } from "./ui/login-page";
diff --git a/apps/cs/src/pages/auth/login/ui/login-page.tsx b/apps/cs/src/pages/auth/login/ui/login-page.tsx
new file mode 100644
index 000000000..7b09aa6ee
--- /dev/null
+++ b/apps/cs/src/pages/auth/login/ui/login-page.tsx
@@ -0,0 +1,111 @@
+import Image from "next/image";
+import { images } from "@common/assets";
+
+import "./login.css";
+
+function LoginPage() {
+ return (
+
+
+
+
+ 하수도정보시스템
+
+ CMS 통합관리시스템
+
+
하수도정보시스템 CMS 통합관리시스템에 오신 것을 환영합니다.
+
+
+
+
+
+
+
+ );
+}
+
+export { LoginPage };
diff --git a/apps/cs/src/pages/auth/login/ui/login.css b/apps/cs/src/pages/auth/login/ui/login.css
new file mode 100755
index 000000000..831cc13a9
--- /dev/null
+++ b/apps/cs/src/pages/auth/login/ui/login.css
@@ -0,0 +1,311 @@
+/**
+* OLYM Cascading Style Sheets
+* File Name : login.css
+* Description : 로그인 스타일시트
+* Author : Web business Team / Choi Hyun Mi
+* Email : desingtj@olym.co.kr
+* Date : 2023.07.20
+* Update : 2023.07.26
+* Copyright(c) 2023 OLYM Communications. All Rights Reserved.
+*/
+html,
+body {
+ background: #fff;
+}
+.fx {
+ display: flex;
+ -ms-display: flex;
+ -webkit-display: flex;
+ box-sizing: border-box;
+}
+.login {
+ width: 100%;
+ height: 100vh;
+}
+.login .left_box {
+ width: 100%;
+ background: url(../../../../../public/images/bg_login.jpg) no-repeat
+ center/cover;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 7% 5% 5% 5%;
+}
+.login .left_box .text h1 {
+ font-size: 53px;
+ color: #fff;
+}
+.login .left_box .text h1 span {
+ font-weight: 800;
+}
+.login .left_box .text p {
+ margin-top: 40px;
+ font-size: 18px;
+ color: #fff;
+}
+.login .login_box {
+ width: 100%;
+ flex-direction: column;
+ justify-content: center;
+ padding: 4% 12% 4% 6%;
+}
+.login .login_box > ul {
+ flex-direction: column;
+ gap: 40px;
+}
+.login .login_box > ul > li h2 {
+ font-size: 22px;
+ font-weight: 600;
+ color: #2640a5;
+ margin-bottom: 14px;
+}
+.login .login_box > ul > li .input_st {
+ position: relative;
+}
+.login .login_box > ul > li .input_st .diveicon {
+ position: absolute;
+ top: 50%;
+ left: 28px;
+ transform: translateY(-50%);
+ font-family: "Xeicon";
+ font-size: 25px;
+ color: #003288;
+}
+.login .login_box > ul > li input {
+ width: 100%;
+ padding: 20px 20px 20px 70px;
+ background: #f7f7f7;
+ box-sizing: border-box;
+ border: none;
+ border-radius: 5px;
+ font-size: 18px;
+ font-weight: 700;
+ color: #000;
+ height: auto;
+}
+.login .login_box > ul > li input:focus {
+ outline: 1px solid #3c5fe5;
+}
+.login .login_box > ul > li input::placeholder {
+ color: #afabab;
+ font-weight: 500;
+}
+.login .login_box .bottom_box {
+ justify-content: space-between;
+ gap: 20px;
+ padding: 50px 0 45px 0;
+}
+.login .login_box .bottom_box .checks {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+.login .login_box .bottom_box .checks input[type="checkbox"] {
+ width: 18px;
+ height: 18px;
+}
+.login .login_box .bottom_box .checks label {
+ font-size: 14px;
+}
+.login .login_box .bottom_box .pw_message {
+ align-items: center;
+ gap: 5px;
+ color: #636363;
+ font-weight: 500;
+ border-bottom: 1px solid #ccc;
+ padding-bottom: 5px;
+}
+.login .login_box .bottom_box .pw_message i {
+ color: #327af5;
+ font-size: 20px;
+}
+.login .login_box .login_btn {
+ position: relative;
+ border-radius: 5px;
+ padding: 24px 15px;
+ background: linear-gradient(
+ to left,
+ #1d3969 0%,
+ #264078 10%,
+ #172558 40%,
+ #162254 50%,
+ #111c43 60%,
+ #111c42 100%
+ );
+ overflow: hidden;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+ color: #fff;
+ cursor: pointer;
+}
+.login .login_box .login_btn span {
+ font-family: "Montserrat";
+ font-size: 19px;
+ font-weight: 700;
+ position: relative;
+}
+.login .login_box .login_btn i {
+ font-size: 22px;
+ transform: translateY(-2px);
+}
+.login .login_box .login_btn:before {
+ display: block;
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ background: linear-gradient(
+ to right,
+ #1d3969 0%,
+ #264078 10%,
+ #172558 40%,
+ #162254 50%,
+ #111c43 60%,
+ #111c42 100%
+ );
+ transition: opacity 0.5s;
+}
+.login .login_box .login_btn:hover::before {
+ opacity: 1;
+}
+.login .footer .copy {
+ margin-top: 36px;
+ justify-content: space-between;
+ align-items: center;
+ gap: 3%;
+}
+.login .footer .copy p {
+ font-size: 13px;
+ color: #d4d4d4;
+ width: 44%;
+ text-align: center;
+}
+.login .footer .copy::before,
+.login .login_box .copy::after {
+ content: "";
+ width: 20%;
+ height: 1px;
+ background: #d4d4d4;
+}
+.login .footer .fot_btn {
+ gap: 20px;
+ margin: 30px 0 10px 0;
+}
+.login .footer .fot_btn a {
+ color: #333;
+ font-weight: 700;
+ font-size: 13px;
+}
+.login .footer .fot_btn a:hover {
+ color: #003288;
+}
+.login .footer .addr {
+ color: #666;
+ font-size: 13px;
+ gap: 3px 20px;
+ flex-wrap: wrap;
+}
+/* 비밀번호 변경 팝업창 */
+.login .modal .modal_container {
+ width: 750px;
+}
+.login .pw_desc {
+ padding: 10px 10px 30px 10px;
+ color: #666;
+}
+.login .pw_desc p {
+ font-size: 1.25rem;
+ color: #000;
+ font-weight: 700;
+ margin-bottom: 10px;
+}
+.login .pw_desc span {
+ color: #f60;
+ font-weight: 700;
+}
+.login .modal .form_write {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ padding: 20px 50px;
+}
+@media (max-width: 1024px) {
+ .login {
+ flex-direction: column;
+ height: auto;
+ }
+ .login .left_box {
+ padding: 30px;
+ flex-direction: column-reverse;
+ gap: 20px;
+ }
+ .login .left_box .text h1 {
+ font-size: 30px;
+ line-height: 1.2em;
+ }
+ .login .left_box .text p {
+ margin-top: 20px;
+ font-size: 14px;
+ }
+ .login .left_box .img img {
+ height: 40px;
+ }
+ .login .login_box {
+ padding: 30px;
+ }
+ .login .login_box > ul {
+ gap: 20px;
+ }
+ .login .login_box > ul > li h2 {
+ margin-bottom: 7px;
+ }
+ .login .login_box > ul > li .input_st::after {
+ left: 15px;
+ font-size: 20px;
+ }
+ .login .login_box > ul > li input {
+ padding: 15px 10px 15px 50px;
+ font-size: 16px;
+ }
+ .login .login_box .bottom_box {
+ flex-direction: column;
+ align-items: flex-start;
+ padding: 30px 0;
+ }
+ .login .login_box .bottom_box .id_save label {
+ font-size: 14px;
+ }
+ .login .login_box .login_btn {
+ padding: 15px;
+ }
+ .login .login_box .login_btn span {
+ font-size: 16px;
+ }
+ .login .login_box .login_btn i {
+ font-size: 18px;
+ transform: translateY(-1px);
+ }
+ .login .login_box .copy p {
+ width: 100%;
+ }
+ .login .login_box .copy::before,
+ .login .login_box .copy::after {
+ display: none;
+ }
+ .login .footer .addr {
+ font-size: 11px;
+ gap: 3px 10px;
+ }
+ .login .modal .modal_container {
+ width: 90%;
+ }
+ .login .pw_desc {
+ padding: 0 0 20px 0;
+ }
+ .login .modal .form_write {
+ padding: 10px;
+ }
+}
+/* // login */