/* 여기에 light css 작성 */ .opacity-50 { opacity: 0.5; } /* board */ .board-content img { max-width: 100% !important; width: 100% !important; height: auto !important; display: block; object-fit: contain; } .board-content table { max-width: 100%; overflow-x: auto; display: block; } .btn.big { width: 70px; height: 70px; font-size: 18px; } @keyframes new { 0% { background-color: #ffcc00; } 50% { background-color: red; } 100% { background-color: #ffcc00; } } .box-new { animation: new 1s infinite; /* 1초마다 반복 */ } /* board end */ /* Qeditor */ .ql-editor { min-height: 300px; font-family: 'Nanum Gothic', sans-serif; } /* Qeditor end */ /* 에러페이지 */ /* 전체 화면을 덮는 스타일 */ .error-page { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: #fff; display: flex; justify-content: center; align-items: center; text-align: center; color: #000; font-family: 'Poppins', sans-serif; z-index: 9999 !important; } /* 오류 메시지 컨텐츠 */ .error-content { text-align: center; animation: fadeIn 0.8s ease-in-out; } /* 에러 이미지 */ .error-image { width: 280px; /* 이미지 크기 */ margin-bottom: 20px; } /* 에러 코드 스타일 */ .error-content h1 { font-size: 6rem; font-weight: bold; color: #ff8c00; /* 오렌지 */ text-shadow: 2px 2px 8px rgba(255, 140, 0, 0.3); margin-bottom: 60px; } /* 홈으로 돌아가기 버튼 */ .home-btn { display: inline-block; padding: 10px 28px; font-size: 1rem; font-weight: bold; text-decoration: none; color: #fff; background: rgba(105, 108, 255, 0.9); border-radius: 30px; transition: 0.3s ease-in-out; box-shadow: 0 4px 15px rgba(105, 108, 255, 0.5); } /* 버튼 호버 효과 */ .home-btn:hover { background: linear-gradient(90deg, orange, #ff8c00); box-shadow: 0 0 20px rgba(255, 140, 0, 1); transform: scale(1.05); color: #fff; } /* 페이드 인 애니메이션 */ @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* 휴가 */ .fc-daygrid-event { pointer-events: none !important; } /* 이벤트 선 없게 */ .fc-event { border: none; } /* 오전 반차 그래프 (왼쪽 절반) */ .fc-daygrid-event.half-day-am { width: 50% !important; height: 8px !important; border-radius: 2px !important; font-size: 0px !important; margin-left: -0.5% !important; } /* 오후 반차 그래프 (오른쪽 절반) */ .fc-daygrid-event.half-day-pm { width: 50% !important; height: 8px !important; margin-left: auto !important; border-radius: 2px !important; font-size: 0px !important; margin-right: -0.5% !important; } /* 연차 그래프 (풀) */ .fc-daygrid-event.full-day { width: 100% !important; height: 8px !important; margin-left: auto !important; border-radius: 2px !important; font-size: 0px !important; } /* 공휴일,일요일 색상 */ .fc-day-sun .fc-daygrid-day-number, .fc-col-header-cell:first-child .fc-col-header-cell-cushion { color: #ff4500 !important; } /* 토요일 색상 */ .fc-day-sat .fc-daygrid-day-number, .fc-col-header-cell:last-child .fc-col-header-cell-cushion { color: #6076e0 !important; } /* 캘린더 날짜 왼쪽 상단 위치하게 */ .fc-daygrid-day-number { margin-right: auto; } /* 데이트피커 뾰족없게 */ .flatpickr-calendar:before, .flatpickr-calendar:after { display: none !important; } /* 기본 스타일은 그대로 두고, 데이트피커 인풋의 추가 스타일 정의 */ .fc-toolbar-title { cursor: pointer; } /* 클릭 가능한 날짜 */ .fc-daygrid-day.clickable { cursor: pointer; transition: background-color 0.2s ease-in-out; } /* 마우스를 올렸을 때 효과 */ .fc-daygrid-day.clickable:hover { background-color: rgba(0, 0, 0, 0.05); /* 연한 배경 효과 */ } /* 주말 (토요일, 일요일) 및 공휴일 */ .fc-day-sat-sun { cursor: not-allowed !important; } /* 과거 날짜 (오늘 -7일일) */ .fc-daygrid-day.past { cursor: not-allowed !important; } /* 기본 이벤트 스타일 */ .fc-daygrid-event { border: none !important; border-radius: 4px; } /* 오전 반차 활성화 영역 (왼쪽 절반) */ .selected-event.half-day-am { width: 50% !important; left: 0 !important; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } /* 오후 반차 활성화 영역 (오른쪽 절반) */ .selected-event.half-day-pm { width: 50% !important; margin-left: auto !important; border-top-right-radius: 4px; border-bottom-right-radius: 4px; } /* 휴가 모달 */ .vac-modal-dialog { background: none !important; box-shadow: none !important; display: flex; align-items: flex-end; justify-content: center; width: 100%; height: 100%; padding-bottom: 20px; } .vac-modal-content { background: #fff; padding: 20px; box-shadow: 0px -4px 5px rgba(0, 0, 0, 0.1), 0px 4px 0px rgba(0, 0, 0, 0); max-width: 500px; width: 100%; position: relative; } .vac-modal-body { max-height: 140px; overflow-y: auto; } .vac-modal-text { font-size: 14px; text-align: center; margin-bottom: 20px; } .count-container { display: flex; align-items: center; justify-content: center; gap: 6px; margin-bottom: 10px; } .count-value { font-size: 23px; font-weight: bold; min-width: 50px; text-align: center; } .custom-button { background: none; border: none; width: 55px; height: 55px; font-size: 26px; color: white; border-radius: 50%; cursor: pointer; transition: all 0.2s; } .vac-modal-title { margin-bottom: 10px; } .vacation-item { display: flex; align-items: center; font-size: 16px; font-weight: bold; margin-bottom: 8px; padding: 5px 10px; border-radius: 5px; background: #f9f9f9; } .close-btn { position: absolute; top: 10px; right: 10px; background: none; border: none; font-size: 18px; cursor: pointer; } .close-btn:hover { color: #525252; } .count-btn { font-size: 18px; padding: 2px 10px; border: none; background: #2c3e50; color: white; border-radius: 5px; cursor: pointer; } .count-btn:hover { background: #1d2c44; } .count-btn:disabled { background: #cccccc; cursor: not-allowed; } .custom-button-container { display: flex; justify-content: flex-end; align-items: center; } .custom-button { background: none; border: none; padding: 10px; cursor: pointer; } .custom-button i { color: #282538; font-size: 25px; } .custom-button:hover i { color: #ff0800; } .custom-button:disabled { cursor: not-allowed; } /* 휴가 사원프로필 */ .profile-list { cursor: pointer; } /* 오전/오후반차,저장버튼 */ /* 버튼 기본 스타일 */ .vac-btn { transition: all 0.2sease-in-out; border: 2px solid transparent; } /* 마우스를 올렸을 때 */ .vac-btn:hover { filter: brightness(90%); box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); transform: scale(1.05); } /* 버튼이 눌렸을 때 */ .vac-btn:active { transform: scale(0.9); box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2); } /* 선택된 (눌린) 버튼 */ .vac-btn.active { box-shadow: 0px 4px 15px rgba(224, 224, 224, 0.3); transform: scale(1.1); } .vac-btn-warning { color: #fff; background-color: #ffc144; border-color: #ffc144; box-shadow: 0 0.125rem 0.25rem 0 rgba(255, 171, 0, 0.4); font-size: 28px; } /* AM 버튼 (선택된 상태) */ .vac-btn-warning.active { background-color: #ff7300 !important; color: #fff; } .vac-btn-info { color: #fff; background-color: #03c3ec; border-color: #03c3ec; box-shadow: 0 0.125rem 0.25rem 0 rgba(3, 195, 236, 0.4); font-size: 28px; } /* PM 버튼 (선택된 상태) */ .vac-btn-info.active { background-color: #0b5ed7 !important; color: white; } /* 풀 연차 버튼 스타일 */ .vac-btn-primary { color: #fff; background-color: #28a745; /* 녹색 */ border-color: #28a745; box-shadow: 0 0.125rem 0.25rem 0 rgba(40, 167, 69, 0.4); font-size: 28px; transition: all 0.2s ease-in-out; } /* 풀 연차 버튼 활성화 스타일 */ .vac-btn-primary.active { background-color: #218838 !important; color: #fff; border: 3px solid #91d091 !important; box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.3); transform: scale(1.1); } /* 풀 연차 버튼이 눌렸을 때 효과 */ .vac-btn-primary:active { transform: scale(0.9); box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2); } /* 버튼 기본 */ .vac-btn-success { transition: all 0.2s ease-in-out; background-color: #871919 !important; color: white; border: 2px solid transparent; font-size: 30px; } /* 버튼 활성화 */ .vac-btn-success.active { background-color: #ff0000 !important; color: white !important; border: 3px solid #eb9f9f !important; box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.3); transform: scale(1.1); } /* 버튼 비활성화 */ .vac-btn-success.disabled { background-color: #bbb8b8 !important; color: white !important; cursor: not-allowed !important; box-shadow: none; transform: none; opacity: 0.5; } /* 작은 화면에서 버튼 크기 조정 */ @media (max-width: 1700px) { .count-btn { width: 28px; height: 28px; font-size: 15px; } .count-container { display: flex; align-items: center; justify-content: center; gap: 0px; margin-bottom: 8px; } .count-value { font-size: 20px; } .custom-button { width: 45px; height: 45px; font-size: 22px; } .vac-grant-modal-title { font-size: 18px; } .vac-modal-text { font-size: 13px; } .vac-modal-title { font-size: 17px; margin-bottom: 10px; } .vacation-item { font-size: 13px; text-align: center; margin-bottom: 5px; } .vac-btn { width: 50px; height: 50px; font-size: 18px; } .vac-btn-success { font-size: 20px; width: 50px; height: 50px; } } @media (max-width: 1500px) { .vac-grant-modal-title { font-size: 14px; } .vac-modal-text { font-size: 11px; } .vac-modal-title { font-size: 13px; margin-bottom: 10px; } .close-btn { top: 5px; right: 5px; font-size: 13px; } .vacation-item { font-size: 11px; text-align: center; margin-bottom: 5px; } .vac-btn { width: 40px; height: 40px; font-size: 18px; } .vac-btn-success { font-size: 20px; width: 40px; height: 40px; } } .grayscaleImg { filter: grayscale(100%); } /* scrollbar 안보이게 */ .scrollbar-none { scrollbar-width: none; } /* project list */ .hidden-start-input { position: absolute; top: 103%; left: 20%; width: 100%; height: 40px; opacity: 0; } .hidden-end-input { position: absolute; top: 113.3%; left: 20%; width: 100%; height: 40px; opacity: 0; } .map { top: -160px; left: -5px; } @keyframes sparkle { 0% { color: #ffcc00; } 50% { color: red; } 100% { color: #ffcc00; } } .bxs-map { animation: sparkle 1s infinite; /* 1초마다 반복 */ } .popover-close { position: absolute; top: 1rem; right: 1rem; z-index: 2; background-color: #fff !important; box-shadow: 0 0.125rem 0.25rem rgba(161, 172, 184, 0.4); transition: all 0.23s ease 0.1s; transform: translate(23px, -25px); } .popover-close:hover { opacity: 1; outline: none; transform: translate(20px, -20px); } .end-project { background-color: #ddd !important; } /* project list end */ /* commuters project list */ .commuter-list { max-height: 358px; overflow-y: auto; scrollbar-width: none; } /* commuters project list end */ /* Scroll Button */ .scroll-top-btn { bottom: 20px; right: 21.7%; transition: opacity 0.4s ease, visibility 0.4s ease, transform 0.4s ease; } .scroll-top-btn.visible { opacity: 1; visibility: visible; transform: translateY(0); } .scroll-top-btn.hidden { opacity: 0; visibility: hidden; transform: translateY(10px); } /* Scroll Button end */ /* 중앙 콘텐츠 자동 조정 */ .layout-page { flex-grow: 1; min-width: 0; /* flexbox 내에서 올바른 크기 계산 */ margin-right: 20%; /* 채팅 사이드바의 너비만큼 밀리도록 설정 */ } /* 중앙 콘텐츠 자동 조정 end */ /* media */ /* 탑바 범위조정 */ .layout-navbar-fixed .layout-navbar.navbar-detached { width: calc(100% - 1.625rem * 2 - 16.25rem - 20%) !important; } @media (min-width: 1200px) { nav#layout-navbar { left: calc(16.25rem - 20%) !important; } .layout-navbar.navbar-detached.container-xxl { max-width: calc(1440px - 1.625rem * 2) !important; } } /* 탑바 범위조정(1200px 이하) */ @media (max-width: 1200px) { nav#layout-navbar { left: -20% !important; } .layout-navbar-fixed .layout-navbar.navbar-detached { width: calc(100% - 1.625rem * 2 - 20%) !important; } } /* 탑바 범위조정(992px 이하) */ @media (max-width: 992px) { .layout-navbar-fixed .layout-navbar.navbar-detached { width: calc(100% - 2rem - 20%) !important; } } /* Mobile */ /* 가로모드 모바일 디바이스 (가로 해상도가 768px 보다 작은 화면에 적용) */ @media (max-width: 767px) { .chat-sidebar { display: none !important; } nav#layout-navbar { left: 0 !important; } .layout-navbar-fixed .layout-navbar.navbar-detached { width: calc(100% - 2rem) !important; } .layout-page { margin-right: 0 !important; } #app-calendar-sidebar { width: 100%; } } /* 세로모드 모바일 디바이스 (가로 해상도가 576px 보다 작은 화면에 적용) */ @media (max-width: 575px) { } /* Mobile end */ /* media end */ /* BoardComment */ .beforeRotate { transition: transform 0.3s ease-in-out; } .rotate { transform: rotate(45deg); transition: transform 0.3s ease-in-out; } /* BoardComment end */ /* vote */ .hidden-date-input { position: absolute; top: 28.5%; left: 17%; width: 100%; opacity: 0; pointer-events: none; } /* 권한부여 */ .user-card-container { display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; margin-top: 20px; } .user-card { width: 200px; padding: 15px; border: 1px solid #ddd; border-radius: 10px; background-color: #fff; box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); display: flex; flex-direction: column; align-items: center; text-align: center; } .profile-img { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; margin-bottom: 10px; } .switch { position: relative; display: inline-block; width: 50px; height: 24px; margin-top: 5px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; border-radius: 24px; } .slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 4px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; } input:checked + .slider { background-color: #4CAF50; } input:checked + .slider:before { transform: translateX(24px); } /* 권한부여 끝 */ /* toast */ .bs-toast { bottom: 20px; right: 20px; } /* toast end */