book / index.html
nkjoy's picture
λ””μžμΈ κ°œμ„ μ’€ν•΄μ€˜ - Follow Up Deployment
2158466 verified
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ν•„μˆ˜ 뢁마크 (μƒˆν„°λ―Όμ„ μœ„ν•œ)</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
:root {
--primary-color: #6C5CE7;
--secondary-color: #00CEFF;
--text-color: #2D3436;
--light-bg: linear-gradient(135deg, #f5f7fa 0%, #e4e8f0 100%);
--card-bg: rgba(255, 255, 255, 0.9);
--border-color: rgba(108, 92, 231, 0.2);
--shadow-light: rgba(108, 92, 231, 0.15);
--glass-effect: rgba(255, 255, 255, 0.25);
--glass-border: rgba(255, 255, 255, 0.3);
}
body {
font-family: 'Noto Sans KR', sans-serif;
line-height: 1.6;
color: var(--text-color);
margin: 0;
padding: 20px;
background: var(--light-bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
min-height: 100vh;
}
h1 {
text-align: center;
color: var(--primary-color);
margin-bottom: 15px;
font-weight: 800;
font-size: 2.5em;
text-shadow: 0 2px 10px rgba(108, 92, 231, 0.2);
letter-spacing: -0.5px;
}
p.description {
text-align: center;
color: #777;
margin-bottom: 30px;
font-size: 1.1em;
}
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); /* κΈ°λ³Έ 1μ—΄ */
gap: 25px;
max-width: 1200px;
margin: 0 auto;
}
/* 아이폰 15 κ°€λ‘œ λͺ¨λ“œμ—μ„œλ„ 2열이 λ‚˜μ˜€λ„λ‘ min-width μ‘°μ • */
@media (min-width: 480px) { /* 480px μ΄μƒμ—μ„œ 2μ—΄ */
.container {
grid-template-columns: repeat(2, minmax(280px, 1fr));
}
}
@media (min-width: 992px) { /* 큰 νƒœλΈ”λ¦Ώ 및 λ°μŠ€ν¬ν†±μ—μ„œ 4μ—΄ */
.container {
grid-template-columns: repeat(4, minmax(280px, 1fr));
}
}
.top-list {
background: var(--glass-effect);
border-radius: 16px;
box-shadow: 0 8px 32px var(--shadow-light);
padding: 25px;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
border: 1px solid var(--glass-border);
}
.top-list:hover {
transform: translateY(-8px);
box-shadow: 0 12px 40px rgba(108, 92, 231, 0.25);
}
.top-list h2 {
color: var(--primary-color);
font-size: 1.6em;
margin-top: 0;
margin-bottom: 20px;
padding-bottom: 12px;
border-bottom: 2px solid var(--primary-color);
display: flex;
align-items: center;
font-weight: 700;
letter-spacing: -0.5px;
}
.top-list h2 .icon {
margin-right: 10px;
font-size: 1.2em;
}
.rank-item {
display: flex;
align-items: center;
padding: 12px 0;
border-bottom: 1px dashed var(--border-color);
font-size: 1.05em;
transition: all 0.2s ease;
}
.rank-item:hover {
background: rgba(108, 92, 231, 0.05);
border-radius: 8px;
padding-left: 10px;
}
.rank-item:last-child {
border-bottom: none;
}
.rank {
font-size: 0.95em;
color: #e74c3c;
font-weight: 700;
margin-right: 12px;
width: 25px;
text-align: center;
flex-shrink: 0;
}
.site-link {
text-decoration: none;
color: var(--primary-color);
flex-grow: 1;
transition: all 0.3s ease;
display: flex;
align-items: center;
font-weight: 600;
}
.site-link:hover {
color: var(--secondary-color);
text-decoration: none;
transform: translateX(5px);
}
.new-badge {
background: linear-gradient(135deg, var(--secondary-color) 0%, #00B4DB 100%);
color: #fff;
padding: 4px 8px;
border-radius: 6px;
font-size: 0.8em;
margin-left: 8px;
font-weight: 700;
white-space: nowrap;
box-shadow: 0 2px 8px rgba(0, 206, 255, 0.3);
}
/* Admin Panel Styles */
.admin-panel {
position: fixed;
top: 20px;
right: 20px;
z-index: 1000;
}
.admin-btn {
background: linear-gradient(135deg, rgba(108, 92, 231, 0.3) 0%, rgba(0, 206, 255, 0.3) 100%);
color: white;
border: none;
padding: 10px 20px;
border-radius: 12px;
cursor: pointer;
font-weight: 600;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
border: 1px solid var(--glass-border);
box-shadow: 0 8px 32px rgba(108, 92, 231, 0.3);
position: relative;
overflow: hidden;
letter-spacing: 0.5px;
}
.admin-btn:hover {
background: linear-gradient(135deg, rgba(108, 92, 231, 0.5) 0%, rgba(0, 206, 255, 0.5) 100%);
box-shadow: 0 12px 40px rgba(108, 92, 231, 0.4);
transform: translateY(-2px);
}
.admin-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.6),
transparent
);
transition: 0.7s;
animation: shine 3s infinite;
}
@keyframes shine {
0% {
left: -100%;
}
20% {
left: 100%;
}
100% {
left: 100%;
}
}
.admin-btn:hover::before {
animation: none;
left: 100%;
}
.login-form {
display: none;
position: absolute;
right: 0;
top: 45px;
background: var(--glass-effect);
padding: 20px;
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
width: 220px;
backdrop-filter: blur(15px);
border: 1px solid var(--glass-border);
animation: fadeIn 0.3s ease;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
.admin-pw {
width: 100%;
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
.login-btn {
width: 100%;
padding: 10px;
background: linear-gradient(135deg, rgba(0, 206, 255, 0.5) 0%, rgba(108, 92, 231, 0.5) 100%);
color: white;
border: none;
border-radius: 12px;
cursor: pointer;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
border: 1px solid var(--glass-border);
box-shadow: 0 4px 20px rgba(108, 92, 231, 0.3);
position: relative;
overflow: hidden;
font-weight: 600;
letter-spacing: 0.5px;
}
.login-btn:hover {
background: linear-gradient(135deg, rgba(0, 206, 255, 0.7) 0%, rgba(108, 92, 231, 0.7) 100%);
box-shadow: 0 8px 25px rgba(108, 92, 231, 0.5);
transform: translateY(-2px);
}
.login-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.6),
transparent
);
transition: 0.7s;
animation: shine 3s infinite 0.5s;
}
.login-btn:hover::before {
animation: none;
left: 100%;
}
/* Admin Functionality Styles */
.admin-status {
display: none;
position: fixed;
top: 20px;
left: 20px;
background-color: var(--secondary-color);
color: white;
padding: 8px 15px;
border-radius: 5px;
font-weight: 500;
z-index: 1000;
}
.admin-controls {
display: none;
background-color: var(--card-bg);
padding: 20px;
border-radius: 12px;
box-shadow: 0 4px 15px var(--shadow-light);
margin-bottom: 30px;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
.admin-controls h2 {
color: var(--primary-color);
margin-top: 0;
margin-bottom: 20px;
}
.admin-form {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
gap: 15px;
margin-bottom: 15px;
}
.admin-form select,
.admin-form input {
padding: 10px;
border: 1px solid var(--border-color);
border-radius: 4px;
}
.admin-actions {
display: flex;
gap: 10px;
}
.admin-actions button {
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
font-weight: 500;
}
.add-btn {
background-color: var(--secondary-color);
color: white;
}
.update-btn {
background-color: var(--primary-color);
color: white;
}
.delete-btn {
background-color: #e74c3c;
color: white;
}
/* 이λͺ¨ν‹°μ½˜ μŠ€νƒ€μΌ */
.emoji {
margin-right: 5px;
font-size: 1.1em;
}
</style>
</head>
<body>
<div class="admin-status">κ΄€λ¦¬μž λͺ¨λ“œ</div>
<div class="admin-panel">
<button class="admin-btn">κ΄€λ¦¬μž</button>
<div class="login-form">
<input type="password" placeholder="λΉ„λ°€λ²ˆν˜Έ μž…λ ₯" class="admin-pw">
<button class="login-btn">둜그인</button>
</div>
</div>
<div class="admin-controls">
<h2>πŸ”— 링크 관리</h2>
<div class="admin-form">
<select id="category-select">
<option value="πŸ”ž 성인 Top10">πŸ”ž 성인 Top10</option>
<option value="πŸŒƒ 유ν₯ Top10">πŸŒƒ 유ν₯ Top10</option>
<option value="πŸ“š μ›Ήνˆ° Top10">πŸ“š μ›Ήνˆ° Top10</option>
<option value="πŸ“Ί λ“œλΌλ§ˆ Top10">πŸ“Ί λ“œλΌλ§ˆ Top10</option>
</select>
<input type="text" id="link-name" placeholder="μ‚¬μ΄νŠΈ 이름">
<input type="text" id="link-url" placeholder="URL">
</div>
<div class="admin-form">
<input type="text" id="link-emoji" placeholder="이λͺ¨ν‹°μ½˜">
<input type="text" id="link-rank" placeholder="μˆœμœ„ (1-10)">
<div class="admin-actions">
<button class="add-btn" id="add-link">μΆ”κ°€</button>
<button class="update-btn" id="update-link">μˆ˜μ •</button>
<button class="delete-btn" id="delete-link">μ‚­μ œ</button>
</div>
</div>
</div>
<h1>🌟 μƒˆν„°λ―Όμ„ μœ„ν•œ ν•„μˆ˜ 뢁마크 🌟</h1>
<p class="description">
ν•œκ΅­ μ‚¬νšŒ 정착에 ν•„μš”ν•œ μœ μš©ν•œ 정보와 즐길 거리λ₯Ό ν•œλˆˆμ—! <br>
μ—¬λŸ¬λΆ„μ˜ μ•ˆμ •μ μΈ ν•œκ΅­ μƒν™œμ„ μ‘μ›ν•©λ‹ˆλ‹€. 😊
</p>
<div class="container">
<div class="top-list">
<h2><span class="icon">πŸ”ž</span> 성인 Top10</h2>
<div class="rank-item"><span class="rank">1.</span> <a href="#" class="site-link"><span class="emoji">πŸ’–</span> λ ˆλ“œκ±Έ</a></div>
<div class="rank-item"><span class="rank">2.</span> <a href="#" class="site-link"><span class="emoji">πŸ₯³</span> ν˜ΌλΉ¨νŒŒν‹°</a></div>
<div class="rank-item"><span class="rank">3.</span> <a href="#" class="site-link"><span class="emoji">πŸ–€</span> 닀크걸</a></div>
<div class="rank-item"><span class="rank">4.</span> <a href="#" class="site-link"><span class="emoji">🎬</span> 야동λͺ° <span class="new-badge">New</span></a></div>
<div class="rank-item"><span class="rank">5.</span> <a href="#" class="site-link"><span class="emoji">✈️</span> μ•Όλ™νˆ¬μ–΄</a></div>
<div class="rank-item"><span class="rank">6.</span> <a href="#" class="site-link"><span class="emoji">πŸ”ž</span> 19μ–‘</a></div>
<div class="rank-item"><span class="rank">7.</span> <a href="#" class="site-link"><span class="emoji">πŸ‘</span> 색.ν”Œλ¦­μŠ€</a></div>
<div class="rank-item"><span class="rank">8.</span> <a href="#" class="site-link"><span class="emoji">πŸ‡°πŸ‡·</span> 야동코리아</a></div>
<div class="rank-item"><span class="rank">9.</span> <a href="#" class="site-link"><span class="emoji">🐚</span> 쑰개λͺ¨μ•„</a></div>
<div class="rank-item"><span class="rank">10.</span> <a href="#" class="site-link"><span class="emoji">πŸ‘‘</span> λ”Έν€Έ</a></div>
</div>
<div class="top-list">
<h2><span class="icon">πŸŒƒ</span> 유ν₯ Top10</h2>
<div class="rank-item"><span class="rank">1.</span> <a href="#" class="site-link"><span class="emoji">πŸ—ΊοΈ</span> μ˜€ν”Όκ°€μ΄λ“œ</a></div>
<div class="rank-item"><span class="rank">2.</span> <a href="#" class="site-link"><span class="emoji">⭐</span> μ˜€ν”ΌμŠ€νƒ€</a></div>
<div class="rank-item"><span class="rank">3.</span> <a href="#" class="site-link"><span class="emoji">πŸ‘οΈ</span> μ˜€ν”Όλ·°</a></div>
<div class="rank-item"><span class="rank">4.</span> <a href="#" class="site-link"><span class="emoji">πŸŒ™</span> λ°€λ†€μž</a></div>
<div class="rank-item"><span class="rank">5.</span> <a href="#" class="site-link"><span class="emoji">🀴</span> μ•Όμžμ™•</a></div>
<div class="rank-item"><span class="rank">6.</span> <a href="#" class="site-link"><span class="emoji">πŸ•Ί</span> 밀의민쑱</a></div>
<div class="rank-item"><span class="rank">7.</span> <a href="#" class="site-link"><span class="emoji">🀝</span> μ˜€ν”ΌνŒŒνŠΈ</a></div>
<div class="rank-item"><span class="rank">8.</span> <a href="#" class="site-link"><span class="emoji">πŸƒβ€β™€οΈ</span> μ¦κ±°μš΄λ‹¬λ¦¬κΈ°</a></div>
<div class="rank-item"><span class="rank">9.</span> <a href="#" class="site-link"><span class="emoji">✨</span> 유ν₯μ˜ν’ˆκ²©</a></div>
<div class="rank-item"><span class="rank">10.</span> <a href="#" class="site-link"><span class="emoji">πŸŽ‰</span> ν₯청망청</a></div>
</div>
<div class="top-list">
<h2><span class="icon">πŸ“š</span> μ›Ήνˆ° Top10</h2>
<div class="rank-item"><span class="rank">1.</span> <a href="#" class="site-link"><span class="emoji">🐾</span> νˆ°μ½”</a></div>
<div class="rank-item"><span class="rank">2.</span> <a href="#" class="site-link"><span class="emoji">πŸš€</span> λΉ λ₯Έμ›Ήνˆ°</a></div>
<div class="rank-item"><span class="rank">3.</span> <a href="#" class="site-link"><span class="emoji">πŸ“–</span> νˆ°μ½”2</a></div>
<div class="rank-item"><span class="rank">4.</span> <a href="#" class="site-link"><span class="emoji">🐰</span> 뉴토끼</a></div>
<div class="rank-item"><span class="rank">5.</span> <a href="#" class="site-link"><span class="emoji">🎨</span> μƒ‰νˆ°</a></div>
<div class="rank-item"><span class="rank">6.</span> <a href="#" class="site-link"><span class="emoji">πŸŒ™</span> μ•Όνˆ°</a></div>
<div class="rank-item"><span class="rank">7.</span> <a href="#" class="site-link"><span class="emoji">πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦</span> μ–΄λ₯Έμ›Ήνˆ°</a></div>
<div class="rank-item"><span class="rank">8.</span> <a href="#" class="site-link"><span class="emoji">🐺</span> λŠ‘λŒ€λ‹·μ»΄</a></div>
<div class="rank-item"><span class="rank">9.</span> <a href="#" class="site-link"><span class="emoji">πŸ”„</span> 툰믹슀</a></div>
<div class="rank-item"><span class="rank">10.</span> <a href="#" class="site-link"><span class="emoji">πŸ”₯</span> 짬툰</a></div>
</div>
<div class="top-list">
<h2><span class="icon">πŸ“Ί</span> λ“œλΌλ§ˆ Top10</h2>
<div class="rank-item"><span class="rank">1.</span> <a href="#" class="site-link"><span class="emoji">🍿</span> λˆ„λˆ„ν‹°λΉ„</a></div>
<div class="rank-item"><span class="rank">2.</span> <a href="#" class="site-link"><span class="emoji">πŸŽ₯</span> ν‹°λΉ„λͺ¬</a></div>
<div class="rank-item"><span class="rank">3.</span> <a href="#" class="site-link"><span class="emoji">πŸ’‘</span> ν‹°λΉ„μœ„ν‚€</a></div>
<div class="rank-item"><span class="rank">4.</span> <a href="#" class="site-link"><span class="emoji">πŸ“Ί</span> ν‹°λΉ™</a></div>
<div class="rank-item"><span class="rank">5.</span> <a href="#" class="site-link"><span class="emoji">⚽</span> μΏ νŒ‘ν”Œλ ˆμ΄</a></div>
<div class="rank-item"><span class="rank">6.</span> <a href="#" class="site-link"><span class="emoji">🎬</span> 무비킹</a></div>
<div class="rank-item"><span class="rank">7.</span> <a href="#" class="site-link"><span class="emoji">πŸ”΄</span> λ„·ν”Œλ¦­μŠ€</a></div>
<div class="rank-item"><span class="rank">8.</span> <a href="#" class="site-link"><span class="emoji">🌊</span> μ›¨μ΄λΈŒ</a></div>
<div class="rank-item"><span class="rank">9.</span> <a href="#" class="site-link"><span class="emoji">πŸ’–</span> μ™“μ± </a></div>
<div class="rank-item"><span class="rank">10.</span> <a href="#" class="site-link"><span class="emoji">🐭</span> λ””μ¦ˆλ‹ˆ+</a></div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const adminBtn = document.querySelector('.admin-btn');
const loginForm = document.querySelector('.login-form');
const loginBtn = document.querySelector('.login-btn');
const adminPw = document.querySelector('.admin-pw');
// Toggle login form visibility
adminBtn.addEventListener('click', function() {
loginForm.style.display = loginForm.style.display === 'block' ? 'none' : 'block';
});
// Simple password check (in real implementation, this would be server-side)
loginBtn.addEventListener('click', function() {
if(adminPw.value === 'admin123') { // Default password - should be changed
alert('둜그인 성곡! κ΄€λ¦¬μž κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.');
document.querySelector('.admin-status').style.display = 'block';
document.querySelector('.admin-controls').style.display = 'block';
loginForm.style.display = 'none';
} else {
alert('λΉ„λ°€λ²ˆν˜Έκ°€ ν‹€λ ΈμŠ΅λ‹ˆλ‹€.');
}
adminPw.value = '';
});
// Admin functionality
const addLinkBtn = document.getElementById('add-link');
const updateLinkBtn = document.getElementById('update-link');
const deleteLinkBtn = document.getElementById('delete-link');
addLinkBtn.addEventListener('click', function() {
const category = document.getElementById('category-select').value;
const name = document.getElementById('link-name').value;
const url = document.getElementById('link-url').value;
const emoji = document.getElementById('link-emoji').value;
const rank = document.getElementById('link-rank').value;
if(!name || !url || !rank) {
alert('ν•„μˆ˜ ν•­λͺ©μ„ λͺ¨λ‘ μž…λ ₯ν•΄μ£Όμ„Έμš”.');
return;
}
// μ‹€μ œ κ΅¬ν˜„μ—μ„œλŠ” μ„œλ²„μ— μ €μž₯ν•˜λŠ” μ½”λ“œκ°€ ν•„μš”
alert(`[${category}] ${name}(${url}) 링크가 ${rank}μœ„λ‘œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.`);
// μž…λ ₯ ν•„λ“œ μ΄ˆκΈ°ν™”
document.getElementById('link-name').value = '';
document.getElementById('link-url').value = '';
document.getElementById('link-emoji').value = '';
document.getElementById('link-rank').value = '';
});
updateLinkBtn.addEventListener('click', function() {
const category = document.getElementById('category-select').value;
const name = document.getElementById('link-name').value;
const url = document.getElementById('link-url').value;
const emoji = document.getElementById('link-emoji').value;
const rank = document.getElementById('link-rank').value;
if(!name || !url || !rank) {
alert('ν•„μˆ˜ ν•­λͺ©μ„ λͺ¨λ‘ μž…λ ₯ν•΄μ£Όμ„Έμš”.');
return;
}
// μ‹€μ œ κ΅¬ν˜„μ—μ„œλŠ” μ„œλ²„μ— μ €μž₯ν•˜λŠ” μ½”λ“œκ°€ ν•„μš”
alert(`[${category}] ${name}(${url}) 링크가 ${rank}μœ„λ‘œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.`);
});
deleteLinkBtn.addEventListener('click', function() {
const category = document.getElementById('category-select').value;
const rank = document.getElementById('link-rank').value;
if(!rank) {
alert('μ‚­μ œν•  μˆœμœ„λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.');
return;
}
if(confirm(`[${category}] ${rank}μœ„ 링크λ₯Ό 정말 μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?`)) {
// μ‹€μ œ κ΅¬ν˜„μ—μ„œλŠ” μ„œλ²„μ— μ‚­μ œ μš”μ²­ν•˜λŠ” μ½”λ“œκ°€ ν•„μš”
alert(`${rank}μœ„ 링크가 μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.`);
}
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=nkjoy/book" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>