Способы применения рамок — Аспро: Максимум
:root {
--primary-color: #111111; /* Насыщенный черный */
--accent-color: #d4af37; /* Золото */
--accent-hover: #b89028; /* Темное золото */
--bg-light: #faf8f5; /* Мягкий светлый фон */
--bg-card: #ffffff; /* Фон карточки */
--text-main: #262626; /* Цвет текста */
--text-muted: #5a5a5a; /* Приглушенный текст */
--border-color: #e5dfd5; /* Линия разграничения */
--transition-speed: 0.4s;
}
.aspro-max-section {
font-family: 'Montserrat', sans-serif;
color: var(--text-main);
background-color: var(--bg-light);
padding: 5rem 2rem;
max-width: 1280px;
margin: 0 auto;
box-sizing: border-box;
}
.aspro-max-section * {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.section-header {
text-align: center;
margin-bottom: 5rem;
}
.section-title {
font-family: 'Playfair Display', serif;
font-size: 2.8rem;
font-weight: 600;
color: var(--primary-color);
line-height: 1.25;
margin-bottom: 1.5rem;
}
.section-title span {
font-weight: 400;
font-style: italic;
color: var(--accent-color);
}
.section-desc {
max-width: 800px;
margin: 0 auto;
font-size: 1.2rem;
line-height: 1.7;
color: var(--text-muted);
font-weight: 400;
}
.header-divider {
width: 80px;
height: 2px;
background-color: var(--accent-color);
margin: 2rem auto 0;
}
.scenario-block {
margin-bottom: 6rem;
}
.scenario-block:last-child {
margin-bottom: 0;
}
.scenario-info {
display: flex;
align-items: flex-start;
margin-bottom: 2.5rem;
border-bottom: 1px solid var(--border-color);
padding-bottom: 1.5rem;
}
.scenario-number {
font-family: 'Playfair Display', serif;
font-size: 3.5rem;
font-weight: 600;
color: var(--accent-color);
line-height: 1;
margin-right: 2rem;
opacity: 0.8;
user-select: none;
}
.scenario-text-wrapper {
flex: 1;
}
.scenario-name {
font-size: 1.5rem;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 0.5rem;
letter-spacing: -0.01em;
}
.scenario-description {
font-size: 1rem;
line-height: 1.6;
color: var(--text-muted);
font-weight: 400;
}
/* Сетка фото строго 3 в ряд */
.photo-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.photo-card {
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 4px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03);
transition: all var(--transition-speed) cubic-bezier(0.16, 1, 0.3, 1);
cursor: pointer;
position: relative;
}
.photo-card:hover {
transform: translateY(-8px);
box-shadow: 0 15px 30px rgba(212, 175, 55, 0.15);
border-color: var(--accent-color);
}
/* Фиксированные пропорции 3:4 */
.image-container {
position: relative;
width: 100%;
aspect-ratio: 3 / 4;
overflow: hidden;
background-color: #151515;
}
.image-container img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.photo-card:hover .image-container img {
transform: scale(1.05);
}
.card-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(17, 17, 17, 0.6);
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity var(--transition-speed) ease;
}
.photo-card:hover .card-overlay {
opacity: 1;
}
.overlay-btn {
background-color: transparent;
color: #ffffff;
border: 1px solid #ffffff;
padding: 0.75rem 1.5rem;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.15em;
border-radius: 0;
transform: translateY(15px);
transition: all var(--transition-speed) cubic-bezier(0.16, 1, 0.3, 1);
}
.photo-card:hover .overlay-btn {
transform: translateY(0);
background-color: var(--accent-color);
border-color: var(--accent-color);
color: #111111;
}
/* Блок: Конструкция (Слева текст, справа картинка) */
.specs-block {
display: grid;
grid-template-columns: 1.1fr 0.9fr;
gap: 4rem;
align-items: center;
margin-top: 6rem;
padding-top: 5rem;
border-top: 1px solid var(--border-color);
}
.specs-left {
display: flex;
flex-direction: column;
}
.specs-title {
font-family: 'Playfair Display', serif;
font-size: 2.2rem;
font-weight: 600;
color: var(--primary-color);
line-height: 1.3;
margin-bottom: 1.5rem;
}
.specs-text {
font-size: 1.05rem;
line-height: 1.7;
color: var(--text-muted);
margin-bottom: 2rem;
}
/* Элементы параметров */
.specs-features {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
}
.feature-item {
border-left: 2px solid var(--accent-color);
padding-left: 1rem;
}
.feature-num {
font-family: 'Playfair Display', serif;
font-size: 1.6rem;
font-weight: 600;
color: var(--primary-color);
margin-bottom: 0.25rem;
}
.feature-desc {
font-size: 0.85rem;
color: var(--text-muted);
line-height: 1.4;
font-weight: 500;
}
.specs-right {
background-color: #ffffff;
border: 1px solid var(--border-color);
padding: 1.5rem;
border-radius: 6px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.02);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all var(--transition-speed) ease;
}
.specs-right:hover {
border-color: var(--accent-color);
box-shadow: 0 12px 25px rgba(212, 175, 55, 0.1);
}
.specs-image {
width: 100%;
height: auto;
display: block;
object-fit: contain;
}
/* Новый блок: Индивидуальный заказ */
.custom-size-banner {
margin-top: 4rem;
padding: 2.5rem;
background-color: var(--bg-card);
border: 1px solid var(--border-color);
border-left: 4px solid var(--accent-color);
border-radius: 4px;
display: flex;
align-items: center;
gap: 2rem;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.02);
}
.banner-icon-container {
color: var(--accent-color);
width: 48px;
height: 48px;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
}
.banner-icon-container svg {
width: 100%;
height: 100%;
}
.banner-content-wrapper {
flex: 1;
}
.banner-heading {
font-size: 1.2rem;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 0.5rem;
letter-spacing: -0.01em;
}
.banner-paragraph {
font-size: 1rem;
line-height: 1.6;
color: var(--text-muted);
font-weight: 400;
}
/* Модальное окно просмотра в полный размер */
.lightbox {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(10, 10, 10, 0.98);
z-index: 10000;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.lightbox.active {
opacity: 1;
pointer-events: auto;
}
.lightbox-content {
max-width: 90%;
max-height: 90%;
position: relative;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.lightbox-img {
max-width: 90vw;
max-height: 80vh;
object-fit: contain; /* Картинка выводится полностью без обрезок */
border: 1px solid rgba(255, 255, 255, 0.15);
box-shadow: 0 25px 60px rgba(0,0,0,0.9);
border-radius: 2px;
background-color: #111111;
}
.lightbox-caption {
color: #ffffff;
margin-top: 1.5rem;
font-size: 1.2rem;
font-weight: 400;
font-family: 'Playfair Display', serif;
letter-spacing: 0.03em;
}
.lightbox-close {
position: absolute;
top: -50px;
right: 0px;
background: none;
border: none;
color: #ffffff;
font-size: 2.5rem;
cursor: pointer;
transition: color 0.2s ease, transform 0.2s ease;
line-height: 1;
}
.lightbox-close:hover {
color: var(--accent-color);
transform: scale(1.1);
}
/* Адаптивность */
@media (max-width: 1024px) {
.photo-grid {
gap: 1.5rem;
}
.section-title {
font-size: 2.3rem;
}
.specs-block {
gap: 2.5rem;
}
}
@media (max-width: 991px) {
.specs-block {
grid-template-columns: 1fr;
gap: 3rem;
margin-top: 4rem;
padding-top: 3.5rem;
}
}
@media (max-width: 768px) {
.aspro-max-section {
padding: 3.5rem 1rem;
}
.section-title {
font-size: 1.9rem;
}
.scenario-info {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
.scenario-number {
font-size: 2.8rem;
margin-right: 0;
}
/* Скролл "в ряд" на мобильных, чтобы не нарушать сетку */
.photo-grid {
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
gap: 1.25rem;
padding-bottom: 1.5rem;
scrollbar-width: thin;
scrollbar-color: var(--accent-color) var(--border-color);
}
.photo-grid::-webkit-scrollbar {
height: 4px;
}
.photo-grid::-webkit-scrollbar-thumb {
background-color: var(--accent-color);
border-radius: 2px;
}
.photo-card {
min-width: 280px;
scroll-snap-align: start;
flex-shrink: 0;
}
.custom-size-banner {
flex-direction: column;
align-items: flex-start;
gap: 1.25rem;
padding: 1.75rem;
margin-top: 3rem;
}
}
01
Основа дизайна (Главный акцент)
Рамка проектируется как неотъемлемая часть памятника. Она задает общую геометрию, пропорции и стиль всего памятника.
В полный размер
В полный размер
В полный размер
02
Баланс композиции
Решение для случаев, когда рамку невозможно или не хочется монтировать прямо на памятник — например, из-за сложной формы стелы или чтобы не перегружать её гравировкой.
В полный размер
В полный размер
В полный размер
03
Дополнение мемориала
Универсальный способ дополнить и благоустроить мемориал. Рамка устанавливается в любой части комплекса — чаще всего на горизонтальную могильную плиту, в цветник или на гранитную ограду. Идеально, если нужно добавить портрет на уже установленный памятник.
В полный размер
В полный размер
В полный размер
Конструкция и монтаж ниши
Конструкция гранитной рамки оптимизирована под установку портрета. Мы предусмотрели технологический зазор в 2 мм с каждой стороны под медальон. Наличие этого зазора значительно упрощает центровку и фиксацию изделия, исключая сложности при подгонке деталей.
18х24 см
Размер внутреннего медальона
+2 мм
Зазор под центровку и клей
Индивидуальные размеры
Также мы предлагаем возможность изготовления гранитных рамок по индивидуальным размерам заказчика. Это позволяет адаптировать изделие под медальон любого нестандартного формата.
×
/* Резервная заглушка на случай ошибок с загрузкой основных фото */
function handleImageError(imageElement) {
const fallbackSvg = `data:image/svg+xml;charset=utf-8,` + encodeURIComponent(`
РАМКА 3:4
`);
imageElement.src = fallbackSvg;
}
/* Специальный векторный интерактивный рендер чертежа при ошибке (для Preview) */
function handleDrawingError(imageElement) {
const fallbackSvg = `data:image/svg+xml;charset=utf-8,` + encodeURIComponent(`
Ниша под медальон 18х24
(для рамок и стел)
32мм
21мм
12мм
21мм
32мм
226мм
286мм
`);
imageElement.src = fallbackSvg;
}
/* Лайтбокс */
function openLightbox(cardElement) {
const img = cardElement.querySelector('img');
const lightbox = document.getElementById('customLightbox');
const lightboxImg = document.getElementById('lightboxImg');
const lightboxCaption = document.getElementById('lightboxCaption');
lightboxImg.src = img.src;
lightboxCaption.textContent = img.alt || "Просмотр рамки";
lightbox.classList.add('active');
}
function closeLightbox() {
const lightbox = document.getElementById('customLightbox');
lightbox.classList.remove('active');
}
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
closeLightbox();
}
});