- 모바일 툴바 h-14 통일 - 데스크탑 사이드바 레이아웃 통합 - 관리자 페이지 프로필과 동일한 스타일 적용 - 불필요한 hooks/api.js 파일 제거 - body 배경 gradient에서 단색으로 변경
223 lines
4.6 KiB
CSS
223 lines
4.6 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/* 기본 body 스타일 - 다크 배경 */
|
|
body {
|
|
background: #141414;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
/* PC 레이아웃 - min-width 적용 */
|
|
body.desktop-layout {
|
|
min-width: 1400px;
|
|
}
|
|
|
|
/* 모바일 레이아웃 */
|
|
body.mobile-layout {
|
|
min-width: unset;
|
|
width: 100%;
|
|
overflow-x: hidden;
|
|
min-height: auto;
|
|
}
|
|
|
|
@layer utilities {
|
|
/* 텍스트 그림자 */
|
|
.text-shadow {
|
|
text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.5);
|
|
}
|
|
.text-shadow-sm {
|
|
text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.5);
|
|
}
|
|
.text-shadow-lg {
|
|
text-shadow: 3px 3px 0px rgba(0, 0, 0, 0.5);
|
|
}
|
|
|
|
/* 그라디언트 텍스트 */
|
|
.text-gradient {
|
|
background: linear-gradient(135deg, #4ade80 0%, #22d3ee 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
/* 글래스모피즘 (다크 테마) */
|
|
.glass {
|
|
background: rgba(28, 28, 28, 0.8);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
border: 1px solid rgba(74, 222, 128, 0.1);
|
|
}
|
|
|
|
.glass-dark {
|
|
background: rgba(20, 20, 20, 0.9);
|
|
backdrop-filter: blur(16px);
|
|
-webkit-backdrop-filter: blur(16px);
|
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
/* 글로우 카드 효과 */
|
|
.glow-card {
|
|
position: relative;
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(28, 28, 28, 0.95) 0%,
|
|
rgba(24, 24, 24, 0.95) 100%
|
|
);
|
|
border: 1px solid rgba(74, 222, 128, 0.15);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.glow-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: -1px;
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(74, 222, 128, 0.2) 0%,
|
|
rgba(34, 211, 238, 0.2) 100%
|
|
);
|
|
border-radius: inherit;
|
|
z-index: -1;
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.glow-card:hover::before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.glow-card:hover {
|
|
border-color: rgba(74, 222, 128, 0.4);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 10px 40px rgba(74, 222, 128, 0.15);
|
|
}
|
|
|
|
/* Shimmer 효과 */
|
|
.shimmer {
|
|
background: linear-gradient(
|
|
90deg,
|
|
rgba(37, 37, 37, 0.5) 25%,
|
|
rgba(74, 222, 128, 0.1) 50%,
|
|
rgba(37, 37, 37, 0.5) 75%
|
|
);
|
|
background-size: 200% 100%;
|
|
animation: shimmer 2s infinite linear;
|
|
}
|
|
|
|
/* 아이콘 글로우 */
|
|
.icon-glow {
|
|
filter: drop-shadow(0 0 8px rgba(74, 222, 128, 0.5));
|
|
}
|
|
|
|
/* 호버 리프트 효과 */
|
|
.hover-lift {
|
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.hover-lift:hover {
|
|
transform: translateY(-4px);
|
|
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
/* 버튼 글로우 */
|
|
.btn-glow {
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.btn-glow::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(
|
|
135deg,
|
|
transparent 0%,
|
|
rgba(255, 255, 255, 0.1) 50%,
|
|
transparent 100%
|
|
);
|
|
transform: translateX(-100%);
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.btn-glow:hover::after {
|
|
transform: translateX(100%);
|
|
}
|
|
}
|
|
|
|
/* 온라인 상태 표시기 펄스 */
|
|
.online-pulse {
|
|
animation: pulse-ring 1.5s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
|
|
}
|
|
|
|
@keyframes pulse-ring {
|
|
0% {
|
|
box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.6);
|
|
}
|
|
70% {
|
|
box-shadow: 0 0 0 8px rgba(74, 222, 128, 0);
|
|
}
|
|
100% {
|
|
box-shadow: 0 0 0 0 rgba(74, 222, 128, 0);
|
|
}
|
|
}
|
|
|
|
/* 배경 파티클 효과용 */
|
|
.particles-bg {
|
|
background-image: radial-gradient(
|
|
circle at 20% 80%,
|
|
rgba(74, 222, 128, 0.04) 0%,
|
|
transparent 50%
|
|
),
|
|
radial-gradient(
|
|
circle at 80% 20%,
|
|
rgba(34, 211, 238, 0.04) 0%,
|
|
transparent 50%
|
|
),
|
|
radial-gradient(
|
|
circle at 40% 40%,
|
|
rgba(74, 222, 128, 0.03) 0%,
|
|
transparent 30%
|
|
);
|
|
}
|
|
|
|
/* 커스텀 스크롤바 */
|
|
.custom-scrollbar::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar-track {
|
|
background: rgba(255, 255, 255, 0.05);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar-thumb {
|
|
background: rgba(74, 222, 128, 0.3);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
|
background: rgba(74, 222, 128, 0.5);
|
|
}
|
|
|
|
/* 픽셀 이미지 렌더링 */
|
|
.pixelated {
|
|
image-rendering: pixelated;
|
|
image-rendering: -moz-crisp-edges;
|
|
image-rendering: crisp-edges;
|
|
}
|
|
|
|
/* Details 펼치기/접기 애니메이션 */
|
|
details .details-content {
|
|
display: grid;
|
|
grid-template-rows: 0fr;
|
|
transition: grid-template-rows 0.3s ease-out;
|
|
}
|
|
|
|
details[open] .details-content {
|
|
grid-template-rows: 1fr;
|
|
}
|
|
|
|
details .details-content > div {
|
|
overflow: hidden;
|
|
}
|