Skip to content

Commit a71eb53

Browse files
authored
Update index.html
1 parent 3d038ba commit a71eb53

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

โ€Žindex.htmlโ€Ž

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,72 @@
11
<!DOCTYPE html>
22
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=yes">
6+
<meta name="theme-color" content="#000000">
7+
<link rel="icon" href="/offrest.ico">
8+
<title>OFFREST</title>
9+
<style>
10+
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700;900&display=swap');
11+
* { margin: 0; padding: 0; box-sizing: border-box; }
12+
body { font-family: 'Noto Sans KR', sans-serif; background: #0a0a0a; color: #fff; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; }
13+
.logo { position: fixed; top: 30px; left: 35px; font-size: 18px; font-weight: 900; letter-spacing: 2px; line-height: 1.2; z-index: 100; }
14+
#start-screen { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; animation: fadeIn 1s ease; }
15+
.tagline { font-size: 34px; font-weight: 700; margin-bottom: 50px; letter-spacing: 1px; line-height: 1.6; }
16+
.logo-btn { width: 150px; height: 150px; border-radius: 50%; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; position: relative; overflow: hidden; padding: 0; }
17+
.logo-btn img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; transition: all 0.3s ease; }
18+
.logo-btn:hover { transform: scale(1.08); }
19+
.logo-btn:hover img { box-shadow: 0 0 30px rgba(102,126,234,0.4); }
20+
.logo-btn:active { transform: scale(0.95); }
21+
.logo-btn.rolling { animation: shake 0.5s ease; }
22+
.start-hint { margin-top: 24px; font-size: 14px; color: #666; letter-spacing: 3px; text-transform: uppercase; }
23+
#result-screen { display: none; flex-direction: column; align-items: center; text-align: center; padding: 20px; max-width: 1000px; width: 100%; }
24+
.cards-row { display: flex; gap: 30px; width: 100%; justify-content: center; flex-wrap: wrap; }
25+
.result-card { background: linear-gradient(145deg, #1a1a2e, #0f0f1a); border: 1px solid rgba(255,255,255,0.08); border-radius: 24px; padding: 45px 35px; flex: 1; min-width: 300px; max-width: 460px; opacity: 0; transform: translateY(30px); }
26+
.result-card.show { animation: slideUp 0.6s ease forwards; }
27+
.result-card.delay { animation-delay: 0.2s; }
28+
.card-emoji { font-size: 52px; margin-bottom: 18px; }
29+
.card-label { font-size: 15px; color: #667eea; letter-spacing: 3px; text-transform: uppercase; margin-bottom: 14px; font-weight: 700; }
30+
.card-title { font-size: 28px; font-weight: 700; margin-bottom: 12px; line-height: 1.4; }
31+
.card-desc { font-size: 15px; color: #999; line-height: 1.7; }
32+
.music-artist { font-size: 15px; color: #999; margin-top: 6px; }
33+
.bottom-area { margin-top: 40px; opacity: 0; animation: fadeIn 0.5s ease 0.6s forwards; display: flex; flex-direction: column; align-items: center; gap: 24px; }
34+
.add-prompt { font-size: 14px; color: #777; letter-spacing: 0.3px; line-height: 1.6; padding: 16px 30px; border: 1px dashed rgba(255,255,255,0.12); border-radius: 16px; background: rgba(255,255,255,0.02); }
35+
.reroll-btn { padding: 20px 52px; border-radius: 50px; background: transparent; border: 1.5px solid rgba(255,255,255,0.2); color: #fff; font-family: 'Noto Sans KR', sans-serif; font-size: 17px; font-weight: 700; cursor: pointer; transition: all 0.3s ease; letter-spacing: 1px; }
36+
.reroll-btn:hover { border-color: #667eea; color: #667eea; transform: scale(1.05); }
37+
.reroll-btn:active { transform: scale(0.95); }
38+
.bg-glow { position: fixed; width: 300px; height: 300px; border-radius: 50%; filter: blur(120px); opacity: 0.08; pointer-events: none; z-index: 0; }
39+
.glow-1 { top: -100px; right: -100px; background: #667eea; }
40+
.glow-2 { bottom: -100px; left: -100px; background: #764ba2; }
41+
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
42+
@keyframes slideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
43+
@keyframes shake { 0%,100%{transform:rotate(0)} 20%{transform:rotate(-15deg) scale(1.1)} 40%{transform:rotate(15deg) scale(1.1)} 60%{transform:rotate(-10deg) scale(1.05)} 80%{transform:rotate(10deg) scale(1.05)} }
44+
@media (min-width:768px) and (orientation:landscape) { body{overflow-y:auto} .tagline{font-size:42px;margin-bottom:40px} .logo-btn{width:180px;height:180px} #result-screen{padding:20px} .cards-row{flex-wrap:nowrap;gap:36px} .start-hint{font-size:16px;margin-top:30px} .card-title{font-size:30px} .card-label{font-size:16px} }
45+
@media (max-width:600px) { .tagline{font-size:28px;margin-bottom:35px} .logo-btn{width:120px;height:120px} .card-title{font-size:22px} .result-card{padding:30px 24px} .cards-row{flex-direction:column;align-items:center;gap:20px} .reroll-btn{padding:18px 44px;font-size:16px} }
46+
</style>
47+
</head>
48+
<body>
49+
<div class="logo">OFF '<br>REST</div>
50+
<div class="bg-glow glow-1"></div><div class="bg-glow glow-2"></div>
51+
<div id="start-screen">
52+
<div class="tagline">Find your rest<br>Feel your rest</div>
53+
<button class="logo-btn" id="diceBtn" onclick="roll()"><img src="/icons/icon-512.png" alt="OFFREST"></button>
54+
<div class="start-hint">TAP TO OFFREST</div>
55+
</div>
56+
<div id="result-screen">
57+
<div class="cards-row">
58+
<div class="result-card" id="restCard"><div class="card-emoji" id="restEmoji"></div><div class="card-label">์˜ค๋Š˜์˜ ํœด์‹</div><div class="card-title" id="restTitle"></div><div class="card-desc" id="restDesc"></div></div>
59+
<div class="result-card delay" id="musicCard"><div class="card-emoji">๐ŸŽต</div><div class="card-label">์ถ”์ฒœ ์Œ์•…</div><div class="card-title" id="musicTitle"></div><div class="music-artist" id="musicArtist"></div></div>
60+
</div>
61+
<div class="bottom-area">
62+
<div class="add-prompt">๋‚˜๋งŒ์˜ ํœด์‹์„ ์นด๋“œ์— ์ ์–ด์ฃผ์‹œ๋ฉด, ์ด๊ณณ์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค</div>
63+
<button class="reroll-btn" onclick="reroll()">๐ŸŽฒ ํ•œ๋ฒˆ ๋” ๋Œ๋ฆฌ๊ธฐ</button>
64+
</div>
65+
</div>
66+
<script>const R=[{e:"๐Ÿง˜",t:"5๋ถ„ ๋ช…์ƒํ•˜๊ธฐ",d:"๋ˆˆ์„ ๊ฐ๊ณ  ํ˜ธํก์— ์ง‘์ค‘ํ•ด๋ณด์„ธ์š”. ๋“ค์ˆจ๊ณผ ๋‚ ์ˆจ์„ ์ฒœ์ฒœํžˆ ๋А๋ผ๋ฉฐ ๋งˆ์Œ์„ ๋น„์›Œ๋ณด์„ธ์š”."},{e:"๐Ÿšถ",t:"์‚ฐ์ฑ… ๋‚˜๊ฐ€๊ธฐ",d:"๊ฐ€๊นŒ์šด ๊ณต์›์ด๋‚˜ ๊ณจ๋ชฉ๊ธธ์„ ๊ฑธ์–ด๋ณด์„ธ์š”. ๋ฐ”๋žŒ๊ณผ ํ–‡์‚ด์ด ๊ธฐ๋ถ„์„ ์ „ํ™˜์‹œ์ผœ ์ค„ ๊ฑฐ์˜ˆ์š”."},{e:"โ˜•",t:"๋”ฐ๋œปํ•œ ์ฐจ ํ•œ ์ž”",d:"์ข‹์•„ํ•˜๋Š” ์ฐจ๋ฅผ ์ฒœ์ฒœํžˆ ์šฐ๋ ค๋‚ด๋ฉฐ ์—ฌ์œ ๋ฅผ ์ฆ๊ฒจ๋ณด์„ธ์š”."},{e:"๐Ÿ“–",t:"์ฑ… ํ•œ ํŽ˜์ด์ง€ ์ฝ๊ธฐ",d:"์–ด๋ ต์ง€ ์•Š์€ ์ฑ…์„ ํŽด๊ณ  ํ•œ ํŽ˜์ด์ง€๋งŒ ์ฝ์–ด๋ณด์„ธ์š”."},{e:"๐ŸŽจ",t:"๋‚™์„œ ๊ทธ๋ฆฌ๊ธฐ",d:"์ข…์ด ์œ„์— ์ž์œ ๋กญ๊ฒŒ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด์„ธ์š”."},{e:"๐ŸŒฟ",t:"์‹๋ฌผ ๋Œ๋ณด๊ธฐ",d:"ํ™”๋ถ„์— ๋ฌผ์„ ์ฃผ๊ณ  ์žŽ์„ ๋‹ฆ์•„์ฃผ์„ธ์š”."},{e:"๐Ÿ›",t:"๋”ฐ๋œปํ•œ ์ƒค์›Œํ•˜๊ธฐ",d:"๋”ฐ๋œปํ•œ ๋ฌผ๋กœ ๋ชธ์„ ๊ฐ์‹ธ๋ฉฐ ํ•˜๋ฃจ์˜ ํ”ผ๋กœ๋ฅผ ์”ฌ์–ด๋‚ด ๋ณด์„ธ์š”."},{e:"๐ŸŒ…",t:"ํ•˜๋Š˜ ๋ฐ”๋ผ๋ณด๊ธฐ",d:"์ฐฝ๋ฌธ ๋ฐ– ํ•˜๋Š˜์„ 5๋ถ„๋งŒ ๋ฐ”๋ผ๋ณด์„ธ์š”."},{e:"๐Ÿ˜ด",t:"10๋ถ„ ๋‚ฎ์ž  ์ž๊ธฐ",d:"์•Œ๋žŒ์„ 10๋ถ„ ํ›„๋กœ ๋งž์ถ”๊ณ  ํŽธํ•˜๊ฒŒ ๋ˆˆ์„ ๊ฐ์•„๋ณด์„ธ์š”."},{e:"๐ŸŽง",t:"์ข‹์•„ํ•˜๋Š” ๋…ธ๋ž˜ ๋”ฐ๋ผ ๋ถ€๋ฅด๊ธฐ",d:"์ด์–ดํฐ์„ ๋ผ๊ณ  ์ข‹์•„ํ•˜๋Š” ๋…ธ๋ž˜๋ฅผ ์ž‘๊ฒŒ ๋”ฐ๋ผ ๋ถˆ๋Ÿฌ๋ณด์„ธ์š”."},{e:"โœ๏ธ",t:"๊ฐ์‚ฌํ•œ ๊ฒƒ 3๊ฐ€์ง€ ์ ๊ธฐ",d:"์ž‘์€ ๊ฒƒ์ด๋ผ๋„ ๊ดœ์ฐฎ์•„์š”. ๊ฐ์‚ฌํ•œ ๊ฒƒ์„ ์ ๋‹ค ๋ณด๋ฉด ๋งˆ์Œ์ด ๋”ฐ๋œปํ•ด์ง‘๋‹ˆ๋‹ค."},{e:"๐Ÿงธ",t:"์ข‹์•„ํ•˜๋Š” ์˜์ƒ ๋ณด๊ธฐ",d:"์งง์€ ํž˜๋ง ์˜์ƒ์„ ๋ณด๋ฉฐ ์ž ์‹œ ์›ƒ์–ด๋ณด์„ธ์š”."},{e:"๐Ÿ’†",t:"์…€ํ”„ ๋งˆ์‚ฌ์ง€ํ•˜๊ธฐ",d:"๊ด€์ž๋†€์ด์™€ ๋ชฉ, ์–ด๊นจ๋ฅผ ์ฒœ์ฒœํžˆ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”."},{e:"๐ŸŒ™",t:"์กฐ์šฉํ•œ ์Œ์•… ๋“ฃ๊ธฐ",d:"์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์กฐ์šฉํ•œ ์Œ์•…์— ๊ท€๋ฅผ ๊ธฐ์šธ์—ฌ๋ณด์„ธ์š”."}];const M=[{t:"Weightless",a:"Marconi Union"},{t:"Clair de Lune",a:"Debussy"},{t:"Sunset Lover",a:"Petit Biscuit"},{t:"River Flows in You",a:"Yiruma"},{t:"Experience",a:"Ludovico Einaudi"},{t:"Bloom",a:"The Paper Kites"},{t:"Gymnopรฉdie No.1",a:"Erik Satie"},{t:"Kiss the Rain",a:"Yiruma"},{t:"Nuvole Bianche",a:"Ludovico Einaudi"},{t:"Blue",a:"Keshi"},{t:"Snowfall",a:"ร˜neheart"},{t:"Dandelions",a:"Ruth B."},{t:"๋ด„๋‚ ",a:"BTS"},{t:"Through the Night",a:"IU"}];let lr=-1,lm=-1,iT=null;function rT(){if(iT)clearTimeout(iT);iT=setTimeout(()=>{const s=document.getElementById('start-screen'),r=document.getElementById('result-screen');if(r.style.display==='flex'){r.style.display='none';s.style.display='flex';s.style.animation='none';void s.offsetWidth;s.style.animation='fadeIn 1s ease'}},30000)}['click','touchstart','keydown','mousemove','scroll'].forEach(e=>document.addEventListener(e,rT,{passive:true}));function gi(a,l){let i;do{i=Math.floor(Math.random()*a.length)}while(i===l&&a.length>1);return i}function roll(){const b=document.getElementById('diceBtn');b.classList.add('rolling');setTimeout(()=>{b.classList.remove('rolling');show()},500)}function show(){const s=document.getElementById('start-screen'),r=document.getElementById('result-screen');const i=gi(R,lr),j=gi(M,lm);lr=i;lm=j;const re=R[i],mu=M[j];document.getElementById('restEmoji').textContent=re.e;document.getElementById('restTitle').textContent=re.t;document.getElementById('restDesc').textContent=re.d;document.getElementById('musicTitle').textContent=mu.t;document.getElementById('musicArtist').textContent=mu.a;s.style.display='none';r.style.display='flex';rT();r.querySelectorAll('.result-card').forEach(c=>{c.classList.remove('show');void c.offsetWidth;c.classList.add('show')});const ba=r.querySelector('.bottom-area');ba.style.animation='none';void ba.offsetWidth;ba.style.animation='fadeIn 0.5s ease 0.6s forwards';ba.style.opacity='0'}function reroll(){const r=document.getElementById('result-screen');const i=gi(R,lr),j=gi(M,lm);lr=i;lm=j;const re=R[i],mu=M[j];rT();const cards=r.querySelectorAll('.result-card');cards.forEach(c=>c.classList.remove('show'));setTimeout(()=>{document.getElementById('restEmoji').textContent=re.e;document.getElementById('restTitle').textContent=re.t;document.getElementById('restDesc').textContent=re.d;document.getElementById('musicTitle').textContent=mu.t;document.getElementById('musicArtist').textContent=mu.a;cards.forEach(c=>{void c.offsetWidth;c.classList.add('show')})},300)}</script>
67+
</body>
68+
</html><!DOCTYPE html>
69+
<html lang="ko">
370
<head>
471
<meta charset="UTF-8">
572
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=yes">

0 commit comments

Comments
ย (0)