hfexample's picture
Deploy clean snapshot of the repository
e221c83
/* [๊ธฐ๋ณธ ์„ค์ •] */
body {
background: #f0f2f5;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
font-family: "Spoqa Han Sans Neo", sans-serif;
}
/* --- ๋ฉ”์ธ ์ปจํ…Œ์ด๋„ˆ --- */
.book-container {
width: 800px;
height: 500px;
position: relative;
perspective: 1500px; /* 3D ์›๊ทผ๊ฐ */
background-color: #fff; /* ํผ ๋ฐฐ๊ฒฝ์ƒ‰ */
border-radius: 20px;
box-shadow: 0 14px 28px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.12);
overflow: hidden; /* ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒƒ ๋ฐฉ์ง€ */
}
/* [๋ ˆ์ด์–ด 1] ๋ฐ”๋‹ฅ์— ๊น”๋ฆฐ ํผ๋“ค */
.layer-base {
width: 100%;
height: 100%;
display: flex; /* ์ขŒ์šฐ ๋ฐฐ์น˜ */
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
.base-box {
width: 50%;
height: 100%;
padding: 40px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
/* [๋ ˆ์ด์–ด 2] ์›€์ง์ด๋Š” ํŽ˜์ด์ง€ (Flipper) */
.layer-flipper {
width: 50%; /* ์ „์ฒด ๋„ˆ๋น„์˜ ์ ˆ๋ฐ˜ */
height: 100%;
position: absolute;
top: 0;
left: 50%; /* ์˜ค๋ฅธ์ชฝ ์ ˆ๋ฐ˜์—์„œ ์‹œ์ž‘ */
transform-origin: left center;
transform-style: preserve-3d;
transition: transform 0.8s cubic-bezier(0.645, 0.045, 0.355, 1.000); /* ๋ถ€๋“œ๋Ÿฌ์šด ์ข…์ด ๋„˜๊น€ ํšจ๊ณผ */
z-index: 10;
}
/* ํŽ˜์ด์ง€๊ฐ€ ๋„˜์–ด๊ฐ„ ์ƒํƒœ (์™ผ์ชฝ์œผ๋กœ -180๋„ ํšŒ์ „) */
.layer-flipper.flipped {
transform: rotateY(-180deg);
}
/* --- ํŽ˜์ด์ง€์˜ ์•ž๋ฉด/๋’ท๋ฉด ๋””์ž์ธ --- */
.page-face {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
backface-visibility: hidden; /* ๋’ท๋ฉด ์•ˆ ๋ณด์ด๊ฒŒ */
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 40px;
box-sizing: border-box;
/* ์•ˆ๋‚ด ๋ฌธ๊ตฌ ๋ฐฐ๊ฒฝ (ํŒŒ๋ž€์ƒ‰ ๊ทธ๋ผ๋ฐ์ด์…˜) */
background: linear-gradient(135deg, #6598e5, #5540a3);
color: white;
}
/* ์•ž๋ฉด (ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค) - ๊ธฐ๋ณธ ์ƒํƒœ */
.front-face {
z-index: 2;
transform: rotateY(0deg);
}
/* ๋’ท๋ฉด (๋Œ์•„์˜ค์…จ๊ตฐ์š”) - ๋ฏธ๋ฆฌ 180๋„ ๋Œ๋ ค๋†“์Œ */
.back-face {
z-index: 1;
transform: rotateY(180deg);
}
/* --- ๋‚ด๋ถ€ ์š”์†Œ ์Šคํƒ€์ผ (๋ฒ„ํŠผ, ์ž…๋ ฅ์ฐฝ ๋“ฑ) --- */
h2 { margin-bottom: 20px; font-size: 2rem; font-weight: 700; }
.input-group { width: 100%; margin-bottom: 15px; text-align: left; }
.input-group label { display: block; margin-bottom: 5px; font-size: 0.9rem; color: #666; }
.input-group input { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 8px; background: #f4f4f4; box-sizing: border-box; }
/* ๋กœ๊ทธ์ธ/๊ฐ€์ž… ์•ก์…˜ ๋ฒ„ํŠผ */
.action-btn {
width: 100%; padding: 12px; background-color: #5540a3; color: white;
border: none; border-radius: 8px; font-size: 1rem; font-weight: bold;
cursor: pointer; margin-top: 10px; transition: 0.3s;
}
.action-btn:hover { background-color: #443383; }
/* ์œ ๋ น ๋ฒ„ํŠผ (ํŽ˜์ด์ง€ ๋„˜๊ธฐ๊ธฐ์šฉ) */
.ghost-btn {
background: transparent; border: 2px solid white; color: white;
padding: 10px 30px; border-radius: 25px; font-weight: bold;
cursor: pointer; margin-top: 20px; transition: 0.2s;
}
.ghost-btn:hover { background: white; color: #5540a3; }
.content-wrapper p { font-size: 1.1rem; margin-bottom: 20px; line-height: 1.5; }