@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@300;400;500;600;700;800&family=Barlow+Condensed:wght@600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');
:root {
--doz-cyan: #06B6D4;
--doz-violet: #7C3AED;
--doz-teal: #14B8A6;
--doz-indigo: #6366F1;
--doz-dark: #060D1F;
--doz-surface:#0F1D35;
--doz-border: rgba(6,182,212,0.15);
--doz-text: #E8F4FF;
--doz-muted: #4A7FA0;
}
*, body, p, div, span, a, button, input, select, textarea, td, th, li {
font-family: 'Barlow', sans-serif !important;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Barlow Condensed', sans-serif !important;
font-weight: 700 !important;
letter-spacing: -0.3px;
}
code, pre {
font-family: 'JetBrains Mono', monospace !important;
}
html {
scroll-behavior: smooth;
}
* {
cursor: none !important;
}
#doz-cursor {
width: 12px;
height: 12px;
background: var(--doz-cyan);
border-radius: 50%;
position: fixed;
top: 0; left: 0;
pointer-events: none;
z-index: 999999;
transition: transform 0.12s ease, background 0.2s ease, width 0.2s ease, height 0.2s ease;
box-shadow: 0 0 12px rgba(6,182,212,0.7);
}
#doz-cursor-ring {
width: 36px;
height: 36px;
border: 1.5px solid rgba(6,182,212,0.5);
border-radius: 50%;
position: fixed;
top: 0; left: 0;
pointer-events: none;
z-index: 999998;
transition: transform 0.25s ease;
}
#doz-cursor.hover {
width: 20px;
height: 20px;
background: var(--doz-violet);
box-shadow: 0 0 18px rgba(124,58,237,0.8);
}
#doz-canvas {
position: fixed;
top: 0; left: 0;
width: 100%; height: 100%;
z-index: -1;
pointer-events: none;
opacity: 0.45;
}
body {
animation: dozFadeIn 0.6s ease both;
}
@keyframes dozFadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
a, button, .btn, input, select {
transition: all 0.2s ease !important;
}
#doz-toast-container {
position: fixed;
top: 24px;
right: 24px;
z-index: 999999;
display: flex;
flex-direction: column;
gap: 10px;
pointer-events: none;
}
.doz-toast {
background: var(--doz-surface);
border: 1px solid var(--doz-cyan);
border-left: 4px solid var(--doz-cyan);
color: var(--doz-text);
font-family: 'Barlow', sans-serif !important;
font-size: 14px;
font-weight: 500;
padding: 14px 20px;
border-radius: 10px;
box-shadow: 0 8px 32px rgba(6,182,212,0.2);
pointer-events: all;
animation: toastIn 0.35s cubic-bezier(0.34,1.56,0.64,1) both;
max-width: 320px;
display: flex;
align-items: center;
gap: 10px;
}
.doz-toast.success { border-color: var(--doz-teal); border-left-color: var(--doz-teal); }
.doz-toast.error { border-color: #F43F5E; border-left-color: #F43F5E; }
.doz-toast.warning { border-color: #F59E0B; border-left-color: #F59E0B; }
@keyframes toastIn {
from { opacity: 0; transform: translateX(40px) scale(0.95); }
to { opacity: 1; transform: translateX(0) scale(1); }
}
@keyframes toastOut {
from { opacity: 1; transform: translateX(0) scale(1); }
to { opacity: 0; transform: translateX(40px) scale(0.9); }
}
#doz-payment-notice {
background: linear-gradient(90deg, rgba(124,58,237,0.15), rgba(6,182,212,0.1));
border: 1px solid rgba(124,58,237,0.3);
border-radius: 10px;
padding: 12px 20px;
margin: 16px 0;
font-size: 13px;
color: #C4B5FD;
display: flex;
align-items: center;
gap: 10px;
}
#doz-payment-notice strong { color: #A78BFA; }
(function () {
const canvas = document.createElement('canvas');
canvas.id = 'doz-canvas';
document.body.prepend(canvas);
const ctx = canvas.getContext('2d');
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
resizeCanvas();
window.addEventListener('resize', resizeCanvas);
const COLORS = ['rgba(6,182,212,', 'rgba(124,58,237,', 'rgba(20,184,166,'];
const particles = Array.from({ length: 55 }, () => ({
x: Math.random() * window.innerWidth,
y: Math.random() * window.innerHeight,
r: Math.random() * 1.8 + 0.4,
vx: (Math.random() - 0.5) * 0.35,
vy: (Math.random() - 0.5) * 0.35,
color: COLORS[Math.floor(Math.random() * COLORS.length)],
alpha: Math.random() * 0.5 + 0.2,
}));
function drawParticles() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (let i = 0; i < particles.length; i++) {
for (let j = i + 1; j < particles.length; j++) {
const dx = particles[i].x - particles[j].x;
const dy = particles[i].y - particles[j].y;
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 130) {
ctx.beginPath();
ctx.moveTo(particles[i].x, particles[i].y);
ctx.lineTo(particles[j].x, particles[j].y);
ctx.strokeStyle = `rgba(6,182,212,${0.08 * (1 - dist / 130)})`;
ctx.lineWidth = 0.5;
ctx.stroke();
}
}
}
particles.forEach(p => {
p.x += p.vx;
p.y += p.vy;
if (p.x < 0 || p.x > canvas.width) p.vx *= -1;
if (p.y < 0 || p.y > canvas.height) p.vy *= -1;
ctx.beginPath();
ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
ctx.fillStyle = p.color + p.alpha + ')';
ctx.fill();
});
requestAnimationFrame(drawParticles);
}
drawParticles();
const cursor = document.createElement('div');
const cursorRing = document.createElement('div');
cursor.id = 'doz-cursor';
cursorRing.id = 'doz-cursor-ring';
document.body.appendChild(cursor);
document.body.appendChild(cursorRing);
let mx = 0, my = 0, rx = 0, ry = 0;
document.addEventListener('mousemove', e => {
mx = e.clientX;
my = e.clientY;
cursor.style.transform = `translate(${mx - 6}px, ${my - 6}px)`;
});
(function animateRing() {
rx += (mx - rx) * 0.12;
ry += (my - ry) * 0.12;
cursorRing.style.transform = `translate(${rx - 18}px, ${ry - 18}px)`;
requestAnimationFrame(animateRing);
})();
document.querySelectorAll('a, button, input, select, textarea, .btn').forEach(el => {
el.addEventListener('mouseenter', () => cursor.classList.add('hover'));
el.addEventListener('mouseleave', () => cursor.classList.remove('hover'));
});
const toastContainer = document.createElement('div');
toastContainer.id = 'doz-toast-container';
document.body.appendChild(toastContainer);
window.dozNotify = function (message, type = 'info', duration = 4000) {
const icons = { info: '💠', success: '✅', error: '❌', warning: '⚠️' };
const toast = document.createElement('div');
toast.className = `doz-toast ${type}`;
toast.innerHTML = `${icons[type] || '💠'}${message}`;
toastContainer.appendChild(toast);
setTimeout(() => {
toast.style.animation = 'toastOut 0.3s ease forwards';
setTimeout(() => toast.remove(), 300);
}, duration);
};
window.addEventListener('load', () => {
setTimeout(() => dozNotify('Welcome to DozHost! 🚀', 'info', 4000), 800);
});
document.addEventListener('click', function (e) {
const el = e.target.closest('a, button');
if (!el) return;
const text = (el.innerText || el.textContent || el.getAttribute('href') || '').toLowerCase();
const isDanger = text.includes('delete') || text.includes('cancel service') ||
text.includes('terminate') || text.includes('remove') ||
el.classList.contains('btn-danger') ||
(el.getAttribute('href') || '').includes('delete') ||
(el.getAttribute('href') || '').includes('cancel');
if (isDanger) {
e.preventDefault();
e.stopImmediatePropagation();
if (confirm('⚠️ DozHost\n\nAre you sure you want to delete or cancel this service?\nThis action cannot be undone.')) {
el.removeEventListener('click', arguments.callee);
el.click();
}
}
}, true);
const DISCORD_INVITE = 'https://discord.gg/EMDTCrDsRY';
const discordBtn = document.createElement('div');
discordBtn.innerHTML = `
Join Discord
`;
document.body.appendChild(discordBtn);
window.addEventListener('load', () => {
const isPaymentPage = /cart|checkout|invoice|order/.test(location.href);
if (isPaymentPage) {
const notice = document.createElement('div');
notice.id = 'doz-payment-notice';
notice.innerHTML = `💳 Manual Payments Only. After ordering, contact us on Discord to complete payment and activate your service.`;
const main = document.querySelector('main, .main-content, #main, .container, body');
if (main) main.prepend(notice);
setTimeout(() => dozNotify('⚠️ Manual payments only — contact us on Discord after ordering.', 'warning', 7000), 1200);
}
});
})();