/* * ========================================================================== * ๐Ÿ’ก ๋ฒ ์ด์Šค ๋ชจ๋“ˆ(Base Module) ์ „์šฉ ์Šคํƒ€์ผ์‹œํŠธ * ========================================================================== */ /* --- 1. ์„น์…˜ ๊ธฐ๋ณธ ์Šคํƒ€์ผ --- */ .item-section { width: 100%; padding: 80px 0; background-color: #ffffff; } /* --- 2. ์„น์…˜ ํ—ค๋” (์ œ๋ชฉ, ๋ถ€์ œ) --- */ .section-header { text-align: center; margin-bottom: 50px; } .section-header .subtitle { font-size: 16px; font-weight: 700; color: #0056b3; margin-bottom: 10px; display: block; } .section-header h2 { font-size: 36px; font-weight: 900; color: #25282B; margin-bottom: 15px; line-height: 1.4; } .section-header p { font-size: 16px; line-height: 1.7; color: #666; max-width: 600px; margin: 0 auto; } /* --- 3. ์•„์ดํ…œ ์นด๋“œ ๊ทธ๋ฆฌ๋“œ --- */ .item-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; } /* --- 4. ๊ฐœ๋ณ„ ์•„์ดํ…œ ์นด๋“œ --- */ .item-card { background-color: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05); transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; } .item-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); } /* --- 5. ์นด๋“œ ๋‚ด๋ถ€ ์š”์†Œ --- */ .item-image { width: 100%; aspect-ratio: 4 / 3; overflow: hidden; } .item-image.is-patent { padding: 20px; background-color: #f0f0f0; } .item-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; } .item-card:hover .item-image img { transform: scale(1.05); } .item-info { padding: 25px; } .item-info h3 { font-size: 1.2rem; font-weight: 700; margin-bottom: 10px; color: #333; } .item-info p { font-size: 0.95rem; color: #666; line-height: 1.6; } /* --- 9. ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ (๊ณต์šฉ) --- */ .reveal-up, .reveal-fade { opacity: 0; transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .reveal-up { transform: translateY(40px); } .reveal-fade { transform: scale(0.95); } .reveal-up.is-revealed, .reveal-fade.is-revealed { opacity: 1; transform: none; } /* --- 10. [๋ชจ๋“ˆ ์ „์šฉ] ์ด๋ฏธ์ง€ ํŒ์—… ๋ชจ๋‹ฌ ์Šคํƒ€์ผ (๊ฐœ์„ ) --- */ .image-modal { display: none; position: fixed; z-index: 1050; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.85); justify-content: center; align-items: center; padding: 40px 20px; opacity: 0; transition: opacity 0.3s ease; } .image-modal.is-active { display: flex; opacity: 1; } .modal-content { position: relative; background-color: #fff; margin: auto; padding: 0; border-radius: 8px; width: auto; max-width: 100%; box-shadow: 0 5px 15px rgba(0,0,0,.5); animation: modal-slide-down 0.4s ease-out; display: flex; flex-direction: column; } @keyframes modal-slide-down { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .modal-content .modal-image { display: block; max-width: 90vw; max-height: 80vh; object-fit: contain; width: auto; height: auto; } .modal-info { padding: 20px 25px; max-width: 800px; /* ํ…์ŠคํŠธ ์˜์—ญ์˜ ์ตœ๋Œ€ ๋„ˆ๋น„๋Š” ์ œํ•œ */ width: 100%; } .modal-info .modal-title { font-size: 1.5rem; font-weight: 700; color: #333; margin: 0 0 10px 0; } .modal-info .modal-desc { font-size: 1rem; color: #666; line-height: 1.6; margin: 0; } .close-btn { color: #fff; position: absolute; top: 15px; right: 25px; font-size: 35px; font-weight: bold; cursor: pointer; transition: color 0.2s; text-shadow: 0 1px 3px rgba(0,0,0,0.5); z-index: 10; } .close-btn:hover, .close-btn:focus { color: #ccc; text-decoration: none; } /* --- 11. [๊ฐœ์„ ] ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ --- */ .section-header h2, .section-header p, .product-info-trend h3, .product-info-trend p, .item-info h3, .item-info p { word-break: keep-all; overflow-wrap: break-word; } /* --- 12. [๊ฐœ์„ ] ์นด๋“œ ์„ค๋ช… ํ…์ŠคํŠธ ์ž˜๋ฆผ ๋ฐฉ์ง€ ๋ฐ ๋†’์ด ๊ณ ์ • --- */ .product-info-trend p, .item-info p { height: 3.04rem; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; text-overflow: ellipsis; line-height: 1.6; } /* --- 13. [์ตœ์ข… ์ˆ˜์ •] ๋ชจ๋“ˆ ์Šคํฌ๋กค๋ฐ” ์™„์ „ ์ˆจ๊น€ ์ฒ˜๋ฆฌ --- */ /* 1. ๊ธฐ๋ณธ ์ƒํƒœ: ์Šคํฌ๋กค๋ฐ”๋ฅผ ์™„์ „ํžˆ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. */ .image-modal { /* Firefox: ์Šคํฌ๋กค๋ฐ” ์ƒ‰์ƒ์„ ์–‘์ชฝ ๋ชจ๋‘ ํˆฌ๋ช…ํ•˜๊ฒŒ ์„ค์ • */ scrollbar-color: transparent transparent; scrollbar-width: thin; transition: scrollbar-color 0.3s ease; } .image-modal::-webkit-scrollbar { width: 10px; } .image-modal::-webkit-scrollbar-track { background: transparent; } .image-modal::-webkit-scrollbar-thumb { /* Webkit: ์Šคํฌ๋กค๋ฐ” ๋ง‰๋Œ€๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ */ background-color: transparent; border-radius: 10px; border: 3px solid transparent; background-clip: padding-box; transition: background-color 0.3s ease; } /* 2. :hover ์ƒํƒœ: ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์Šคํฌ๋กค๋ฐ”๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. */ .image-modal:hover { /* Firefox: ์Šคํฌ๋กค๋ฐ” ์ƒ‰์ƒ์„ ๋ณด์ด๊ฒŒ ๋ณ€๊ฒฝ */ scrollbar-color: rgba(0, 0, 0, 0.4) transparent; } .image-modal:hover::-webkit-scrollbar-thumb { /* Webkit: ์Šคํฌ๋กค๋ฐ” ๋ง‰๋Œ€ ์ƒ‰์ƒ์„ ๋ณด์ด๊ฒŒ ๋ณ€๊ฒฝ */ background-color: rgba(0, 0, 0, 0.4); }