|
@@ -3657,9 +3657,1493 @@ footer{
|
|
|
line-height: 32px;
|
|
line-height: 32px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// ============================================
|
|
|
|
|
+// Admin Panel Dark Theme Styles
|
|
|
|
|
+// ============================================
|
|
|
|
|
+
|
|
|
|
|
+// Dark Theme Color Variables
|
|
|
|
|
+:root {
|
|
|
|
|
+ --admin-bg-primary: #0f0f0f;
|
|
|
|
|
+ --admin-bg-secondary: #1a1a1a;
|
|
|
|
|
+ --admin-bg-tertiary: #252525;
|
|
|
|
|
+ --admin-text-primary: #ffffff;
|
|
|
|
|
+ --admin-text-secondary: #b3b3b3;
|
|
|
|
|
+ --admin-text-muted: #666666;
|
|
|
|
|
+ --admin-border-color: #333333;
|
|
|
|
|
+ --admin-accent-primary: #bb0a30;
|
|
|
|
|
+ --admin-accent-hover: #990825;
|
|
|
|
|
+ --admin-success: #10b981;
|
|
|
|
|
+ --admin-warning: #f59e0b;
|
|
|
|
|
+ --admin-error: #ef4444;
|
|
|
|
|
+ --admin-shadow: rgba(0, 0, 0, 0.5);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Login Page
|
|
|
|
|
+.admin--login {
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ background: linear-gradient(135deg, var(--admin-bg-primary) 0%, var(--admin-bg-secondary) 100%);
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ .login--container {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ max-width: 460px;
|
|
|
|
|
+ padding: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--box {
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border-radius: 12px;
|
|
|
|
|
+ padding: 48px 40px;
|
|
|
|
|
+ box-shadow: 0 8px 32px var(--admin-shadow);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--logo {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ margin-bottom: 40px;
|
|
|
|
|
+
|
|
|
|
|
+ h1 {
|
|
|
|
|
+ font-size: 48px;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0 0 8px 0;
|
|
|
|
|
+ letter-spacing: 4px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .subtitle {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--error {
|
|
|
|
|
+ background: rgba(239, 68, 68, 0.1);
|
|
|
|
|
+ border: 1px solid var(--admin-error);
|
|
|
|
|
+ color: var(--admin-error);
|
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--form {
|
|
|
|
|
+ .form--group {
|
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .form--input {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: 14px 16px;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:focus {
|
|
|
|
|
+ outline: none;
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ box-shadow: 0 0 0 3px rgba(187, 10, 48, 0.1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &::placeholder {
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:disabled {
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .form--options {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ margin-bottom: 24px;
|
|
|
|
|
+
|
|
|
|
|
+ .checkbox--label {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+
|
|
|
|
|
+ input[type="checkbox"] {
|
|
|
|
|
+ margin-right: 8px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .forgot--password {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-accent-primary);
|
|
|
|
|
+ text-decoration: none;
|
|
|
|
|
+ transition: color 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: var(--admin-accent-hover);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--button {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: 14px 16px;
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover:not(:disabled) {
|
|
|
|
|
+ background: var(--admin-accent-hover);
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: 0 4px 12px rgba(187, 10, 48, 0.3);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:active:not(:disabled) {
|
|
|
|
|
+ transform: translateY(0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:disabled {
|
|
|
|
|
+ opacity: 0.6;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login--footer {
|
|
|
|
|
+ margin-top: 32px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+
|
|
|
|
|
+ p {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Layout
|
|
|
|
|
+.admin--layout {
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Header
|
|
|
|
|
+.admin--header {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ height: 64px;
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border-bottom: 1px solid var(--admin-border-color);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: 0 32px;
|
|
|
|
|
+ z-index: 1000;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--header-left {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--logo {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: baseline;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+
|
|
|
|
|
+ h1 {
|
|
|
|
|
+ font-size: 28px;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ letter-spacing: 2px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--logo-sub {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ font-weight: 400;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--header-right {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--header-btn {
|
|
|
|
|
+ padding: 8px 20px;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--header-btn-logout {
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-accent-hover);
|
|
|
|
|
+ border-color: var(--admin-accent-hover);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Content Wrapper
|
|
|
|
|
+.admin--content-wrapper {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ margin-top: 64px;
|
|
|
|
|
+ min-height: calc(100vh - 64px);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Sidebar
|
|
|
|
|
+.admin--sidebar {
|
|
|
|
|
+ width: 260px;
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border-right: 1px solid var(--admin-border-color);
|
|
|
|
|
+ padding: 24px 0;
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ top: 64px;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ overflow-y: auto;
|
|
|
|
|
+
|
|
|
|
|
+ &::-webkit-scrollbar {
|
|
|
|
|
+ width: 6px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &::-webkit-scrollbar-track {
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &::-webkit-scrollbar-thumb {
|
|
|
|
|
+ background: var(--admin-border-color);
|
|
|
|
|
+ border-radius: 3px;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-text-muted);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin GNB
|
|
|
|
|
+.admin--gnb {
|
|
|
|
|
+ .admin--gnb-group {
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--gnb-title {
|
|
|
|
|
+ padding: 12px 24px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ user-select: none;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--gnb-arrow {
|
|
|
|
|
+ font-size: 10px;
|
|
|
|
|
+ transition: transform 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &.is-open {
|
|
|
|
|
+ transform: rotate(-180deg);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--gnb-submenu {
|
|
|
|
|
+ list-style: none;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--gnb-item {
|
|
|
|
|
+ &.is-active {
|
|
|
|
|
+ .admin--gnb-link {
|
|
|
|
|
+ color: var(--admin-accent-primary);
|
|
|
|
|
+ background: rgba(187, 10, 48, 0.1);
|
|
|
|
|
+ border-left: 3px solid var(--admin-accent-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--gnb-link {
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ padding: 10px 24px 10px 40px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ text-decoration: none;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ border-left: 3px solid transparent;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Submenu Animation
|
|
|
|
|
+.admin--submenu-enter-active,
|
|
|
|
|
+.admin--submenu-leave-active {
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--submenu-enter-from,
|
|
|
|
|
+.admin--submenu-leave-to {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+ max-height: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--submenu-enter-to,
|
|
|
|
|
+.admin--submenu-leave-from {
|
|
|
|
|
+ opacity: 1;
|
|
|
|
|
+ max-height: 500px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Main Content
|
|
|
|
|
+.admin--main {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ margin-left: 260px;
|
|
|
|
|
+ padding: 32px;
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Page Header
|
|
|
|
|
+.admin--page-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ margin-bottom: 32px;
|
|
|
|
|
+ padding-bottom: 16px;
|
|
|
|
|
+ border-bottom: 1px solid var(--admin-border-color);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--page-title {
|
|
|
|
|
+ font-size: 28px;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Breadcrumb
|
|
|
|
|
+.admin--breadcrumb {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--breadcrumb-link {
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ text-decoration: none;
|
|
|
|
|
+ transition: color 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: var(--admin-accent-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--breadcrumb-current {
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--breadcrumb-separator {
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Page Content
|
|
|
|
|
+.admin--page-content {
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ padding: 24px;
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Dashboard
|
|
|
|
|
+.admin--dashboard {
|
|
|
|
|
+ .admin--dashboard-welcome {
|
|
|
|
|
+ margin-bottom: 32px;
|
|
|
|
|
+
|
|
|
|
|
+ h3 {
|
|
|
|
|
+ font-size: 24px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0 0 8px 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ p {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--dashboard-stats {
|
|
|
|
|
+ display: grid;
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
|
|
|
+ gap: 20px;
|
|
|
|
|
+ margin-bottom: 32px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--stat-card {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ padding: 24px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 16px;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: 0 4px 12px var(--admin-shadow);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--stat-icon {
|
|
|
|
|
+ font-size: 36px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--stat-content {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+
|
|
|
|
|
+ h4 {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ margin: 0 0 8px 0;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--stat-number {
|
|
|
|
|
+ font-size: 28px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--dashboard-recent {
|
|
|
|
|
+ h4 {
|
|
|
|
|
+ font-size: 18px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin: 0 0 16px 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--recent-list {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ padding: 24px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--no-data {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Form Styles
|
|
|
|
|
+.admin--form {
|
|
|
|
|
+ max-width: 800px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-group {
|
|
|
|
|
+ margin-bottom: 24px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-label {
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--required {
|
|
|
|
|
+ color: var(--admin-error);
|
|
|
|
|
+ margin-left: 4px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-input,
|
|
|
|
|
+ .admin--form-textarea,
|
|
|
|
|
+ .admin--form-select {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:focus {
|
|
|
|
|
+ outline: none;
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ box-shadow: 0 0 0 3px rgba(187, 10, 48, 0.1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &::placeholder {
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:disabled {
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-textarea {
|
|
|
|
|
+ min-height: 120px;
|
|
|
|
|
+ resize: vertical;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-select {
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 다중 입력 필드
|
|
|
|
|
+ .admin--multi-input-wrapper {
|
|
|
|
|
+ .admin--multi-input-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--sender-row {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 10px;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-input {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-remove {
|
|
|
|
|
+ padding: 12px 20px;
|
|
|
|
|
+ background: var(--admin-error);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: #dc2626;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-add {
|
|
|
|
|
+ padding: 10px 20px;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ border: 1px dashed var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 폼 액션 버튼
|
|
|
|
|
+ .admin--form-actions {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ margin-top: 32px;
|
|
|
|
|
+ padding-top: 24px;
|
|
|
|
|
+ border-top: 1px solid var(--admin-border-color);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn {
|
|
|
|
|
+ padding: 12px 32px;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:disabled {
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-primary {
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover:not(:disabled) {
|
|
|
|
|
+ background: var(--admin-accent-hover);
|
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
|
+ box-shadow: 0 4px 12px rgba(187, 10, 48, 0.3);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-secondary {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover:not(:disabled) {
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 알림 메시지
|
|
|
|
|
+ .admin--alert {
|
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ margin-top: 20px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--alert-success {
|
|
|
|
|
+ background: rgba(16, 185, 129, 0.1);
|
|
|
|
|
+ border: 1px solid var(--admin-success);
|
|
|
|
|
+ color: var(--admin-success);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--alert-error {
|
|
|
|
|
+ background: rgba(239, 68, 68, 0.1);
|
|
|
|
|
+ border: 1px solid var(--admin-error);
|
|
|
|
|
+ color: var(--admin-error);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--alert-warning {
|
|
|
|
|
+ background: rgba(245, 158, 11, 0.1);
|
|
|
|
|
+ border: 1px solid var(--admin-warning);
|
|
|
|
|
+ color: var(--admin-warning);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 로딩
|
|
|
|
|
+.admin--loading {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ padding: 60px 20px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 검색 박스
|
|
|
|
|
+.admin--search-box {
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ padding: 20px;
|
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 20px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--search-form {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--search-select {
|
|
|
|
|
+ width: 140px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--search-input {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ max-width: 400px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--search-actions {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 테이블
|
|
|
|
|
+.admin--table-wrapper {
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ overflow-x: auto;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--table {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ border-collapse: collapse;
|
|
|
|
|
+
|
|
|
|
|
+ thead {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border-bottom: 1px solid var(--admin-border-color);
|
|
|
|
|
+
|
|
|
|
|
+ th {
|
|
|
|
|
+ padding: 14px 16px;
|
|
|
|
|
+ text-align: left;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ tbody {
|
|
|
|
|
+ tr {
|
|
|
|
|
+ border-bottom: 1px solid var(--admin-border-color);
|
|
|
|
|
+ transition: background 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:last-child {
|
|
|
|
|
+ border-bottom: none;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ td {
|
|
|
|
|
+ padding: 14px 16px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ vertical-align: middle;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--table-title {
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ max-width: 300px;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--table-loading,
|
|
|
|
|
+ .admin--table-empty {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ padding: 60px 20px;
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--table-actions {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 배지
|
|
|
|
|
+.admin--badge {
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ padding: 4px 12px;
|
|
|
|
|
+ border-radius: 12px;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--badge-html {
|
|
|
|
|
+ background: rgba(59, 130, 246, 0.1);
|
|
|
|
|
+ color: #3b82f6;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--badge-image {
|
|
|
|
|
+ background: rgba(16, 185, 129, 0.1);
|
|
|
|
|
+ color: #10b981;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--badge-active {
|
|
|
|
|
+ background: rgba(16, 185, 129, 0.1);
|
|
|
|
|
+ color: var(--admin-success);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--badge-scheduled {
|
|
|
|
|
+ background: rgba(245, 158, 11, 0.1);
|
|
|
|
|
+ color: var(--admin-warning);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--badge-ended {
|
|
|
|
|
+ background: rgba(107, 114, 128, 0.1);
|
|
|
|
|
+ color: #6b7280;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 작은 버튼
|
|
|
|
|
+.admin--btn-small {
|
|
|
|
|
+ padding: 6px 14px;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--btn-small-primary {
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-accent-hover);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.admin--btn-small-danger {
|
|
|
|
|
+ background: var(--admin-error);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: #dc2626;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 페이지네이션
|
|
|
|
|
+.admin--pagination {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ margin-top: 24px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--pagination-btn {
|
|
|
|
|
+ min-width: 36px;
|
|
|
|
|
+ height: 36px;
|
|
|
|
|
+ padding: 0 12px;
|
|
|
|
|
+ background: var(--admin-bg-secondary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover:not(:disabled) {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.is-active {
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:disabled {
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 라디오 그룹
|
|
|
|
|
+.admin--radio-group {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 20px;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--radio-label {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ transition: color 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ input[type="radio"] {
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 날짜 범위
|
|
|
|
|
+.admin--date-range {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--date-separator {
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 사이즈 그룹
|
|
|
|
|
+.admin--size-group {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 20px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--size-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+
|
|
|
|
|
+ label {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ min-width: 40px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-input {
|
|
|
|
|
+ max-width: 120px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ span {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 파일 입력
|
|
|
|
|
+.admin--form-file {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+
|
|
|
|
|
+ &::-webkit-file-upload-button {
|
|
|
|
|
+ padding: 8px 16px;
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ margin-right: 12px;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 이미지 미리보기
|
|
|
|
|
+.admin--image-preview {
|
|
|
|
|
+ margin-top: 16px;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ max-width: 400px;
|
|
|
|
|
+
|
|
|
|
|
+ img {
|
|
|
|
|
+ max-width: 100%;
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-remove-image {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: 12px;
|
|
|
|
|
+ right: 12px;
|
|
|
|
|
+ padding: 8px 16px;
|
|
|
|
|
+ background: var(--admin-error);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: 'AudiType', sans-serif;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: #dc2626;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 비밀번호 입력 래퍼
|
|
|
|
|
+.admin--password-input-wrapper {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-input {
|
|
|
|
|
+ padding-right: 50px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--password-toggle {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ right: 12px;
|
|
|
|
|
+ top: 50%;
|
|
|
|
|
+ transform: translateY(-50%);
|
|
|
|
|
+ background: none;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ padding: 4px;
|
|
|
|
|
+ line-height: 1;
|
|
|
|
|
+ transition: opacity 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ opacity: 0.7;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 폼 도움말
|
|
|
|
|
+.admin--form-help {
|
|
|
|
|
+ margin: 8px 0 0 0;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ font-style: italic;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 검색 박스 (큰 버전 - 여러 필터)
|
|
|
|
|
+.admin--search-box-large {
|
|
|
|
|
+ .admin--search-filters {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--filter-row {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--filter-label {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ min-width: 60px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form-select,
|
|
|
|
|
+ .admin--form-input {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ min-width: 150px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 테이블 사진
|
|
|
|
|
+.admin--table-photo {
|
|
|
|
|
+ width: 50px;
|
|
|
|
|
+ height: 50px;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+
|
|
|
|
|
+ img {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ object-fit: cover;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--table-photo-empty {
|
|
|
|
|
+ font-size: 11px;
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 테이블 액션 (세로 배치)
|
|
|
|
|
+.admin--table-actions-col {
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 6px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-small {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 작은 버튼 (secondary 추가)
|
|
|
|
|
+.admin--btn-small-secondary {
|
|
|
|
|
+ background: var(--admin-bg-tertiary);
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-bg-primary);
|
|
|
|
|
+ border-color: var(--admin-accent-primary);
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Responsive
|
|
|
|
|
+@media (max-width: 1024px) {
|
|
|
|
|
+ .admin--sidebar {
|
|
|
|
|
+ width: 220px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--main {
|
|
|
|
|
+ margin-left: 220px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .admin--header {
|
|
|
|
|
+ padding: 0 16px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--sidebar {
|
|
|
|
|
+ transform: translateX(-100%);
|
|
|
|
|
+ transition: transform 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ &.is-open {
|
|
|
|
|
+ transform: translateX(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--main {
|
|
|
|
|
+ margin-left: 0;
|
|
|
|
|
+ padding: 16px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--page-header {
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--form {
|
|
|
|
|
+ .admin--form-actions {
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .admin--multi-input-wrapper {
|
|
|
|
|
+ .admin--multi-input-item {
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--btn-remove {
|
|
|
|
|
+ width: 100%;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// File Attachment Styles
|
|
|
|
|
+.admin--form-file-hidden {
|
|
|
|
|
+ display: none;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--file-list {
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+ border: 1px solid var(--admin-border-color);
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ background-color: var(--admin-bg-secondary);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--file-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
|
+ border-bottom: 1px solid var(--admin-border-color);
|
|
|
|
|
+
|
|
|
|
|
+ &:last-child {
|
|
|
|
|
+ border-bottom: none;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background-color: rgba(255, 255, 255, 0.03);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--file-name {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ margin-right: 8px;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ text-decoration: underline;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--file-size {
|
|
|
|
|
+ color: var(--admin-text-secondary);
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ margin-right: 12px;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--btn-remove-file {
|
|
|
|
|
+ padding: 4px 12px;
|
|
|
|
|
+ background-color: transparent;
|
|
|
|
|
+ color: var(--admin-danger-color);
|
|
|
|
|
+ border: 1px solid var(--admin-danger-color);
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.2s ease;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background-color: var(--admin-danger-color);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Checkbox Group Styles
|
|
|
|
|
+.admin--checkbox-group {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 20px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--checkbox-label {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ color: var(--admin-text-primary);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+
|
|
|
|
|
+ input[type="checkbox"] {
|
|
|
|
|
+ width: 18px;
|
|
|
|
|
+ height: 18px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ accent-color: var(--admin-accent-primary);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ span {
|
|
|
|
|
+ user-select: none;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ opacity: 0.8;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Admin Footer
|
|
|
|
|
+.admin--footer {
|
|
|
|
|
+ margin-top: 64px;
|
|
|
|
|
+ padding: 24px 0;
|
|
|
|
|
+ border-top: 1px solid var(--admin-border-color);
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+
|
|
|
|
|
+ p {
|
|
|
|
|
+ color: var(--admin-text-muted);
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// IMPORTANT: Force display admin header and footer
|
|
|
|
|
+.admin--header {
|
|
|
|
|
+ display: flex !important;
|
|
|
|
|
+ min-height: 64px !important;
|
|
|
|
|
+ background: #1a1a1a !important;
|
|
|
|
|
+ visibility: visible !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--footer {
|
|
|
|
|
+ display: block !important;
|
|
|
|
|
+ min-height: 60px !important;
|
|
|
|
|
+ background: #1a1a1a !important;
|
|
|
|
|
+ visibility: visible !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Alert Modal Styles
|
|
|
|
|
+.admin--modal-overlay {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ background: rgba(0, 0, 0, 0.7);
|
|
|
|
|
+ z-index: 9999;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal {
|
|
|
|
|
+ background: #2d2d2d;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ min-width: 400px;
|
|
|
|
|
+ max-width: 500px;
|
|
|
|
|
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--modal-header {
|
|
|
|
|
+ padding: 20px;
|
|
|
|
|
+ border-bottom: 1px solid #404040;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ h4 {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ font-size: 18px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: #ffffff;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--modal-close {
|
|
|
|
|
+ background: none;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ font-size: 24px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ color: #999;
|
|
|
|
|
+ line-height: 1;
|
|
|
|
|
+ transition: color 0.2s;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--modal-body {
|
|
|
|
|
+ padding: 30px 20px;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--alert-content p {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ font-size: 15px;
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+ color: #e0e0e0;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--modal-footer {
|
|
|
|
|
+ padding: 15px 20px;
|
|
|
|
|
+ border-top: 1px solid #404040;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 10px;
|
|
|
|
|
+ justify-content: flex-end;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--btn-secondary {
|
|
|
|
|
+ padding: 8px 20px;
|
|
|
|
|
+ border: 1px solid #404040;
|
|
|
|
|
+ background: #252525;
|
|
|
|
|
+ color: #e0e0e0;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ transition: all 0.2s;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: #2d2d2d;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.admin--alert-modal .admin--btn-primary {
|
|
|
|
|
+ padding: 8px 20px;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ background: var(--admin-accent-primary);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ transition: all 0.2s;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: var(--admin-accent-hover);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Modal Animation
|
|
|
|
|
+@keyframes slideUp {
|
|
|
|
|
+ from {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+ transform: translateY(30px);
|
|
|
|
|
+ }
|
|
|
|
|
+ to {
|
|
|
|
|
+ opacity: 1;
|
|
|
|
|
+ transform: translateY(0);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.modal-fade-enter-active {
|
|
|
|
|
+ transition: opacity 0.3s ease;
|
|
|
|
|
+
|
|
|
|
|
+ .admin--alert-modal {
|
|
|
|
|
+ animation: slideUp 0.3s ease-out;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.modal-fade-leave-active {
|
|
|
|
|
+ transition: opacity 0.2s ease;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.modal-fade-enter-from,
|
|
|
|
|
+.modal-fade-leave-to {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+}
|