body {
  margin: 0;
  min-height: 100vh;
  background: var(--bg-grad, var(--bg, #f6f8fb));
  color: var(--text-main, #102033);
  font-family: var(--font-body, "Pretendard", system-ui, sans-serif);
  --asset-admin-surface: color-mix(in srgb, var(--card-bg, rgba(255, 255, 255, 0.96)) 94%, transparent);
  --asset-admin-surface-strong: color-mix(in srgb, var(--card-bg, rgba(255, 255, 255, 0.96)) 98%, rgba(255, 255, 255, 0.03));
  --asset-admin-surface-muted: color-mix(in srgb, var(--bg-main, var(--bg, #f6f8fb)) 62%, var(--card-bg, rgba(255, 255, 255, 0.96)));
  --asset-admin-border: color-mix(in srgb, var(--border, rgba(148, 163, 184, 0.24)) 90%, transparent);
  --asset-admin-border-strong: color-mix(in srgb, var(--border, rgba(148, 163, 184, 0.24)) 100%, rgba(255, 255, 255, 0.12));
  --asset-admin-shadow: var(--glass-shadow, 0 18px 48px rgba(15, 23, 42, 0.12));
  --asset-admin-input-bg: var(--input-bg, rgba(255, 255, 255, 0.9));
  --asset-admin-hover: color-mix(in srgb, var(--primary-soft, rgba(37, 99, 235, 0.14)) 52%, var(--card-bg, rgba(255, 255, 255, 0.96)));
  --asset-admin-info-surface: color-mix(in srgb, var(--primary-soft, rgba(37, 99, 235, 0.14)) 82%, transparent);
  --asset-admin-success-surface: color-mix(in srgb, var(--success-soft, rgba(16, 185, 129, 0.16)) 82%, transparent);
  --asset-admin-warning-surface: color-mix(in srgb, var(--warning-soft, rgba(245, 158, 11, 0.14)) 82%, transparent);
  --asset-admin-danger-surface: color-mix(in srgb, var(--danger-soft, rgba(239, 68, 68, 0.12)) 82%, transparent);
  --asset-admin-preview-bg: color-mix(in srgb, var(--bg-main, var(--bg, #f6f8fb)) 74%, rgba(255, 255, 255, 0.22));
  --asset-admin-preview-border: color-mix(in srgb, var(--border, rgba(148, 163, 184, 0.24)) 72%, rgba(255, 255, 255, 0.24));
}

.hidden {
  display: none !important;
}

.asset-admin-loading,
.asset-admin-auth {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--bg-grad, var(--bg, #f6f8fb));
  color: var(--text-main, #102033);
  text-align: center;
  padding: 24px;
}

.asset-admin-spinner {
  width: 42px;
  height: 42px;
  border: 3px solid rgba(148, 163, 184, 0.22);
  border-top-color: #2563eb;
  border-radius: 999px;
  animation: asset-admin-spin 1s linear infinite;
}

@keyframes asset-admin-spin {
  to {
    transform: rotate(360deg);
  }
}

.asset-admin-auth-card,
.asset-admin-hero,
.asset-admin-meta-card,
.asset-admin-library-panel,
.asset-admin-editor-panel {
  border: 1px solid var(--asset-admin-border);
  border-radius: 24px;
  background: var(--asset-admin-surface);
  box-shadow: var(--asset-admin-shadow);
  backdrop-filter: blur(12px);
}

.asset-admin-auth-card {
  max-width: 420px;
  padding: 32px;
}

.asset-admin-auth-icon {
  font-size: 3rem;
  margin-bottom: 14px;
}

.asset-admin-page {
  width: min(1440px, calc(100vw - 32px));
  margin: 0 auto;
  padding: 18px 0 40px;
}

.asset-admin-hero {
  margin-top: 16px;
  padding: 26px 28px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
}

.asset-admin-kicker {
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--primary, #2563eb);
}

.asset-admin-hero h1,
.asset-admin-section-head h2 {
  margin: 8px 0 10px;
}

.asset-admin-hero p,
.asset-admin-section-head p,
.asset-admin-note {
  margin: 0;
  line-height: 1.65;
  color: var(--text-sub, #516173);
}

.asset-admin-hero-actions,
.asset-admin-form-actions,
.asset-admin-view-tabs,
.asset-admin-stat-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.asset-admin-btn,
.asset-admin-view-btn {
  border: 1px solid var(--asset-admin-border-strong);
  border-radius: 999px;
  background: var(--asset-admin-surface-strong);
  color: var(--text-main, #223247);
  padding: 11px 16px;
  font: inherit;
  font-weight: 800;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease, color 0.16s ease;
}

.asset-admin-btn:hover,
.asset-admin-view-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.18);
  background: var(--asset-admin-hover);
}

.asset-admin-btn-primary,
.asset-admin-view-btn.is-active {
  background: var(--primary, #2563eb);
  color: #ffffff;
  border-color: transparent;
}

.asset-admin-btn-danger {
  background: var(--asset-admin-danger-surface);
  color: var(--danger, #b42318);
  border-color: color-mix(in srgb, var(--danger, #ef4444) 20%, var(--asset-admin-border));
}

.asset-admin-meta-grid {
  margin-top: 14px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.asset-admin-meta-card {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.asset-admin-meta-label {
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-sub, #94a3b8);
}

.asset-admin-select,
.asset-admin-input {
  width: 100%;
  box-sizing: border-box;
  min-height: 44px;
  border-radius: 14px;
  border: 1px solid var(--asset-admin-border-strong);
  background: var(--asset-admin-input-bg);
  color: inherit;
  padding: 10px 12px;
  font: inherit;
}

.asset-admin-status-badge,
.asset-admin-mini-badge,
.asset-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  padding: 7px 11px;
  font-size: 0.86rem;
  font-weight: 800;
}

.asset-admin-status-badge,
.asset-admin-mini-badge {
  background: var(--asset-admin-info-surface);
  color: var(--primary, #1d4ed8);
}

.asset-admin-viewbar {
  margin-top: 14px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.asset-admin-layout {
  margin-top: 14px;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(340px, 420px);
  gap: 14px;
  align-items: start;
}

.asset-admin-library-panel,
.asset-admin-editor-panel {
  padding: 22px;
}

.asset-admin-section-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 18px;
}

.asset-admin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}

.asset-admin-empty {
  border: 1px dashed var(--asset-admin-border-strong);
  border-radius: 18px;
  padding: 22px;
  color: var(--text-sub, #64748b);
  text-align: center;
}

.asset-card {
  border: 1px solid var(--asset-admin-border);
  border-radius: 20px;
  padding: 14px;
  background: var(--asset-admin-surface-strong);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.asset-card.is-hidden {
  opacity: 0.7;
}

.asset-card.is-archived {
  border-style: dashed;
}

.asset-card-preview {
  aspect-ratio: 1.3;
  border-radius: 16px;
  background: linear-gradient(180deg, var(--asset-admin-preview-bg), color-mix(in srgb, var(--asset-admin-preview-bg) 70%, transparent));
  border: 1px solid var(--asset-admin-preview-border);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.asset-card-preview img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.asset-card-preview.has-image .asset-card-preview-fallback {
  display: none;
}

.asset-card-preview.is-broken {
  background: linear-gradient(180deg, var(--asset-admin-warning-surface), var(--asset-admin-preview-bg));
}

.asset-card-preview-fallback {
  padding: 0 16px;
  text-align: center;
  font-size: 0.85rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--text-sub, #64748b);
}

.asset-card-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--text-main, #102033);
}

.asset-card-key,
.asset-card-meta {
  font-size: 0.86rem;
  color: var(--text-sub, #64748b);
  word-break: break-all;
}

.asset-card-badges,
.asset-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.asset-chip {
  background: var(--asset-admin-surface-muted);
  color: var(--text-sub, #475569);
  border: 1px solid var(--asset-admin-border);
}

.asset-chip.favorite {
  background: var(--asset-admin-warning-surface);
  color: var(--warning, #c2410c);
}

.asset-chip.is-hidden-chip {
  background: var(--asset-admin-info-surface);
  color: var(--primary, #4f46e5);
}

.asset-chip.custom {
  background: var(--asset-admin-success-surface);
  color: var(--success, #0f766e);
}

.asset-chip.archived {
  background: var(--asset-admin-surface-muted);
  color: var(--text-sub, #475569);
}

.asset-card-action {
  border: 1px solid var(--asset-admin-border-strong);
  border-radius: 999px;
  background: var(--asset-admin-surface);
  color: var(--text-main, #334155);
  padding: 8px 12px;
  font: inherit;
  font-size: 0.86rem;
  font-weight: 800;
  cursor: pointer;
}

.asset-card-action.is-active {
  background: var(--asset-admin-info-surface);
  color: var(--primary, #1d4ed8);
}

.asset-admin-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.asset-admin-form-grid label,
.asset-admin-checkbox {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text-main, #334155);
}

.asset-admin-span-2 {
  grid-column: span 2;
}

.asset-admin-checkbox {
  margin: 14px 0;
  flex-direction: row;
  align-items: center;
}

.asset-admin-checkbox input {
  accent-color: var(--primary, #2563eb);
}

.asset-admin-note-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 16px;
}

@media (max-width: 1180px) {
  .asset-admin-meta-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .asset-admin-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 780px) {
  .asset-admin-page {
    width: min(100vw - 20px, 100%);
    padding-bottom: 24px;
  }

  .asset-admin-hero,
  .asset-admin-viewbar,
  .asset-admin-section-head {
    grid-template-columns: 1fr;
    display: flex;
    flex-direction: column;
  }

  .asset-admin-meta-grid,
  .asset-admin-form-grid {
    grid-template-columns: 1fr;
  }

  .asset-admin-span-2 {
    grid-column: auto;
  }
}
