Hello world!

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>근처 여성 매칭 | 18+ 랜덤 LINE 소개팅</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
user-select: none;
}
body {
font-family: 'Noto Sans KR', sans-serif;
background: radial-gradient(circle at 10% 30%, #1a0c12, #0a0510);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
position: relative;
}
/* 18+ warning bg */
.overlay-18 {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.85);
backdrop-filter: blur(6px);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-weight: bold;
transition: 0.3s;
}
.warning-card {
background: #111;
padding: 40px 30px;
border-radius: 60px 30px 60px 30px;
text-align: center;
border: 2px solid #ff3366;
max-width: 380px;
animation: pulseRed 1s infinite;
}
@keyframes pulseRed {
0% { box-shadow: 0 0 0 0 #ff336680; }
100% { box-shadow: 0 0 0 15px rgba(255,51,102,0); }
}
.warning-card h1 {
font-size: 4rem;
color: #ff3366;
}
.warning-card button {
background: #ff3366;
border: none;
padding: 12px 28px;
margin-top: 20px;
font-size: 1.2rem;
font-weight: bold;
border-radius: 60px;
cursor: pointer;
color: white;
}
.main-container {
max-width: 550px;
width: 100%;
background: rgba(22, 12, 28, 0.9);
backdrop-filter: blur(10px);
border-radius: 70px 50px 70px 50px;
box-shadow: 0 30px 45px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 80, 120, 0.3);
overflow: hidden;
transition: all 0.3s;
opacity: 0;
transform: scale(0.96);
pointer-events: none;
}
.main-container.show {
opacity: 1;
transform: scale(1);
pointer-events: auto;
}
.header {
background: linear-gradient(125deg, #c9184a, #ff4d6d);
padding: 28px 20px;
text-align: center;
color: white;
}
.header i {
font-size: 48px;
filter: drop-shadow(2px 6px 8px black);
}
.header h1 {
font-size: 2rem;
margin-top: 8px;
letter-spacing: -1px;
}
.badge {
background: #2d0a14;
display: inline-block;
padding: 6px 14px;
border-radius: 50px;
font-size: 0.8rem;
margin-top: 10px;
}
.content {
padding: 32px 24px;
}
.profile-girl {
background: #1f1420;
border-radius: 48px;
padding: 20px;
text-align: center;
margin-bottom: 30px;
border: 1px solid #ff4d6d55;
}
/* AVATAR với ảnh sexy từ link bạn cung cấp */
.avatar {
width: 130px;
height: 130px;
margin: 0 auto 16px;
border-radius: 50%;
overflow: hidden;
border: 3px solid #ff90aa;
box-shadow: 0 8px 20px rgba(0,0,0,0.5);
background: #2e1c24;
}
.avatar img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.name-age {
font-size: 24px;
font-weight: 800;
color: #ffe0e7;
}
.location {
color: #ff90aa;
font-size: 0.8rem;
margin: 8px 0;
}
.random-btn {
background: linear-gradient(95deg, #ff2e63, #b90e3a);
width: 100%;
border: none;
padding: 22px 12px;
border-radius: 70px;
font-size: 1.8rem;
font-weight: 900;
font-family: 'Noto Sans KR', sans-serif;
color: white;
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
cursor: pointer;
transition: 0.2s;
box-shadow: 0 10px 20px rgba(255, 30, 80, 0.5);
margin: 15px 0 10px;
}
.random-btn:active {
transform: scale(0.97);
}
.info-note {
background: #20141c;
padding: 16px;
border-radius: 48px;
text-align: center;
font-size: 0.7rem;
color: #dd8ca0;
margin-top: 20px;
}
footer {
background: #0e0712;
text-align: center;
padding: 16px;
font-size: 0.7rem;
color: #ab7e8c;
}
@media (max-width: 500px) {
.random-btn {
font-size: 1.4rem;
padding: 16px;
}
.header h1 {
font-size: 1.5rem;
}
.avatar {
width: 100px;
height: 100px;
}
}
</style>
</head>
<body>
<div class="overlay-18" id="ageGate">
<div class="warning-card">
<h1>🔞 18+</h1>
<p style="margin: 15px 0; font-size: 1rem;">본 사이트는 성인 데이트 콘텐츠를 포함합니다.<br>만 18세 미만은 이용할 수 없습니다.</p>
<p>📌 모든 프로필은 랜덤 LINE 연결</p>
<button id="confirmAge">✅ 입장하기 (성인 인증)</button>
</div>
</div>
<div class="main-container" id="mainApp">
<div class="header">
<i class="fas fa-female"></i>
<h1>근처 여성 💘<br>랜덤 매칭</h1>
<div class="badge"><i class="fas fa-shield-alt"></i> 19금 · 즉시 LINE 연결</div>
</div>
<div class="content">
<div class="profile-girl">
<!-- AVATAR HÌNH ẢNH CÔ GÁI SEXY -->
<div class="avatar">
<img src="https://hotgirl.edu.vn/upload/2026/04/hot-girl-han-quoc-mac-vay-ngan-ca-tinh-khoe-dang-thon-gon-870_1775911251.webp" alt="sexy hot girl Hàn Quốc">
</div>
<div class="name-age" id="randomName">🎲 랜덤 여성</div>
<div class="location" id="randomLoc">서울 · 강남 / 용산 / 홍대</div>
<div style="font-size: 12px; margin-top: 12px; color:#ff99b4;">
<i class="fab fa-line"></i> <span id="lineHint">클릭 시 다른 LINE ID 연결</span>
</div>
</div>
<button class="random-btn" id="randomMatchBtn">
<i class="fas fa-random"></i>
랜덤 짝짓기
<i class="fab fa-line"></i>
</button>
<div class="info-note">
<i class="fas fa-heartbeat"></i> 매칭 방법 : 버튼 클릭 → 랜덤 LINE 프로필로 이동<br>
🔞 18+ 전용, 실제 근처 여성 매칭 느낌
</div>
</div>
<footer>
<i class="fas fa-map-marker-alt"></i> 근처 여성 (가상 프로필) | 즉시 LINE 오픈채팅
</footer>
</div>
<script>
// ---------- DANH SÁCH LINE ID ----------
const LINE_IDS = [
"dgha_6u",
"hsdg_36",
"sgh_1829"
];
// Danh sách tên + vị trí ngẫu nhiên (chỉ để giao diện thêm sinh động)
const fakeProfiles = [
{ name: "하윤 (20)", loc: "강남구 · 역삼동" },
{ name: "서연 (22)", loc: "홍대입구 · 상수동" },
{ name: "지우 (21)", loc: "건대입구 · 자양동" },
{ name: "수빈 (23)", loc: "신촌 · 이대 앞" },
{ name: "민지 (24)", loc: "잠실실내 · 송파구" },
{ name: "채원 (20)", loc: "용산 · 한강로" },
{ name: "예진 (21)", loc: "을지로 · 명동" },
{ name: "소민 (22)", loc: "성수동 · 카페거리" }
];
// DOM elements
const ageGate = document.getElementById('ageGate');
const mainApp = document.getElementById('mainApp');
const confirmBtn = document.getElementById('confirmAge');
const randomBtn = document.getElementById('randomMatchBtn');
const randomNameSpan = document.getElementById('randomName');
const randomLocSpan = document.getElementById('randomLoc');
const lineHintSpan = document.getElementById('lineHint');
// Xác nhận 18+
confirmBtn.addEventListener('click', () => {
ageGate.style.display = 'none';
mainApp.classList.add('show');
});
// Hàm random một phần tử từ mảng
function randomItem(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}
// Hàm cập nhật giao diện random (tên + vị trí ảo)
function updateFakeProfile() {
const randomProfile = randomItem(fakeProfiles);
randomNameSpan.innerText = randomProfile.name;
randomLocSpan.innerText = randomProfile.loc;
}
// Hàm mở link LINE random dựa trên LINE_IDS
function openRandomLine() {
if (!LINE_IDS.length) {
alert("⚠️ LINE ID 목록이 비어있습니다.");
return;
}
const randomId = randomItem(LINE_IDS);
const lineUrl = `https://line.me/ti/p/${randomId}`;
lineHintSpan.innerText = `⚡ 연결중: ${randomId}`;
setTimeout(() => {
lineHintSpan.innerText = `ID 변경됨 (다음 클릭시 랜덤)`;
}, 1200);
window.open(lineUrl, '_blank');
}
// Khi nhấn nút RANDOM:
function handleRandomClick() {
updateFakeProfile(); // đổi tên + vị trí (ảo)
openRandomLine(); // mở link LINE thật random
const btn = randomBtn;
btn.style.transform = "scale(0.96)";
setTimeout(() => { btn.style.transform = ""; }, 120);
}
randomBtn.addEventListener('click', handleRandomClick);
// Khởi tạo lần đầu
updateFakeProfile();
lineHintSpan.innerText = "✨ 랜덤 LINE 연결 준비";
console.log("✅ 18+ 사이트 활성화 | 랜덤 LINE ID:", LINE_IDS);
console.log("✅ Avatar đã được gán ảnh sexy Hàn Quốc");
</script>
</body>
</html>