<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3월 2일 오늘의 별자리 운세</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Noto Sans KR', sans-serif;
background-color: #0f172a; /* Fallback */
}
.glass-card {
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.animate-float {
animation: float 6s ease-in-out infinite;
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0px); }
}
.star {
position: absolute;
background: white;
border-radius: 50%;
opacity: 0;
animation: twinkle var(--duration) ease-in-out infinite;
animation-delay: var(--delay);
}
@keyframes twinkle {
0% { opacity: 0; transform: scale(0.5); }
50% { opacity: var(--opacity); transform: scale(1); }
100% { opacity: 0; transform: scale(0.5); }
}
</style>
</head>
<body class="relative min-h-screen overflow-x-hidden bg-gradient-to-b from-[#0f172a] via-[#1e1b4b] to-[#312e81] text-white">
<!-- Star Background (Generated by JS) -->
<div id="stars-container" class="absolute inset-0 pointer-events-none z-0"></div>
<main class="relative z-10 mx-auto max-w-lg px-6 py-8 pb-20">
<!-- Header -->
<header class="text-center mb-8">
<p class="text-indigo-300 text-sm font-medium tracking-wider mb-2">2026년 1월 12일 월요일</p>
<h1 class="text-2xl font-bold text-white mb-1">오늘의 별자리 운세</h1>
<p class="text-slate-400 text-xs">양력 3월 2일생 (물고기자리)</p>
</header>
<!-- Main Symbol Card -->
<div class="glass-card rounded-3xl p-8 text-center mb-8 shadow-2xl shadow-indigo-500/20 relative overflow-hidden">
<div class="absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-transparent via-cyan-400 to-transparent opacity-50"></div>
<div class="animate-float mb-6 inline-block p-4 rounded-full bg-indigo-500/20 shadow-inner ring-1 ring-white/20">
<!-- Pisces SVG Icon -->
<svg class="w-16 h-16 text-cyan-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z" opacity="0.2"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" opacity="0"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 01-8 0"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12c0 4 2 8 4 8s4-4 4-8-2-8-4-8-4 4-4 8z"></path>
<!-- Simple Pisces representation lines -->
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 18s2-4 2-6-2-6-2-6M17 18s-2-4-2-6 2-6 2-6M4 12h16"></path>
</svg>
</div>
<h2 class="text-xl font-bold text-white mb-2">물고기자리</h2>
<p class="text-cyan-200 text-sm font-medium mb-4">"감성과 현실 사이의 균형"</p>
<p class="text-slate-300 leading-relaxed text-sm">
오늘 당신은 풍부한 상상력과 예술적인 영감이 돋보이는 하루를 보내게 됩니다. 흐르는 물처럼 유연한 태도가 행운을 불러옵니다.
</p>
</div>
<!-- Detail Cards Grid -->
<div class="grid grid-cols-1 gap-4 mb-8">
<!-- Love Luck -->
<div class="glass-card rounded-2xl p-5 flex items-start space-x-4 hover:bg-white/10 transition-colors duration-300">
<div class="bg-pink-500/20 p-2.5 rounded-xl text-pink-300">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path></svg>
</div>
<div>
<h3 class="font-bold text-pink-200 text-sm mb-1">애정운</h3>
<p class="text-xs text-slate-300 leading-relaxed">
감수성이 풍부해져 상대방의 마음을 깊이 이해할 수 있습니다. 로맨틱한 분위기를 연출하기 좋지만, 대화는 명확하게 하세요.
</p>
</div>
</div>
<!-- Money Luck -->
<div class="glass-card rounded-2xl p-5 flex items-start space-x-4 hover:bg-white/10 transition-colors duration-300">
<div class="bg-yellow-500/20 p-2.5 rounded-xl text-yellow-300">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
</div>
<div>
<h3 class="font-bold text-yellow-200 text-sm mb-1">재물/비즈니스</h3>
<p class="text-xs text-slate-300 leading-relaxed">
큰 돈이 오가는 결정이나 무리한 투자는 피하는 것이 안전합니다. 내실을 다지며 현재 상황을 점검하는 것이 유리합니다.
</p>
</div>
</div>
</div>
<!-- Lucky Items Section -->
<h3 class="text-sm font-bold text-indigo-300 mb-3 uppercase tracking-wider ml-1">Today's Lucky</h3>
<div class="grid grid-cols-3 gap-3">
<!-- Item 1 -->
<div class="glass-card rounded-xl p-3 text-center flex flex-col items-center justify-center aspect-square">
<span class="text-2xl mb-1">💧</span>
<span class="text-xs text-slate-400">아이템</span>
<span class="text-sm font-bold text-white">수분크림</span>
</div>
<!-- Item 2 -->
<div class="glass-card rounded-xl p-3 text-center flex flex-col items-center justify-center aspect-square">
<div class="w-6 h-6 rounded-full bg-cyan-200 mb-1 border-2 border-white/30"></div>
<span class="text-xs text-slate-400">색상</span>
<span class="text-sm font-bold text-white">파스텔톤</span>
</div>
<!-- Item 3 -->
<div class="glass-card rounded-xl p-3 text-center flex flex-col items-center justify-center aspect-square">
<span class="text-2xl font-serif italic text-purple-300 mb-1">7</span>
<span class="text-xs text-slate-400">숫자</span>
<span class="text-sm font-bold text-white">7, 22</span>
</div>
</div>
<!-- Action Button -->
<div class="mt-10 text-center">
<button onclick="copyLuck()" class="group relative px-6 py-3 font-bold text-white rounded-full bg-gradient-to-r from-indigo-500 to-purple-600 shadow-lg shadow-indigo-500/40 hover:shadow-indigo-500/60 transition-all active:scale-95">
<span class="relative flex items-center gap-2">
<span>운세 복사하기</span>
<svg class="w-4 h-4 group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg>
</span>
</button>
<div id="toast" class="fixed bottom-10 left-1/2 transform -translate-x-1/2 bg-white text-slate-900 px-4 py-2 rounded-full text-sm font-bold shadow-xl opacity-0 transition-opacity duration-300 pointer-events-none">
복사되었습니다! ✨
</div>
</div>
</main>
<script>
// Star Background Generation
document.addEventListener('DOMContentLoaded', () => {
const container = document.getElementById('stars-container');
const starCount = 50;
for (let i = 0; i < starCount; i++) {
const star = document.createElement('div');
star.classList.add('star');
// Random positioning
const x = Math.random() * 100;
const y = Math.random() * 100;
const size = Math.random() * 2 + 1; // 1px to 3px
const duration = Math.random() * 3 + 2; // 2s to 5s
const delay = Math.random() * 5;
const opacity = Math.random() * 0.7 + 0.3;
star.style.left = `${x}%`;
star.style.top = `${y}%`;
star.style.width = `${size}px`;
star.style.height = `${size}px`;
star.style.setProperty('--duration', `${duration}s`);
star.style.setProperty('--delay', `${delay}s`);
star.style.setProperty('--opacity', opacity);
container.appendChild(star);
}
});
// Copy Functionality
function copyLuck() {
const text = `[3월 2일 물고기자리 운세]\n"감성과 현실 사이의 균형이 필요한 날"\n\n총운: 흐르는 물처럼 유연한 태도가 행운을 불러옵니다.\n애정운: 로맨틱한 분위기를 연출하기 좋습니다.\n재물운: 큰 투자는 피하고 내실을 다지세요.\n행운의 아이템: 수분크림, 파스텔톤, 숫자 7`;
// Clipboard API usage fallback for iframes
const textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand('copy');
showToast();
} catch (err) {
console.error('Unable to copy', err);
}
document.body.removeChild(textArea);
}
function showToast() {
const toast = document.getElementById('toast');
toast.style.opacity = '1';
toast.style.transform = 'translate(-50%, -10px)';
setTimeout(() => {
toast.style.opacity = '0';
toast.style.transform = 'translate(-50%, 0)';
}, 2000);
}
</script>
</body>
</html>