ffffffff
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DiplomatShop — Сборки Minecraft серверов</title>
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png">
<link rel="apple-touch-icon" href="favicon.png">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--primary: #6b7280;
--primary-dark: #4b5563;
--primary-light: #9ca3af;
--accent: #6b7280;
--accent-pink: #9ca3af;
--bg-dark: #0a0a0a;
--bg-card: #141414;
--bg-card-hover: #1a1a1a;
--glass: rgba(107, 114, 128, 0.06);
--glass-border: rgba(107, 114, 128, 0.12);
--text-primary: #ffffff;
--text-secondary: #9ca3af;
--text-muted: #6b7280;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg-dark);
color: var(--text-primary);
overflow-x: hidden;
min-height: 100vh;
}
.bg-gradient {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -2;
background: var(--bg-dark);
}
.gradient-orb {
position: fixed;
z-index: -2;
opacity: 0.12;
}
.orb-1 {
width: 100%;
height: 100%;
top: 0;
left: 0;
background:
radial-gradient(ellipse 80% 50% at 20% 40%, rgba(107, 114, 128, 0.5) 0%, transparent 70%),
radial-gradient(ellipse 60% 80% at 80% 20%, rgba(75, 85, 99, 0.4) 0%, transparent 60%);
animation: flowLines1 25s ease-in-out infinite;
}
.orb-2 {
width: 100%;
height: 100%;
top: 0;
left: 0;
background:
radial-gradient(ellipse 50% 100% at 50% 80%, rgba(107, 114, 128, 0.4) 0%, transparent 60%),
radial-gradient(ellipse 100% 40% at 70% 50%, rgba(156, 163, 175, 0.3) 0%, transparent 50%);
animation: flowLines2 30s ease-in-out infinite;
animation-delay: -5s;
}
@keyframes flowLines1 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(20px, -10px) scale(1.03); }
}
@keyframes flowLines2 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(-20px, 15px) scale(1.05); }
}
.mesh-gradient {
position: fixed;
inset: 0;
z-index: -1;
background:
radial-gradient(at 30% 30%, rgba(107, 114, 128, 0.08) 0px, transparent 50%),
radial-gradient(at 70% 70%, rgba(75, 85, 99, 0.06) 0px, transparent 50%),
radial-gradient(at 50% 50%, rgba(156, 163, 175, 0.04) 0px, transparent 60%);
animation: meshMove 20s ease-in-out infinite;
}
@keyframes meshMove {
0%, 100% { opacity: 1; transform: scale(1) rotate(0deg); }
50% { opacity: 0.8; transform: scale(1.03) rotate(0.5deg); }
}
.particles {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
overflow: hidden;
pointer-events: none;
}
.particle {
position: absolute;
width: 2px;
height: 2px;
background: var(--primary-light);
border-radius: 50%;
opacity: 0;
animation: snowFloat linear infinite;
box-shadow: 0 0 6px rgba(156, 163, 175, 0.5);
}
@keyframes snowFloat {
0% { transform: translateY(-10vh) translateX(0) rotate(0deg); opacity: 0; }
5% { opacity: 0.4; }
95% { opacity: 0.4; }
100% { transform: translateY(110vh) translateX(var(--drift, 100px)) rotate(360deg); opacity: 0; }
}
.noise {
position: fixed;
inset: 0;
z-index: -1;
opacity: 0.015;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
pointer-events: none;
}
/* Abstract Flowing Lines */
.flowing-lines {
position: fixed;
inset: 0;
z-index: -1;
overflow: hidden;
pointer-events: none;
}
.flow-svg {
position: absolute;
width: 120%;
height: 120%;
top: -10%;
left: -10%;
}
.flow-1 {
animation: flowWave1 15s ease-in-out infinite;
opacity: 0.7;
}
.flow-2 {
animation: flowWave2 20s ease-in-out infinite;
animation-delay: -7s;
opacity: 0.5;
}
@keyframes flowWave1 {
0%, 100% { transform: translateX(0) translateY(0); }
50% { transform: translateX(-2%) translateY(1%); }
}
@keyframes flowWave2 {
0%, 100% { transform: translateX(0) translateY(0); }
50% { transform: translateX(2%) translateY(-1%); }
}
.flow-svg path {
stroke-dasharray: 2000;
stroke-dashoffset: 2000;
animation: drawLine 6s ease-in-out infinite;
}
.flow-1 path:nth-child(1) { animation-delay: 0s; }
.flow-1 path:nth-child(2) { animation-delay: 2s; }
.flow-1 path:nth-child(3) { animation-delay: 4s; }
.flow-2 path:nth-child(1) { animation-delay: 1s; }
.flow-2 path:nth-child(2) { animation-delay: 3s; }
.flow-2 path:nth-child(3) { animation-delay: 5s; }
@keyframes drawLine {
0% { stroke-dashoffset: 2000; opacity: 0; }
15% { opacity: 0.6; }
85% { opacity: 0.6; }
100% { stroke-dashoffset: 0; opacity: 0; }
}
header {
padding: 2rem 5%;
display: flex;
justify-content: center;
align-items: center;
position: relative;
z-index: 10;
}
.logo {
font-size: 1.5rem;
font-weight: 800;
color: #ffffff;
letter-spacing: -0.02em;
padding: 0.65rem 2rem 0.65rem 3.25rem;
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 100px;
box-shadow: 0 0 40px rgba(255, 255, 255, 0.03), inset 0 1px 0 rgba(255, 255, 255, 0.05);
position: relative;
overflow: hidden;
transition: all 0.3s ease;
text-shadow: 0 0 20px rgba(255, 255, 255, 0.3);
}
.logo::before {
content: '';
position: absolute;
left: 0.7rem;
top: 50%;
transform: translateY(-50%);
width: 30px;
height: 30px;
background-image: url('image.png');
background-size: cover;
background-repeat: no-repeat;
background-position: center;
border-radius: 6px;
filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.3));
}
.logo:hover {
color: #ffffff;
border-color: rgba(255, 255, 255, 0.25);
box-shadow: 0 0 60px rgba(255, 255, 255, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.08);
transform: translateY(-2px);
text-shadow: 0 0 30px rgba(255, 255, 255, 0.5);
}
.hero {
text-align: center;
padding: 3rem 5% 5rem;
position: relative;
}
.hero h1 {
font-size: clamp(2.5rem, 6vw, 4rem);
font-weight: 800;
line-height: 1.1;
margin-bottom: 1.5rem;
color: #ffffff;
text-shadow: 0 0 60px rgba(255, 255, 255, 0.25), 0 0 120px rgba(255, 255, 255, 0.1), 0 0 180px rgba(255, 255, 255, 0.05);
animation: fadeInUp 0.8s ease-out;
}
.hero p {
font-size: 1.125rem;
color: var(--text-secondary);
max-width: 600px;
margin: 0 auto;
line-height: 1.6;
animation: fadeInUp 0.8s ease-out 0.2s both;
}
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(40px); }
to { opacity: 1; transform: translateY(0); }
}
.scroll-hidden {
opacity: 0;
transform: translateY(40px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.scroll-visible {
opacity: 1;
transform: translateY(0);
animation: fadeInUp 0.6s ease-out forwards;
}
.section-title {
text-align: center;
margin: 4rem 0 3rem;
font-size: 1.75rem;
font-weight: 700;
color: #ffffff;
animation: fadeInUp 0.6s ease-out;
text-shadow: 0 0 50px rgba(255, 255, 255, 0.2), 0 0 100px rgba(255, 255, 255, 0.08);
}
.cards-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 2rem;
padding: 0 5% 6rem;
max-width: 1400px;
margin: 0 auto;
}
.card {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 1.5rem;
overflow: hidden;
cursor: pointer;
transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
position: relative;
animation: fadeInUp 0.6s ease-out both;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
will-change: transform;
}
.card:hover {
transform: translateY(-8px) scale(1.02);
border-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6), 0 0 40px rgba(255, 255, 255, 0.08);
}
.card-image {
width: 100%;
height: 200px;
position: relative;
overflow: hidden;
}
.card-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.card:hover .card-image img {
transform: scale(1.1);
}
.card-image::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(to top, var(--bg-card) 0%, transparent 60%);
}
.card-content {
padding: 1.5rem;
position: relative;
z-index: 1;
}
.card-badge {
display: inline-block;
padding: 0.35rem 0.75rem;
background: rgba(107, 114, 128, 0.15);
border: 1px solid rgba(107, 114, 128, 0.3);
border-radius: 2rem;
font-size: 0.75rem;
font-weight: 600;
color: #9ca3af;
margin-bottom: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.card h3 {
font-size: 1.25rem;
font-weight: 700;
margin-bottom: 0.5rem;
color: #ffffff;
line-height: 1.3;
text-shadow: 0 0 20px rgba(255, 255, 255, 0.1);
}
.card p {
color: var(--text-secondary);
font-size: 0.9rem;
line-height: 1.5;
margin-bottom: 1rem;
}
.card-footer {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 1rem;
border-top: 1px solid var(--glass-border);
}
.price {
font-size: 1.5rem;
font-weight: 800;
color: #ffffff;
text-shadow: 0 0 15px rgba(255, 255, 255, 0.2);
}
.version {
font-size: 0.875rem;
color: var(--text-muted);
font-weight: 500;
}
/* ===== WHY US SECTION ===== */
.why-us-section {
padding: 2rem 5% 6rem;
max-width: 1400px;
margin: 0 auto;
}
.why-us-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 1.5rem;
}
.why-us-card {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 1.5rem;
padding: 2rem 1.75rem;
text-align: center;
transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
position: relative;
overflow: hidden;
animation: fadeInUp 0.6s ease-out both;
}
.why-us-card:nth-child(1) { animation-delay: 0.05s; }
.why-us-card:nth-child(2) { animation-delay: 0.1s; }
.why-us-card:nth-child(3) { animation-delay: 0.15s; }
.why-us-card:nth-child(4) { animation-delay: 0.2s; }
.why-us-card::before {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 60%;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.why-us-card:hover {
transform: translateY(-8px) scale(1.02);
border-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5), 0 0 30px rgba(255, 255, 255, 0.06);
}
.why-us-card:hover::before {
opacity: 1;
}
.why-icon {
width: 56px;
height: 56px;
margin: 0 auto 1.25rem;
background: linear-gradient(135deg, rgba(107, 114, 128, 0.15), rgba(75, 85, 99, 0.1));
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 1.25rem;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
}
.why-icon svg {
width: 28px;
height: 28px;
fill: rgba(255, 255, 255, 0.7);
transition: all 0.3s ease;
}
.why-us-card:hover .why-icon {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));
border-color: rgba(255, 255, 255, 0.2);
transform: scale(1.1);
box-shadow: 0 0 20px rgba(255, 255, 255, 0.1);
}
.why-us-card:hover .why-icon svg {
fill: #ffffff;
filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.4));
}
.why-us-card h3 {
font-size: 1.125rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 0.5rem;
}
.why-us-card p {
font-size: 0.875rem;
color: var(--text-secondary);
line-height: 1.6;
}
/* ===== FAQ SECTION ===== */
.faq-section {
padding: 2rem 5% 6rem;
max-width: 800px;
margin: 0 auto;
}
.faq-list {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.faq-item {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 1.25rem;
overflow: hidden;
transition: all 0.3s ease;
animation: fadeInUp 0.5s ease-out both;
}
.faq-item:nth-child(1) { animation-delay: 0.05s; }
.faq-item:nth-child(2) { animation-delay: 0.1s; }
.faq-item:nth-child(3) { animation-delay: 0.15s; }
.faq-item:nth-child(4) { animation-delay: 0.2s; }
.faq-item:nth-child(5) { animation-delay: 0.25s; }
.faq-item:hover {
border-color: rgba(255, 255, 255, 0.15);
}
.faq-question {
width: 100%;
padding: 1.25rem 1.5rem;
background: none;
border: none;
color: #ffffff;
font-family: inherit;
font-size: 0.9375rem;
font-weight: 600;
text-align: left;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
transition: color 0.3s ease;
}
.faq-question:hover {
color: var(--text-secondary);
}
.faq-icon {
width: 20px;
height: 20px;
flex-shrink: 0;
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
color: var(--text-muted);
}
.faq-icon svg {
width: 100%;
height: 100%;
fill: currentColor;
}
.faq-item.active .faq-icon {
transform: rotate(180deg);
color: #ffffff;
}
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), padding 0.4s ease;
}
.faq-item.active .faq-answer {
max-height: 300px;
}
.faq-answer-inner {
padding: 0 1.5rem 1.25rem;
color: var(--text-secondary);
font-size: 0.875rem;
line-height: 1.7;
}
/* ===== GUARANTEES SECTION ===== */
.guarantees-section {
padding: 2rem 5% 6rem;
max-width: 1200px;
margin: 0 auto;
}
.guarantees-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
justify-items: center;
}
.guarantee-card {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 1.5rem;
padding: 2rem 1.75rem;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 1.25rem;
transition: all 0.35s ease;
animation: fadeInUp 0.6s ease-out both;
max-width: 360px;
width: 100%;
}
.guarantee-card:nth-child(1) { animation-delay: 0.05s; }
.guarantee-card:nth-child(2) { animation-delay: 0.1s; }
.guarantee-card:nth-child(3) { animation-delay: 0.15s; }
.guarantee-card:hover {
border-color: rgba(255, 255, 255, 0.2);
transform: translateY(-4px);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5), 0 0 30px rgba(255, 255, 255, 0.06);
}
.guarantee-icon {
width: 56px;
height: 56px;
flex-shrink: 0;
background: linear-gradient(135deg, rgba(107, 114, 128, 0.15), rgba(75, 85, 99, 0.1));
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 1.25rem;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
}
.guarantee-icon svg {
width: 28px;
height: 28px;
fill: rgba(255, 255, 255, 0.7);
transition: all 0.3s ease;
}
.guarantee-card:hover .guarantee-icon {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));
border-color: rgba(255, 255, 255, 0.2);
transform: scale(1.1);
box-shadow: 0 0 20px rgba(255, 255, 255, 0.1);
}
.guarantee-card:hover .guarantee-icon svg {
fill: #ffffff;
filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.4));
}
.guarantee-content h4 {
font-size: 1.125rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 0.5rem;
}
.guarantee-content p {
font-size: 0.875rem;
color: var(--text-secondary);
line-height: 1.6;
}
/* ===== TESTIMONIALS SECTION ===== */
.testimonials-section {
padding: 2rem 5% 6rem;
max-width: 1400px;
margin: 0 auto;
position: relative;
}
.testimonials-header {
text-align: center;
margin-bottom: 3rem;
}
.testimonials-header h2 {
font-size: 1.75rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 0.75rem;
text-shadow: 0 0 50px rgba(255, 255, 255, 0.2), 0 0 100px rgba(255, 255, 255, 0.08);
animation: fadeInUp 0.6s ease-out;
}
.testimonials-header p {
color: var(--text-secondary);
font-size: 1rem;
max-width: 500px;
margin: 0 auto;
line-height: 1.6;
animation: fadeInUp 0.6s ease-out 0.1s both;
}
.testimonials-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 1.5rem;
}
.testimonial-card {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 1.5rem;
padding: 1.75rem;
position: relative;
overflow: hidden;
transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
border-color 0.3s ease,
box-shadow 0.3s ease;
animation: fadeInUp 0.6s ease-out both;
display: flex;
flex-direction: column;
gap: 1rem;
}
.testimonial-card:nth-child(1) { animation-delay: 0.05s; }
.testimonial-card:nth-child(2) { animation-delay: 0.1s; }
.testimonial-card:nth-child(3) { animation-delay: 0.15s; }
.testimonial-card:nth-child(4) { animation-delay: 0.2s; }
.testimonial-card:nth-child(5) { animation-delay: 0.25s; }
.testimonial-card:nth-child(6) { animation-delay: 0.3s; }
.testimonial-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.testimonial-card:hover {
transform: translateY(-6px) scale(1.01);
border-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5), 0 0 30px rgba(255, 255, 255, 0.06);
}
.testimonial-card:hover::before {
opacity: 1;
}
.testimonial-quote-icon {
width: 32px;
height: 32px;
color: rgba(255, 255, 255, 0.08);
flex-shrink: 0;
}
.testimonial-quote-icon svg {
width: 100%;
height: 100%;
fill: currentColor;
}
.testimonial-text {
color: var(--text-secondary);
font-size: 0.9375rem;
line-height: 1.7;
position: relative;
z-index: 1;
flex: 1;
}
.testimonial-text p {
margin: 0;
}
.testimonial-footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--glass-border);
}
.testimonial-author {
display: flex;
align-items: center;
gap: 0.875rem;
}
.author-avatar {
width: 44px;
height: 44px;
border-radius: 50%;
background: linear-gradient(135deg, rgba(107, 114, 128, 0.2), rgba(75, 85, 99, 0.15));
border: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 0.875rem;
color: #ffffff;
text-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
flex-shrink: 0;
position: relative;
overflow: hidden;
}
.author-avatar::after {
content: '';
position: absolute;
inset: 0;
border-radius: 50%;
box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.05);
}
.author-info {
display: flex;
flex-direction: column;
gap: 0.15rem;
}
.author-name {
font-weight: 600;
font-size: 0.9375rem;
color: #ffffff;
line-height: 1.3;
}
.author-meta {
font-size: 0.8125rem;
color: var(--text-muted);
display: flex;
align-items: center;
gap: 0.5rem;
}
.verified-badge {
display: inline-flex;
align-items: center;
gap: 0.25rem;
color: var(--text-muted);
font-size: 0.75rem;
}
.verified-badge svg {
width: 14px;
height: 14px;
fill: rgba(107, 114, 128, 0.6);
}
.testimonial-rating {
display: flex;
gap: 0.15rem;
flex-shrink: 0;
}
.star {
width: 16px;
height: 16px;
color: rgba(255, 255, 255, 0.15);
transition: color 0.2s ease, filter 0.2s ease;
}
.star.filled {
color: #ffffff;
filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.4));
}
.star svg {
width: 100%;
height: 100%;
fill: currentColor;
}
.testimonial-card:hover .star.filled {
filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.6));
}
.testimonial-build-tag {
display: inline-flex;
align-items: center;
padding: 0.3rem 0.75rem;
background: rgba(107, 114, 128, 0.1);
border: 1px solid rgba(107, 114, 128, 0.2);
border-radius: 2rem;
font-size: 0.75rem;
font-weight: 500;
color: var(--text-muted);
margin-top: 0.5rem;
transition: all 0.3s ease;
}
.testimonial-card:hover .testimonial-build-tag {
background: rgba(255, 255, 255, 0.06);
border-color: rgba(255, 255, 255, 0.15);
color: var(--text-secondary);
}
/* ===== SUPPORT BAR ===== */
.support-bar {
position: fixed;
bottom: 1.5rem;
right: 1.5rem;
left: auto;
transform: translateY(100px);
z-index: 999;
display: flex;
gap: 0.75rem;
padding: 0.65rem 0.85rem;
background: rgba(20, 20, 20, 0.85);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 100px;
backdrop-filter: blur(20px) saturate(1.2);
-webkit-backdrop-filter: blur(20px) saturate(1.2);
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6), 0 0 30px rgba(255, 255, 255, 0.04);
opacity: 0;
transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.support-bar.visible {
transform: translateY(0);
opacity: 1;
}
.support-bar-label {
display: flex;
align-items: center;
padding: 0 0.5rem;
font-size: 0.8125rem;
font-weight: 600;
color: var(--text-muted);
white-space: nowrap;
}
.support-divider {
width: 1px;
height: 24px;
background: rgba(255, 255, 255, 0.1);
align-self: center;
}
.support-btn {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.6rem 1.1rem;
border-radius: 100px;
text-decoration: none;
font-size: 0.875rem;
font-weight: 600;
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
position: relative;
overflow: hidden;
}
.support-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.support-btn:hover::before {
left: 100%;
}
.support-btn svg {
width: 18px;
height: 18px;
fill: currentColor;
flex-shrink: 0;
}
.support-btn-tg {
background: linear-gradient(135deg, rgba(42, 171, 238, 0.15), rgba(42, 171, 238, 0.05));
border: 1px solid rgba(42, 171, 238, 0.25);
color: #2aabee;
}
.support-btn-tg:hover {
background: linear-gradient(135deg, rgba(42, 171, 238, 0.3), rgba(42, 171, 238, 0.1));
border-color: rgba(42, 171, 238, 0.5);
transform: translateY(-1px) scale(1.03);
box-shadow: 0 6px 20px rgba(42, 171, 238, 0.15);
}
.support-btn-ds {
background: linear-gradient(135deg, rgba(88, 101, 242, 0.15), rgba(88, 101, 242, 0.05));
border: 1px solid rgba(88, 101, 242, 0.25);
color: #5865f2;
}
.support-btn-ds:hover {
background: linear-gradient(135deg, rgba(88, 101, 242, 0.3), rgba(88, 101, 242, 0.1));
border-color: rgba(88, 101, 242, 0.5);
transform: translateY(-1px) scale(1.03);
box-shadow: 0 6px 20px rgba(88, 101, 242, 0.15);
}
@media (max-width: 640px) {
.support-bar {
bottom: 1rem;
right: 1rem;
padding: 0.5rem 0.65rem;
gap: 0.5rem;
}
.support-bar-label {
display: none;
}
.support-btn {
padding: 0.55rem 0.9rem;
font-size: 0.8125rem;
}
}
.modal-overlay {
position: fixed;
inset: 0;
background: rgba(5, 2, 8, 0.97);
backdrop-filter: blur(30px);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
padding: 2rem;
opacity: 0;
visibility: hidden;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.modal-overlay.active {
opacity: 1;
visibility: visible;
}
.modal-card {
background: var(--bg-card);
border: 1px solid var(--glass-border);
border-radius: 2rem;
width: 100%;
max-width: 650px;
max-height: 90vh;
overflow: hidden;
position: relative;
transform: scale(0.8) translateY(50px) rotateX(10deg);
opacity: 0;
transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
display: flex;
flex-direction: column;
box-shadow: 0 50px 100px rgba(0, 0, 0, 0.7);
}
.modal-overlay.active .modal-card {
transform: scale(1) translateY(0) rotateX(0deg);
opacity: 1;
}
@media (min-width: 768px) {
.modal-card {
aspect-ratio: 3/4;
}
}
@media (max-width: 767px) {
.modal-card {
aspect-ratio: 2/3;
max-height: 85vh;
}
}
.modal-close {
position: absolute;
top: 1.5rem;
right: 1.5rem;
width: 44px;
height: 44px;
background: rgba(20, 20, 20, 0.9);
border: 1px solid rgba(107, 114, 128, 0.3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 100;
transition: all 0.3s ease;
color: #ffffff;
font-size: 1.5rem;
backdrop-filter: blur(10px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
}
.modal-close:hover {
background: #ffffff;
border-color: #ffffff;
transform: scale(1.1);
box-shadow: 0 0 20px rgba(255, 255, 255, 0.3);
color: #0a0a0a;
}
.modal-gallery {
flex: 1;
position: relative;
overflow: hidden;
background: linear-gradient(135deg, var(--bg-card-hover) 0%, rgba(255, 255, 255, 0.03) 100%);
min-height: 0;
}
.gallery-slider {
display: flex;
height: 100%;
transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
.gallery-slide {
min-width: 100%;
height: 100%;
position: relative;
}
.gallery-slide img {
width: 100%;
height: 100%;
object-fit: cover;
}
.gallery-nav {
position: absolute;
bottom: 1.5rem;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 0.5rem;
z-index: 5;
padding: 0.5rem 1rem;
background: rgba(5, 2, 8, 0.6);
border-radius: 2rem;
backdrop-filter: blur(10px);
}
.gallery-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
border: 1px solid rgba(255, 255, 255, 0.2);
cursor: pointer;
transition:
width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
border-radius 0.4s cubic-bezier(0.4, 0, 0.2, 1),
background 0.3s ease,
box-shadow 0.3s ease;
will-change: width, border-radius;
box-shadow: 0 0 8px rgba(255, 255, 255, 0.2);
}
.gallery-dot.active {
width: 24px;
border-radius: 4px;
background: #ffffff;
box-shadow: 0 0 15px rgba(255, 255, 255, 0.5), 0 0 30px rgba(255, 255, 255, 0.2);
}
.gallery-arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 44px;
height: 44px;
background: rgba(20, 20, 20, 0.85);
border: 1px solid rgba(107, 114, 128, 0.3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 5;
transition: all 0.25s ease;
color: #9ca3af;
font-size: 1.25rem;
backdrop-filter: blur(10px);
opacity: 0;
}
.modal-gallery:hover .gallery-arrow {
opacity: 1;
}
.gallery-arrow:hover {
background: #ffffff;
border-color: #ffffff;
transform: translateY(-50%) scale(1.05);
color: #0a0a0a;
box-shadow: 0 0 15px rgba(255, 255, 255, 0.15);
}
.gallery-arrow.prev {
left: 1rem;
}
.gallery-arrow.next {
right: 1rem;
}
.gallery-arrow svg {
width: 24px;
height: 24px;
fill: currentColor;
}
.modal-content {
padding: 2rem;
background: var(--bg-card);
overflow-y: auto;
max-height: 45%;
position: relative;
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 24px, black 100%);
mask-image: linear-gradient(to bottom, transparent 0%, black 24px, black 100%);
}
.modal-content::before {
content: '';
position: sticky;
top: 0;
left: 0;
right: 0;
height: 40px;
background: linear-gradient(to bottom, var(--bg-card) 0%, transparent 100%);
z-index: 2;
pointer-events: none;
margin-top: -2rem;
margin-left: -2rem;
margin-right: -2rem;
flex-shrink: 0;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: start;
margin-bottom: 1rem;
gap: 1rem;
}
.modal-title {
font-size: 1.5rem;
font-weight: 800;
color: #ffffff;
line-height: 1.2;
text-shadow: 0 0 20px rgba(255, 255, 255, 0.1);
}
.modal-price {
font-size: 1.5rem;
font-weight: 700;
color: #ffffff;
white-space: nowrap;
text-shadow: 0 0 15px rgba(255, 255, 255, 0.2);
}
.modal-description {
color: var(--text-secondary);
line-height: 1.8;
margin-bottom: 1.5rem;
font-size: 0.95rem;
}
.modal-features {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 1.5rem;
}
.feature-tag {
padding: 0.5rem 1rem;
background: var(--glass);
border: 1px solid var(--glass-border);
border-radius: 2rem;
font-size: 0.875rem;
color: var(--text-secondary);
transition: all 0.3s;
}
.feature-tag:hover {
background: #ffffff;
color: #0a0a0a;
transform: translateY(-2px);
box-shadow: 0 0 15px rgba(255, 255, 255, 0.2);
}
.modal-actions {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.btn-funpay {
flex: 1;
min-width: 140px;
padding: 0.875rem 1.5rem;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.02) 100%);
border: 1px solid rgba(255, 255, 255, 0.18);
border-radius: 0.75rem;
color: rgba(255, 255, 255, 0.9);
font-weight: 500;
font-size: 0.9375rem;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
position: relative;
overflow: hidden;
backdrop-filter: blur(16px) saturate(1.2);
-webkit-backdrop-filter: blur(16px) saturate(1.2);
}
.btn-funpay::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.btn-funpay:hover {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.08) 100%);
border-color: rgba(255, 255, 255, 0.5);
color: #ffffff;
transform: translateY(-2px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 0 20px rgba(255, 255, 255, 0.2), 0 0 40px rgba(255, 255, 255, 0.1);
}
.btn-funpay:hover::before {
left: 100%;
}
.btn-playerok {
flex: 1;
min-width: 140px;
padding: 0.875rem 1.5rem;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.02) 100%);
border: 1px solid rgba(255, 255, 255, 0.18);
border-radius: 0.75rem;
color: rgba(255, 255, 255, 0.9);
font-weight: 500;
font-size: 0.9375rem;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
position: relative;
overflow: hidden;
backdrop-filter: blur(16px) saturate(1.2);
-webkit-backdrop-filter: blur(16px) saturate(1.2);
}
.btn-playerok::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.btn-playerok:hover {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.08) 100%);
border-color: rgba(255, 255, 255, 0.5);
color: #ffffff;
transform: translateY(-2px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 0 20px rgba(255, 255, 255, 0.2), 0 0 40px rgba(255, 255, 255, 0.1);
}
.btn-playerok:hover::before {
left: 100%;
}
footer {
text-align: center;
padding: 3rem 5%;
border-top: 1px solid var(--glass-border);
color: var(--text-muted);
font-size: 0.875rem;
}
footer a {
color: var(--accent);
text-decoration: none;
transition: color 0.3s;
}
footer a:hover {
color: var(--accent-pink);
}
@media (max-width: 768px) {
.cards-container {
grid-template-columns: 1fr;
padding: 0 1rem 4rem;
}
.hero {
padding: 2rem 1rem 3rem;
}
.modal-actions {
flex-direction: column;
}
.btn-funpay, .btn-playerok {
width: 100%;
}
.gallery-arrow {
opacity: 1;
width: 40px;
height: 40px;
}
.modal-content {
padding: 1.5rem;
}
.modal-title {
font-size: 1.25rem;
}
.logo {
font-size: 1.25rem;
padding: 0.6rem 1.5rem 0.6rem 3rem;
}
.testimonials-section,
.why-us-section,
.stats-section,
.faq-section,
.guarantees-section {
padding: 2rem 1rem 4rem;
}
.why-us-grid {
grid-template-columns: 1fr;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
.guarantees-grid {
grid-template-columns: 1fr;
justify-items: center;
}
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-dark);
}
::-webkit-scrollbar-thumb {
background: #6b7280;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #ffffff;
box-shadow: 0 0 10px rgba(255, 255, 255, 0.2);
}
</style>
<base target="_blank">
<base target="_blank">
<base target="_blank">
</head>
<body>
<div class="bg-gradient"></div>
<div class="gradient-orb orb-1"></div>
<div class="gradient-orb orb-2"></div>
<div class="mesh-gradient"></div>
<div class="noise"></div>
<div class="particles" id="particles"></div>
<!-- Abstract Flowing Lines Background -->
<div class="flowing-lines">
<svg class="flow-svg flow-1" viewBox="0 0 1440 900" preserveAspectRatio="none">
<path d="M-100,200 C200,100 400,300 700,200 S1100,100 1540,250" stroke="rgba(107,114,128,0.25)" stroke-width="1.5" fill="none"/>
<path d="M-100,500 C250,400 450,600 750,500 S1150,350 1540,550" stroke="rgba(75,85,99,0.2)" stroke-width="1" fill="none"/>
<path d="M-100,800 C300,700 500,900 800,800 S1200,650 1540,850" stroke="rgba(156,163,175,0.12)" stroke-width="1.5" fill="none"/>
</svg>
<svg class="flow-svg flow-2" viewBox="0 0 1440 900" preserveAspectRatio="none">
<path d="M-100,150 C250,50 450,250 750,150 S1150,0 1540,200" stroke="rgba(107,114,128,0.18)" stroke-width="1.5" fill="none"/>
<path d="M-100,450 C300,350 500,550 800,450 S1200,300 1540,500" stroke="rgba(75,85,99,0.15)" stroke-width="1.5" fill="none"/>
<path d="M-100,750 C200,650 400,850 700,750 S1100,600 1540,800" stroke="rgba(156,163,175,0.1)" stroke-width="1" fill="none"/>
</svg>
</div>
<header>
<div class="logo">DiplomatShop</div>
</header>
<section class="hero">
<h1>Премиум сборки<br>Minecraft серверов</h1>
<p>Уникальные сборки с продуманной экономикой, кастомными плагинами и идеальным балансом.</p>
</section>
<h2 class="section-title">Наши сборки</h2>
<div class="cards-container" id="cardsContainer"></div>
<!-- ===== WHY US SECTION ===== -->
<section class="why-us-section">
<div class="testimonials-header">
<h2>Почему выбирают нас</h2>
<p>То, что отличает DiplomatShop от других продавцов</p>
</div>
<div class="why-us-grid">
<div class="why-us-card">
<div class="why-icon">
<svg viewBox="0 0 24 24"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z"/></svg>
</div>
<h3>Безопасная покупка</h3>
<p>Все сделки проходят через проверенные площадки Funpay и Playerok с защитой сделки</p>
</div>
<div class="why-us-card">
<div class="why-icon">
<svg viewBox="0 0 24 24"><path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.488.488 0 0 0-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84a.484.484 0 0 0-.48.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96a.488.488 0 0 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.27.41.48.41h3.84c.24 0 .44-.17.48-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/></svg>
</div>
<h3>Техподдержка 24/7</h3>
<p>Отвечаем в Telegram и Discord в любое время. Помогаем с установкой и настройкой</p>
</div>
<div class="why-us-card">
<div class="why-icon">
<svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>
</div>
<h3>Гарантия работы</h3>
<p>Каждая сборка тестируется перед продажей. Если что-то не работает — вернём деньги</p>
</div>
<div class="why-us-card">
<div class="why-icon">
<svg viewBox="0 0 24 24"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"/></svg>
</div>
<h3>Бесплатные обновления</h3>
<p>Все покупатели получают обновления сборок бесплатно и пожизненно</p>
</div>
</div>
</section>
<!-- ===== GUARANTEES SECTION ===== -->
<section class="guarantees-section">
<div class="testimonials-header">
<h2>Гарантии</h2>
<p>Мы заботимся о вашем спокойствии</p>
</div>
<div class="guarantees-grid">
<div class="guarantee-card">
<div class="guarantee-icon">
<svg viewBox="0 0 24 24"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg>
</div>
<div class="guarantee-content">
<h4>Защита сделки</h4>
<p>Все покупки проходят через гаранта Funpay/Playerok. Деньги блокируются до получения товара</p>
</div>
</div>
<div class="guarantee-card">
<div class="guarantee-icon">
<svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
</div>
<div class="guarantee-content">
<h4>Возврат средств</h4>
<p>Если сборка не запускается или не соответствует описанию — вернём деньги в течение 7 дней</p>
</div>
</div>
<div class="guarantee-card">
<div class="guarantee-icon">
<svg viewBox="0 0 24 24"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"/></svg>
</div>
<div class="guarantee-content">
<h4>Безопасность данных</h4>
<p>Мы не храним и не передаём ваши персональные данные третьим лицам</p>
</div>
</div>
</div>
</section>
<!-- ===== FAQ SECTION ===== -->
<section class="faq-section">
<div class="testimonials-header">
<h2>Частые вопросы</h2>
<p>Ответы на самые популярные вопросы покупателей</p>
</div>
<div class="faq-list" id="faqList">
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Как происходит покупка сборки?</span>
<span class="faq-icon"><svg viewBox="0 0 24 24"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg></span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Вы выбираете сборку, нажимаете кнопку покупки на Funpay или Playerok. После оплаты получаете ссылку на скачивание файлов и подробную инструкцию по установке. Весь процесс занимает не более 5 минут.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Нужны ли дополнительные плагины?</span>
<span class="faq-icon"><svg viewBox="0 0 24 24"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg></span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Нет, все сборки идут с полным набором необходимых плагинов и модов. Вам нужен только сервер ядра (Paper/Spigot/Forge в зависимости от сборки), которое мы также предоставляем в комплекте.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Можно ли изменить сборку под себя?</span>
<span class="faq-icon"><svg viewBox="0 0 24 24"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg></span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Абсолютно! Все файлы открыты для редактирования. Вы можете менять конфиги, добавлять свои плагины, редактировать карты и текстуры. Мы даже оставляем комментарии в конфигах для удобства.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Какая версия Java требуется?</span>
<span class="faq-icon"><svg viewBox="0 0 24 24"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg></span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Для сборок 1.16+ рекомендуется Java 17. Для более старых версий подойдёт Java 8 или 11. Точные требования указаны в описании каждой сборки. Мы помогаем с настройкой Java при необходимости.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Что делать, если сборка не запускается?</span>
<span class="faq-icon"><svg viewBox="0 0 24 24"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/></svg></span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Сначала проверьте соответствие версии Java и выделенной оперативной памяти. Если проблема остаётся — напишите нам в Telegram или Discord, мы поможем разобраться. В крайнем случае вернём деньги.
</div>
</div>
</div>
</div>
</section>
<!-- ===== TESTIMONIALS SECTION ===== -->
<section class="testimonials-section" id="testimonialsSection">
<div class="testimonials-header">
<h2>Отзывы покупателей</h2>
<p>Что говорят владельцы серверов о наших сборках</p>
</div>
<div class="testimonials-grid" id="testimonialsGrid"></div>
</section>
<!-- ===== SUPPORT BAR ===== -->
<div class="support-bar" id="supportBar">
<a href="https://t.me/DipShopSupport_bot" target="_blank" class="support-btn support-btn-tg">
<svg viewBox="0 0 24 24"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.479.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>
Telegram
</a>
<a href="https://discord.gg/jaycobmoretto" target="_blank" class="support-btn support-btn-ds">
<svg viewBox="0 0 24 24"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>
Discord
</a>
</div>
<div class="modal-overlay" id="modal">
<div class="modal-card">
<button class="modal-close" onclick="closeModal()">×</button>
<div class="modal-gallery">
<div class="gallery-slider" id="gallerySlider"></div>
<button class="gallery-arrow prev" onclick="changeImage(-1)">
<svg viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>
</button>
<button class="gallery-arrow next" onclick="changeImage(1)">
<svg viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>
</button>
<div class="gallery-nav" id="galleryNav"></div>
</div>
<div class="modal-content" id="modalContent">
<div class="modal-header">
<h3 class="modal-title" id="modalTitle"></h3>
<span class="modal-price" id="modalPrice"></span>
</div>
<p class="modal-description" id="modalDescription"></p>
<div class="modal-features" id="modalFeatures"></div>
<div class="modal-actions">
<a href="https://funpay.com" target="_blank" class="btn-funpay">Купить на Funpay</a>
<a href="https://playerok.com" target="_blank" class="btn-playerok">Купить на Playerok</a>
</div>
</div>
</div>
</div>
<footer>
<p>© 2026 DiplomatShop. Все права защищены. <br>
Покупки осуществляются через <a href="https://funpay.com" target="_blank">Funpay</a> и <a href="https://playerok.com" target="_blank">Playerok</a></p>
</footer>
<script>
const particlesContainer = document.getElementById('particles');
const particleCount = 30;
for (let i = 0; i < particleCount; i++) {
const particle = document.createElement('div');
particle.className = 'particle';
const startY = Math.random() * 100;
particle.style.top = startY + '%';
particle.style.left = Math.random() * 100 + '%';
particle.style.animationDuration = (8 + Math.random() * 12) + 's';
particle.style.animationDelay = (Math.random() * -20) + 's';
particle.style.setProperty('--drift', ((Math.random() - 0.5) * 150) + 'px');
const size = 1 + Math.random() * 2.5;
particle.style.width = size + 'px';
particle.style.height = size + 'px';
particlesContainer.appendChild(particle);
}
const builds = [
{
id: 1,
title: "RPG Legends",
shortDesc: "Эпическая RPG с системой прокачки и боссами",
fullDescription: `RPG Legends — это глубокая ролевая сборка, приглашающая вас в мир, где история пишется каждым вашим решением, а не навязанным сценарием. Система развития персонажа здесь поистине безгранична: более сотни уникальных навыков, от скрытных приёмов убийцы до разрушительных заклинаний архимага, позволяют собирать класс, который никто до вас не видел. Вы можете создать мастера ловушек, управляющего полем боя, или целителя, чьи молитвы обращают нежить в бегство — и всё это без жёсткой привязки к стандартным ролям. Каждое повышение уровня открывает не просто цифры, а новые тактические возможности, а неочевидные комбинации умений порой приводят к уникальным, «скрытым» стихийным реакциям.
Мир RPG Legends дышит опасностью и тайной. Эпические боссы — не просто мешки с хитами, каждый из них обладает собственной уникальной механикой, которую придётся разгадывать. Один монстр может копировать ваши заклинания, другой — перестраивать арену в реальном времени, а третий и вовсе атакует через ваше же снаряжение, заставляя искать нестандартные подходы. Сюжетная кампания, включающая более полусотни глубоких квестов, не отпускает до самого финала, подкидывая моральные дилеммы и ветвящиеся диалоги, где ваши союзники и враги запоминают каждое слово.
Исследование мира никогда не надоедает благодаря кастомным данжам с процедурной генерацией — каждый заход в подземелье дарит новую схему комнат, расположение ловушек и типов врагов, так что знакомый склеп сегодня может обернуться гигантским лабиринтом с лавовыми озёрами. А когда становится слишком опасно в одиночку, в игру вступает глубокая система гильдий: вы можете объединяться с другими искателями приключений, возводить общий зал, делиться редкими рецептами и совместно открывать особые гильдийные рейды, где без слаженной команды не выжить. И главное — разработчики не бросают этот мир на полпути. Регулярные обновления добавляют свежих боссов, целые сюжетные арки и неожиданные механики, превращая RPG Legends в живой, постоянно эволюционирующий проект, где ваша легенда никогда не заканчивается.`,
price: "2 990 ₽",
version: "1.20.1",
category: "RPG",
coverImage: "https://images.unsplash.com/photo-1542751371-adc38448a05e?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1542751371-adc38448a05e?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1511512578047-dfb367046420?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1538481199705-c710c4e965fc?w=800&h=1000&fit=crop"
],
features: ["100+ навыков", "50+ квестов", "20 боссов", "Кастомные данжи", "Система гильдий"]
},
{
id: 2,
title: "SkyBlock Empire",
shortDesc: "Продвинутый SkyBlock с автоматизацией",
fullDescription: "SkyBlock Empire — новый уровень классического режима. Автоматизированные фермы, торговая система между игроками, рейтинговые острова и регулярные ивенты. Система престижей позволяет начать заново с бонусами. Кастомные крафты открывают доступ к уникальным предметам. Идеально для экономических серверов.",
price: "1 490 ₽",
version: "1.19.4",
category: "SkyBlock",
coverImage: "https://images.unsplash.com/photo-1614726365723-49cfae927846?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1614726365723-49cfae927846?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&h=1000&fit=crop"
],
features: ["Авто-фермы", "Торговля", "Рейтинги", "Ивенты", "Кастомные крафты"]
},
{
id: 3,
title: "Anarchy Core",
shortDesc: "Чистый хардкор без правил и доната",
fullDescription: "Anarchy Core для тех, кто ищет настоящий вызов. Без привилегий, без доната, только чистый PvP. Оптимизированная сборка для 500+ онлайна с анти-читом премиум-класса. Кастомная генерация мира, система кланов и регулярные вайпы сохраняют динамику.",
price: "3 490 ₽",
version: "1.20.4",
category: "Anarchy",
coverImage: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1509198397868-475647b2a1e5?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1550745165-9bc0b252726f?w=800&h=1000&fit=crop"
],
features: ["500+ слотов", "Анти-чит", "Без доната", "PvP", "Вайпы"]
},
{
id: 4,
title: "Pixelmon World",
shortDesc: "900+ покемонов в мире Minecraft",
fullDescription: "Pixelmon World объединяет лучшее из двух миров. 900+ покемонов с кастомной системой битв, гимы с лидерами, регулярные турниры и торговля. Полная интеграция с механиками Minecraft. Система достижений и коллекционирования для долгосрочной игры.",
price: "4 990 ₽",
version: "1.16.5",
category: "Pixelmon",
coverImage: "https://images.unsplash.com/photo-1605901309584-818e25960a8f?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1605901309584-818e25960a8f?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1542779283-4290f7455c5c?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1579373903781-fd5c0c30c4cd?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1612036782180-6f0b6cd846fe?w=800&h=1000&fit=crop"
],
features: ["900+ покемонов", "Гимы", "Турниры", "Торговля", "Достижения"]
},
{
id: 5,
title: "Prison Elite",
shortDesc: "Классическая тюрьма с ивентами",
fullDescription: "Prison Elite возрождает классический режим. Шахты с редкими ресурсами, система престижей, кланы с территориями и PvP-арены. Ежедневные ивенты с ценными призами, кастомные зачарования и торговые лавки.",
price: "2 290 ₽",
version: "1.20.1",
category: "Prison",
coverImage: "https://images.unsplash.com/photo-1563089145-599997674d42?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1563089145-599997674d42?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=800&h=1000&fit=crop"
],
features: ["Престижи", "Кланы", "PvP-арены", "Ивенты", "Шахты"]
},
{
id: 6,
title: "Survival Plus",
shortDesc: "Усложнённое выживание с реализмом",
fullDescription: "Survival Plus делает обычное выживание необычным. Система температуры и жажды, кастомные биомы, новые измерения и боссы. Усложнённый крафт, сезонная система и прокачка навыков для настоящего челленджа.",
price: "1 990 ₽",
version: "1.20.2",
category: "Survival",
coverImage: "https://images.unsplash.com/photo-1448375240586-882707db888b?w=800&h=600&fit=crop",
images: [
"https://images.unsplash.com/photo-1448375240586-882707db888b?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1511497584788-876760111969?w=800&h=1000&fit=crop",
"https://images.unsplash.com/photo-1507041957456-9c397ce39c97?w=800&h=1000&fit=crop"
],
features: ["Температура", "Жажда", "Биомы", "Измерения", "Навыки"]
}
];
const container = document.getElementById('cardsContainer');
builds.forEach((build, index) => {
const card = document.createElement('div');
card.className = 'card';
card.style.animationDelay = `${index * 0.1}s`;
card.innerHTML = `
<div class="card-image">
<img src="${build.coverImage}" alt="${build.title}" loading="lazy">
</div>
<div class="card-content">
<span class="card-badge">${build.category}</span>
<h3>${build.title}</h3>
<p>${build.shortDesc}</p>
<div class="card-footer">
<span class="price">${build.price}</span>
<span class="version">${build.version}</span>
</div>
</div>
`;
card.onclick = () => openModal(build);
container.appendChild(card);
});
// ===== FAQ TOGGLE =====
function toggleFaq(btn) {
const item = btn.parentElement;
const isActive = item.classList.contains('active');
// Close all
document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('active'));
// Open clicked if wasn't active
if (!isActive) {
item.classList.add('active');
}
}
// ===== SUPPORT BAR VISIBILITY =====
function initSupportBar() {
const bar = document.getElementById('supportBar');
let shown = false;
window.addEventListener('scroll', () => {
if (window.scrollY > 400 && !shown) {
bar.classList.add('visible');
shown = true;
}
});
}
// ===== TESTIMONIALS DATA & RENDER =====
const testimonials = [
{
id: 1,
name: "Артём",
initials: "А",
text: "Купил RPG Legends для своего проекта. Сборка оказалась ещё круче, чем я ожидал. Система прокачки реально затягивает, игроки в восторге. Техподдержка ответила на все вопросы за пару часов.",
rating: 5,
build: "RPG Legends",
verified: true
},
{
id: 2,
name: "Максим",
initials: "М",
text: "SkyBlock Empire — это именно то, что искал. Авто-фермы работают идеально, торговая система между игроками добавила серверу жизни. Окупился за неделю.",
rating: 5,
build: "SkyBlock Empire",
verified: true
},
{
id: 3,
name: "Даниил",
initials: "Д",
text: "Anarchy Core выдерживает 400+ онлайна без лагов. Анти-чит ловит даже приватные читы, что для анархии — редкость. Вайпы проходят чисто, без багов.",
rating: 5,
build: "Anarchy Core",
verified: true
},
{
id: 4,
name: "Иван",
initials: "И",
text: "Pixelmon World — сборка мечты. 900+ покемонов, и все работают корректно. Гимы с лидерами добавили соревновательный дух, турниры собирают полный онлайн.",
rating: 5,
build: "Pixelmon World",
verified: true
},
{
id: 5,
name: "Александр",
initials: "А",
text: "Prison Elite оказался отличным вложением. Система престижей заставляет игроков возвращаться снова и снова. Ивенты проходят автоматически, админам делать почти ничего не надо.",
rating: 4,
build: "Prison Elite",
verified: true
},
{
id: 6,
name: "Никита",
initials: "Н",
text: "Survival Plus добавил серверу хардкора, который так не хватало. Система температуры и жажды заставляет игроков думать, а не просто бегать. Кастомные биомы — просто космос.",
rating: 5,
build: "Survival Plus",
verified: true
}
];
function renderStars(rating) {
let html = '';
for (let i = 1; i <= 5; i++) {
const filled = i <= rating ? 'filled' : '';
html += `
<span class="star ${filled}">
<svg viewBox="0 0 24 24">
<path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>
</svg>
</span>
`;
}
return html;
}
const testimonialsGrid = document.getElementById('testimonialsGrid');
testimonials.forEach((t, index) => {
const card = document.createElement('div');
card.className = 'testimonial-card';
card.style.animationDelay = `${index * 0.05}s`;
card.innerHTML = `
<div class="testimonial-quote-icon">
<svg viewBox="0 0 24 24">
<path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
</svg>
</div>
<div class="testimonial-text">
<p>${t.text}</p>
</div>
<div class="testimonial-build-tag">${t.build}</div>
<div class="testimonial-footer">
<div class="testimonial-author">
<div class="author-avatar">${t.initials}</div>
<div class="author-info">
<span class="author-name">${t.name}</span>
<span class="author-meta">
<span class="verified-badge">
<svg viewBox="0 0 24 24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
Проверенный покупатель
</span>
</span>
</div>
</div>
<div class="testimonial-rating">
${renderStars(t.rating)}
</div>
</div>
`;
testimonialsGrid.appendChild(card);
});
let currentBuild = null;
let currentImageIndex = 0;
function openModal(build) {
currentBuild = build;
currentImageIndex = 0;
document.getElementById('modalContent').scrollTop = 0;
document.getElementById('modalTitle').textContent = build.title;
document.getElementById('modalPrice').textContent = build.price;
document.getElementById('modalDescription').textContent = build.fullDescription;
const featuresContainer = document.getElementById('modalFeatures');
featuresContainer.innerHTML = build.features.map(f => `<span class="feature-tag">${f}</span>`).join('');
const slider = document.getElementById('gallerySlider');
slider.innerHTML = build.images.map((img, i) => `
<div class="gallery-slide">
<img src="${img}" alt="${build.title} ${i + 1}">
</div>
`).join('');
slider.style.transform = 'translateX(0)';
updateGalleryNav();
document.getElementById('modal').classList.add('active');
document.body.style.overflow = 'hidden';
}
function closeModal() {
document.getElementById('modal').classList.remove('active');
document.body.style.overflow = '';
}
function updateGallery() {
const slider = document.getElementById('gallerySlider');
slider.style.transform = `translateX(-${currentImageIndex * 100}%)`;
const dots = document.querySelectorAll('.gallery-dot');
dots.forEach((dot, i) => {
if (i === currentImageIndex) {
dot.classList.add('active');
} else {
dot.classList.remove('active');
}
});
}
function updateGalleryNav() {
const nav = document.getElementById('galleryNav');
nav.innerHTML = currentBuild.images.map((_, i) => `
<div class="gallery-dot ${i === currentImageIndex ? 'active' : ''}" onclick="goToImage(${i})"></div>
`).join('');
}
function changeImage(direction) {
currentImageIndex = (currentImageIndex + direction + currentBuild.images.length) % currentBuild.images.length;
updateGallery();
}
function goToImage(index) {
currentImageIndex = index;
updateGallery();
}
document.getElementById('modal').onclick = (e) => {
if (e.target === document.getElementById('modal')) {
closeModal();
}
};
document.addEventListener('keydown', (e) => {
if (!document.getElementById('modal').classList.contains('active')) return;
if (e.key === 'Escape') closeModal();
if (e.key === 'ArrowLeft') changeImage(-1);
if (e.key === 'ArrowRight') changeImage(1);
});
let touchStartX = 0;
let touchEndX = 0;
const modalGallery = document.querySelector('.modal-gallery');
modalGallery.addEventListener('touchstart', (e) => {
touchStartX = e.changedTouches[0].screenX;
});
modalGallery.addEventListener('touchend', (e) => {
touchEndX = e.changedTouches[0].screenX;
if (touchEndX < touchStartX - 50) changeImage(1);
if (touchEndX > touchStartX + 50) changeImage(-1);
});
// Init
initSupportBar();
</script>
</body>
</html>