Реализация рамки для элемента со сложной формой и прозрачным фоном

При разработке элемента со сложной формой и прозрачным фоном возникает задача создания корректной рамки. Известный подход - создание увеличенной копии элемента позади основного - сталкивается с проблемой: невозможно просто "вырезать" внутреннюю часть рамки, чтобы оставить только обводку.

Суть проблемы

Имеется элемент с нестандартной формой, заданной свойством clip-path. Его фон прозрачен или полупрозрачен. Требуется добавить стилизованную рамку, повторяющую контур этого элемента. Прямое применение border не работает из-за сложной геометрии clip-path.

Предложенное решение и его недостаток

Идея создать второй, фоновый элемент, идентичный первому, увеличить его размер и поместить позади - технически верна. Однако ключевая сложность заключается в том, чтобы у этого фонового слоя осталась только рамка (обводка), а его "сердцевина" была невидимой, позволяя просвечивать основной контент или фон страницы.

Пример кода

Исходная структура и стили элемента:

<div class="module_profile" id="moduleProfile">
    <div class="mp_header"></div>
</div>
.module_profile {
    position: relative;
    top: 0%;
    left: 50%;
    transform: translate(-50%, 20%);
    padding: 8px 8px 10px 8px;
    height: 600px;
    width: 600px;
    background: linear-gradient(135deg, var(--color-purple-0) 0%, var(--color-blue-1) 50%, var(--color-blue-0) 100%);
    border: 3px solid var(--color-purple-4);
    border-radius: 25px;
    z-index: 1000;
}

.mp_header {
    position: relative;
    top: 0%;
    left: 50%;
    transform: translate(-50%, 0%);
    margin-bottom: 5px;
    height: 150px;
    width: 580px;
    padding: 5px 3px;
    background: color-mix(in srgb, var(--color-text-0) 3.5%, transparent);
    clip-path: path("M 0,15 A 15,15 0,0,1 15,0 L 565,0 A 15,15 0,0,1 580,15 L 580,75 A 15,15 0,0,1 565,90 L 165,90 A 15,15 0,0,0 150,105 L 150,135 A 15,15 0,0,1 135,150 L 15,150 A 15,15 0,0,1 0,135 Z");
    overflow: hidden;
}

Возможные пути решения

Поскольку аналогичный визуальный эффект достижим в Figma, его можно воспроизвести и средствами кода. Основные подходы:

  • Использование псевдоэлемента с mask: Создать псевдоэлемент ::before с увеличенной копией пути clip-path и применить CSS-маску (mask или mask-composite), чтобы "вычесть" внутреннюю область.
  • SVG и stroke: Реализовать форму как SVG-путь, где рамка задаётся свойством stroke, а заливка (fill) - прозрачная или отсутствует.
  • Filter: drop-shadow: Для простых случаев может подойти CSS-фильтр drop-shadow, создающий тень, повторяющую форму альфа-канала элемента. Однако это не настоящая рамка, а тень, и управление её свойствами ограничено.

Задача сводится к выбору наиболее подходящего метода, который точно воспроизведёт задуманный дизайн и будет поддерживаться целевыми браузерами.