/* ── ìƒí’ˆìƒì„¸ íƒ ê³µí†µ 하단 아코디언 — Figma Accordion/Group(7128:32766). ìƒí’ˆì •ë³´/
리뷰/Q&A 세 íƒ ëª¨ë‘ì—서 íƒ ì½˜í…ì¸ ì•„ëž˜Â·í‘¸í„° ìœ„ì— ë™ì¼í•˜ê²Œ 노출ë¨(ìƒí’ˆíŒë§¤ ì œê³µê³ ì‹œ/
반품·êµí™˜ 기준/구매 시 주ì˜ì‚¬í•). ì´ì „ì—” ì´ ì…‹ 다 열린 ìƒíƒœ ëª©ì—…ì´ ì—†ë‹¤ê³ ë³´ê³
êµ¬ë¶„ì„ ì—†ëŠ” 톤으로 만들었었는ë°, ì´ ë…¸ë“œë¥¼ ë³´ë©´ ì‹¤ì œë¡œëŠ” ê° í•목(í–‰/문단)마다
ì•„ëž˜ìª½ì— ì˜…ì€ êµ¬ë¶„ì„ (#e6e6e6)ì´ ìžˆê³ ì•„ì½”ë””ì–¸ 섹션 사ì´(ì œê³µê³ ì‹œâ†”ë°˜í’ˆêµí™˜ê¸°ì¤€ 등)ì—”
반대로 ì„ ì´ ì—†ë‹¤ — ì •í™•ížˆ 거꾸로였다 */
.product-content-policy-accordion {
display: flex;
flex-direction: column;
gap: 8px;
padding: 16px 16px 20px;
}
.product-content-policy-accordion .accordion__title {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 0;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 600;
line-height: 18px;
color: #404040;
list-style: none;
cursor: pointer;
border-bottom: none;
}
/* details 기본 삼ê°í˜• 마커 ëŒ€ì‹ Figmaì˜ ChevronDown ì•„ì´ì½˜ë§Œ 노출 */
.product-content-policy-accordion .accordion__title::-webkit-details-marker,
.product-content-policy-accordion .accordion__title::marker {
display: none;
content: none;
}
/* ë² ì´ìФ 스킨(component.css)ì˜ .accordion__title::afterê°€ angle-r.png ë°°ê²½ì´ë¯¸ì§€
화살표를 별ë„로 ê·¸ë ¤ì„œ ì§ì ‘ ë„£ì€ ChevronRightIconê³¼ ê²¹ì³ ë³´ì˜€ìŒ â€” ì œê±° */
.product-content-policy-accordion .accordion__title::after {
content: none;
background: none;
}
.product-content-policy-accordion__chevron {
flex-shrink: 0;
transform: rotate(90deg);
transition: transform 0.2s;
}
.product-content-policy-accordion .accordion[open] .product-content-policy-accordion__chevron {
transform: rotate(-90deg);
}
/* Accordion/Content 실측: 위 8px/아래 16px 패딩, í•목(í–‰/문단) ì‚¬ì´ 12px 간격.
í•목 ìžì²´ëŠ” ì•„ëž˜ìª½ì— 12px 패딩 + 1px #e6e6e6 êµ¬ë¶„ì„ ì„ ê°–ê³ , 마지막 í•목만 ì„ ì´ ì—†ë‹¤ */
.product-content-policy-accordion .accordion__items {
display: flex;
flex-direction: column;
gap: 12px;
padding: 8px 0 16px;
font-family: Pretendard, sans-serif;
font-size: 13px;
line-height: 18px;
color: #1a1a1a;
word-break: keep-all;
}
/* ê°€ì´ë“œë¥˜(배송안내/반품·êµí™˜ 기준/AS 안내) 본문 — 어드민 ìžìœ ì„œì‹ HTML(한 줄짜리
<p> 다수)ì´ë¼, ì œê³µê³ ì‹œì²˜ëŸ¼ 행마다 êµ¬ë¶„ì„ ì„ ê·¸ìœ¼ë©´ 줄마다 ì„ ì´ ê·¸ì–´ì ¸ 심하게
난잡해진다(QA ì§€ì , 2026-08-14). Figmaì˜ í•´ë‹¹ 펼침 변형(7128:32921)ë„ ì œê³µê³ ì‹œ
InfoRow ì»´í¬ë„ŒíŠ¸ì— ê¸°ë³¸ ë¼ë²¨ì´ ë°©ì¹˜ëœ ë¯¸ì™„ì„± ìƒíƒœë¼ 따를 수 ì—†ìŒ â€” êµ¬ë¶„ì„ ì—†ëŠ”
본문 블ë¡(13/400/#404040, 줄 ê°„ 6px)으로 ì •ë¦¬í•œë‹¤. ì œê³µê³ ì‹œ(.product-content-policy-info)
í–‰ êµ¬ë¶„ì„ êµ¬ì¡°ëŠ” 그대로 ìœ ì§€ */
.product-content-policy-accordion .accordion__items .editor {
font-size: 13px;
font-weight: 400;
line-height: 18px;
color: #404040;
}
/* ì´ ê°€ì´ë“œ 문구(반품·êµí™˜ 기준/구매 시 주ì˜ì‚¬í•)는 병합업체가 워드프로세서ì—서
ë¶™ì—¬ë„£ì€ ìžìœ ì„œì‹ HTMLì´ë¼ <p style="line-height:150%">·<span style="font-size:12px;
font-family:'ë§‘ì€ ê³ ë”•'">처럼 ì¸ë¼ì¸ 스타ì¼ì´ 그대로 박혀있다 — ì¸ë¼ì¸ 스타ì¼ì€
외부 스타ì¼ì‹œíŠ¸ë³´ë‹¤ í•ìƒ ìš°ì„ í•˜ë¯€ë¡œ !important ì—†ì´ëŠ” ì ˆëŒ€ 못 ì´ê¸´ë‹¤(Purchase.cssì˜
.purchase-sheet .selected-valuesë„ ë™ì¼ ì´ìœ 로 !important 사용 중) */
.product-content-policy-accordion .accordion__items .editor p,
.product-content-policy-accordion .accordion__items .editor p * {
font-family: Pretendard, sans-serif !important;
font-size: 13px !important;
line-height: 18px !important;
}
.product-content-policy-accordion .accordion__items .editor p {
margin: 0;
}
.product-content-policy-accordion .accordion__items .editor p + p {
margin-top: 6px;
}
/* ë‚´ìš© 없는 문단(ì–´ë“œë¯¼ì´ ì¤„ ë„우기용으로 ë„£ì€ ë¹ˆ <p>)ì´ í–‰ì²˜ëŸ¼ ìžë¦¬ë¥¼ 차지하지 않게 —
ë§Œ ë“ ë¬¸ë‹¨ì€ TSX(stripEmptyParagraphs)ì—서 ì œê±°í•œë‹¤ */
.product-content-policy-accordion .accordion__items .editor p:empty {
display: none;
}
/* ìƒí’ˆíŒë§¤ ì œê³µê³ ì‹œ — Figma(Accordion/Content, 385:1056)는 한 í–‰ 안ì—서 ë¼ë²¨(14px/500)ì´
위, ê°’(13px/400)ì´ ê·¸ 아래 ì¤„ì— ìŒ“ì´ëŠ” 구조다(좌우로 나란히 배치ë˜ëŠ” 표가 아님).
í–‰ 사ì´ì—” 위와 ë™ì¼í•˜ê²Œ 12px 패딩 + êµ¬ë¶„ì„ , 마지막 행만 ì„ ì—†ìŒ */
.product-content-policy-info {
display: contents;
}
.product-content-policy-info__row {
display: flex;
flex-direction: column;
gap: 4px;
margin: 0;
padding-bottom: 12px;
border-bottom: 1px solid #e6e6e6;
}
.product-content-policy-info__row:last-child {
padding-bottom: 0;
border-bottom: none;
}
.product-content-policy-info__label {
font-size: 14px;
font-weight: 500;
line-height: 18px;
color: #404040;
word-break: keep-all;
}
.product-content-policy-info__value {
font-size: 13px;
font-weight: 400;
line-height: 18px;
margin-left: 0;
color: #1a1a1a;
word-break: keep-all;
}
/**
* Swiper 8.4.7
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2023 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: January 30, 2023
*/
@font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}
.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}
:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}
.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}
/* ìƒë‹¨ ë©”ì¸ ì´ë¯¸ì§€ 슬ë¼ì´ë” — ì „ì— .thumb-item__media(_layout.css, Figma
Card/ProductCardìš© 8px ë¼ìš´ë“œ+#fafafa ë°°ê²½)ê°€ ìƒí’ˆ 카드가 아닌 ì´ í’€ë¸”ë¦¬ë“œ
히어로 ì´ë¯¸ì§€ì—ë„ ê·¸ëŒ€ë¡œ ì ìš©ë˜ê³ 있었ìŒ. 여기서만 취소 */
.thumb-DETAIL .thumb-item__media {
border-radius: 0;
background-color: transparent;
}
/* ë°°ê²½ 딤 — ëª¨ë“ ë°”í…€ì‹œíŠ¸ 공통 톤. 열림/닫힘 시 페ì´ë“œ.
닫히는 ë™ì•ˆ(opacityê°€ 1→0으로 트랜지션 ë˜ëŠ” 250ms) pointer-eventsê°€ ê³„ì† autoë¼
화면 ì „ì²´ë¥¼ ë®ì€ 채 í´ë¦ì„ ê°€ë¡œì±„ê³ ìžˆì—ˆìŒ â€” 닫기를 누른 ì§í›„ ê°™ì€ íŠ¸ë¦¬ê±°ë¥¼ 다시
누르거나 다른 요소를 íƒí•˜ë©´ ê·¸ í´ë¦ì´ ì´ ë³´ì´ì§€ë„ 않는 ë”¤ì— ë¨¹í˜€ 아무 ë°˜ì‘ì´
없어 ë³´ì´ëŠ” ë¬¸ì œ(바텀시트 ì¸í„°ëž™ì…˜ì´ ê°„í—ì 으로 안 먹히는 ì›ì¸)였ìŒ.
is-visibleì¼ ë•Œë§Œ í´ë¦ì„ ë°›ë„ë¡ í•´ì„œ 닫히기 시작하는 즉시 아래 요소가 í´ë¦ì„ 받게 함 */
.bottom-sheet__dim {
position: fixed;
inset: 0;
z-index: 30;
background-color: rgba(0, 0, 0, 0.5);
opacity: 0;
pointer-events: none;
transition: opacity 0.25s ease;
}
.bottom-sheet__dim.is-visible {
opacity: 1;
pointer-events: auto;
}
/* 바텀시트 본체 — Figma BottomSheet/Variation 공통.
닫힌 ìƒíƒœ(translateY(100%))ì—서 열린 ìƒíƒœ(translateY(0))로 슬ë¼ì´ë“œì—… —
드래그로 ë‹«ì„ ë•ŒëŠ” BottomSheet.tsxê°€ ì¸ë¼ì¸ style로 transitionì„ ë„ê³
ì†ê°€ë½ì„ 그대로 ë”°ë¼ê°€ê²Œ 함. 딤과 ë™ì¼í•œ ì´ìœ 로 닫히는 중(슬ë¼ì´ë“œë‹¤ìš´ ì• ë‹ˆë©”ì´ì…˜
0.3s)ì—ë„ í™”ë©´ì— ê±¸ì³ ìžˆëŠ” ë™ì•ˆì€ í´ë¦ì„ 가로챌 수 있어 pointer-events를 맞춤 */
.bottom-sheet {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 31;
width: 100%;
background-color: #ffffff;
/* Figma BottomSheet/Variation — ìƒë‹¨ radius 12 */
border-radius: 12px 12px 0 0;
padding-bottom: env(safe-area-inset-bottom, 0px);
transform: translateY(100%);
pointer-events: none;
transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1);
}
.bottom-sheet.is-visible {
transform: translateY(0);
pointer-events: auto;
}
/* PC ë ˆì´ì•„웃ì—서 .portal 등 다른 모달과 ë™ì¼í•˜ê²Œ ë·°í¬íЏ 중앙(501~1000px)/.site
우측 ì •ë ¬(1001px~) ê·œì¹™ì„ ë”°ë¦„ — 안 맞추면 ì‹¤ì œ 콘í…ì¸ ì—´ê³¼ 어긋나 ë³´ìž„.
딤(.bottom-sheet__dim)ì€ ì‹œíŠ¸ 패ë„ê³¼ ë³„ê°œì˜ í˜•ì œ ì—˜ë¦¬ë¨¼íŠ¸ë¼ íŒ¨ë„ë§Œ ì¢í˜€ì„œëŠ”
안 ë˜ê³ ë”¤ë„ ë˜‘ê°™ì´ ì¢í˜€ì•¼ PCì—서 배너 ì˜ì—까지 화면 ì „ì²´ë¥¼ ë®ì§€ 않ìŒ.
가로 ì¤‘ì•™ì •ë ¬(translateX)ê³¼ 슬ë¼ì´ë“œì—…(translateY)ì„ í•œ transformì— ê°™ì´ ëª…ì‹œ */
@media (min-width: 501px) {
.bottom-sheet {
left: 50%;
max-width: 500px;
transform: translateX(-50%) translateY(100%);
}
.bottom-sheet.is-visible {
transform: translateX(-50%) translateY(0);
}
.bottom-sheet__dim {
left: 50%;
right: auto;
width: 500px;
transform: translateX(-50%);
}
}
@media (min-width: 1001px) {
.bottom-sheet {
left: auto;
right: calc((100vw - 1000px) / 2);
max-width: var(--pc-content-width);
transform: translateY(100%);
}
.bottom-sheet.is-visible {
transform: translateY(0);
}
.bottom-sheet__dim {
left: auto;
right: calc((100vw - 1000px) / 2);
width: var(--pc-content-width);
transform: none;
}
}
/* í—¤ë”/드래그핸들/타ì´í‹€ — Figma BottomSheetHeader(CT-003/CL-006 공통 실측):
패딩 16/24/16, 핸들 #D3D3D3 + 핸들-타ì´í‹€ 간격 20, 타ì´í‹€ 18px/600/lh24/-0.01em.
(기존엔 ShareBottomSheetë§Œ 로컬로 ì´ ê°’ì„ ë§žì¶”ê³ ìžˆì—ˆìŒ â€” 공용 셸로 승격) */
.bottom-sheet__header {
display: flex;
flex-direction: column;
align-items: center;
padding: 16px 24px 16px;
touch-action: none;
user-select: none;
cursor: grab;
}
.bottom-sheet__drag-handle {
width: 60px;
height: 4px;
border-radius: 999px;
background-color: #d3d3d3;
margin-bottom: 20px;
}
.bottom-sheet__title {
margin: 0;
font-family: Pretendard, sans-serif;
font-size: 18px;
font-weight: 600;
line-height: 24px;
letter-spacing: -0.01em;
color: #1a1a1a;
}
/* ë²¤ë” aurora.cssê°€ 화면마다 다른 ì¡°ìƒ í´ëž˜ìФ(.order-confirm__btn-group .btn,
.cash-receipt__btn-wrap .btn 등)ì— height/border-radius/color를 ì´ë¯¸ ì •ì˜í•´ë‘” 경우가
ë§Žì•„(ëª…ì‹œë„ 0,2,0), ì „ì— ë‹¨ì¼ í´ëž˜ìФ(.btn--dark/.btn--caution, ëª…ì‹œë„ 0,1,0)로는
화면마다 우연히 ê·¸ ì¡°ìƒ í´ëž˜ìŠ¤ëª…ê³¼ ê²¹ì¹ ë•Œë§ˆë‹¤ ê³„ì† ë°€ë ¸ë‹¤(주문완료/ê²°ì œì‹¤íŒ¨/
현금ì˜ìˆ˜ì¦ 모달ì—서 ì‹¤ì œë¡œ ë°œìƒ, 매번 화면별로 ìž¬ì •ì˜í•´ì•¼ í–ˆìŒ) — ì´ ì»´í¬ë„ŒíЏ
ìžì‹ ì˜ í´ëž˜ìŠ¤ë¥¼ ë‘ ë²ˆ 걸어(.eoshin-btn.eoshin-btn) 명시ë„를 0,2,0으로 맞춰서
ì–´ë–¤ í™”ë©´ì˜ ì–´ë–¤ wrapper í´ëž˜ìФì—ì„œë„ ë” ì´ìƒ 안 깨지게 한다(로드 ìˆœì„œìƒ ì´
파ì¼ì´ ë²¤ë” CSS보다 í•ìƒ ë‚˜ì¤‘ì— ë¡œë“œë˜ë¯€ë¡œ ë™ë¥ ì´ë©´ ì´ íŒŒì¼ì´ ì´ê¸´ë‹¤) */
.eoshin-btn.eoshin-btn {
height: 52px;
border: 0;
border-radius: 8px;
font-family: Pretendard, sans-serif;
font-size: 16px;
}
.eoshin-btn.eoshin-btn--dark {
background-color: #f0f4fe;
color: #3c56d6;
font-weight: 500;
}
.eoshin-btn.eoshin-btn--caution {
background-color: #4a69ea;
color: #ffffff;
font-weight: 600;
}
.eoshin-btn.eoshin-btn:disabled {
background-color: #e6e6e6;
color: #ababab;
cursor: default;
}
/* Figma CL-007 Toast/Type — ë‹¤í¬ ë°°ê²½(#202020) + radius 12, 하단 ê³ ì •.
position:fixed는 ë·°í¬íЏ 기준ì´ë¼ PCì—서 .page__content.site(우측 --pc-content-width
컬럼)ê°€ ì•„ë‹ˆë¼ í™”ë©´ ì •ì¤‘ì•™ì— ëœ¨ëŠ” ë¬¸ì œê°€ ìžˆì—ˆìŒ â€” _productDetail.cssì˜ .share-toast와
ë™ì¼í•œ 3단 ë¸Œë ˆì´í¬í¬ì¸íŠ¸ë¡œ 콘í…ì¸ ì»¬ëŸ¼ í/위치를 그대로 ë”°ë¼ê°€ê²Œ 함 */
/* 페ì´ë“œ+슬ë¼ì´ë“œì—… ì¸/아웃 — ToastProviderê°€ BottomSheet와 ë™ì¼í•œ mount-hold 패턴으로
is-visible í´ëž˜ìŠ¤ë¥¼ 붙였다 뗀다. ë¸Œë ˆì´í¬í¬ì¸íŠ¸ë§ˆë‹¤ 가로 ì •ë ¬ìš© transform(translateX)ì´
달ë¼ì„œ, 닫힌 ìƒíƒœì˜ translateY(8px)를 ê° ë¸Œë ˆì´í¬í¬ì¸íŠ¸ì˜ ê¸°ì¡´ transformì— ì´ì–´ë¶™ì´ê³
is-visibleì—서 ê·¸ 오프셋만 0으로 ë˜ëŒë¦°ë‹¤(BottomSheet.css와 ë™ì¼í•œ ë°©ì‹) */
.app-toast {
position: fixed;
left: 20px;
right: 20px;
bottom: 90px;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
/* Figma Toast/Type — ë†’ì´ 48 ê³ ì •(좌우 16, ìƒí•˜ 0), fill #202020 a0.88 */
padding: 0 16px;
min-height: 48px;
border-radius: 12px;
background-color: rgba(32, 32, 32, 0.88);
box-sizing: border-box;
opacity: 0;
transform: translateY(8px);
transition: opacity 0.25s ease, transform 0.25s ease;
pointer-events: none;
}
.app-toast.is-visible {
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
@media (min-width: 501px) {
.app-toast {
left: 50%;
right: auto;
width: calc(500px - 40px);
transform: translateX(-50%) translateY(8px);
}
.app-toast.is-visible {
transform: translateX(-50%) translateY(0);
}
}
@media (min-width: 1001px) {
.app-toast {
left: auto;
right: calc((100vw - 1000px) / 2 + 20px);
width: calc(var(--pc-content-width) - 40px);
transform: translateY(8px);
}
.app-toast.is-visible {
transform: translateY(0);
}
}
.app-toast__content {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
/* Figma CL-007 — ì°œ(WishList) 변형만 ì•„ì´ì½˜-í…스트 gap 4(카트 ë³€í˜•ì€ 8) */
.app-toast__content--like {
gap: 4px;
}
.app-toast__message {
font-family: Pretendard, sans-serif;
font-size: 13px;
font-weight: 400;
color: #ffffff;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* ì•¡ì…˜("보러가기") — Figma 13px/400(메시지와 ë™ì¼ 굵기) */
.app-toast__action {
flex-shrink: 0;
background: none;
border: none;
padding: 0;
font-family: Pretendard, sans-serif;
font-size: 13px;
font-weight: 400;
color: #ffffff;
white-space: nowrap;
}
.form-button-group {
display: flex;
gap: 8px;
}
.form-button-group .btn {
flex: 1;
width: auto;
height: 52px;
border-radius: 8px;
}
/* ìƒí’ˆ ìž¬ìž…ê³ ì•Œë¦¼ ì‹ ì² â€” Figma PD-015(6901:32404).
ë²¤ë” aurora.cssê°€ 하필 ì´ ê¸°ëŠ¥ì´ ì“°ëŠ” í´ëž˜ìŠ¤ëª… ì „ë¶€(.restock-notification,
.restock-notification__modal, .restock-notification-form__* 등)ì— ëŒ€í•´ ìžì²´ 구 스킨
기본 êµ¬í˜„ì„ í†µì§¸ë¡œ ê°–ê³ ìžˆì–´ì„œ, ì´ íŒŒì¼ì´ ìƒê¸°ê¸° ì „ê¹Œì§€ëŠ” ê·¸ 구 ìŠ¤í‚¨ì´ ê·¸ëŒ€ë¡œ
노출ë˜ê³ 있었ìŒ(ì²´í¬ë°•스/ìž…ë ¥ì°½/ì¹©ë¿ ì•„ë‹ˆë¼ ëª¨ë‹¬ ìžì²´ padding/여백까지). 아래ì—서
발견ë˜ëŠ” 대로 하나씩 ë¬´ë ¥í™”í•˜ë©° Figma 실측값으로 다시 그린다 */
/* ë²¤ë” .restock-notification{padding:20px}ì´ ê° ì„¹ì…˜ì´ ì´ë¯¸ 갖는 16px 패딩 위ì—
추가로 20px를 ë” ì–¹ì–´ì„œ ì „ë¶€ ì´ì¤‘ ì—¬ë°±ì´ ìƒê¸°ê³ ìžˆì—ˆìŒ */
.restock-notification {
padding: 0;
}
/* ë²¤ë” .restock-notification__modal{padding:20px;margin-bottom:74px}ê°€ ëª¨ë‹¬ì„ ê°ì‹¼
컨테ì´ë„ˆ ìžì²´ì— 20px íŒ¨ë”©ì„ ì¤˜ì„œ, ê·¸ ì•ˆì˜ .title-modal__content(í 100%/최소 375px)ê°€
ì‹¤ì œ ë·°í¬íŠ¸ë³´ë‹¤ 40px ë” ë„“ì–´ì ¸ 오른쪽으로 ë°€ë ¤ë‚˜ê³ ê°€ë¡œ 스í¬ë¡¤ì´ ìƒê¸°ë˜ ì›ì¸.
푸터 여백(margin-bottom:74px)ë„ ì´ í™”ë©´ì—” ë³„ë„ ê³ ì • 하단바가 없어 불필요한 빈
공간만 만듦 — 둘 다 ì œê±° */
.restock-notification__modal {
padding: 0;
margin-bottom: 0;
}
.restock-notification-form {
display: flex;
flex-direction: column;
}
/* ── 섹션 타ì´í‹€ 공통(ìƒí’ˆëª…/옵션/í’ˆì ˆ 옵션 리스트/ì‹ ì²ìžëª…/휴대í°ë²ˆí˜¸) —
Figma SectionTitleContatiner: 16px SemiBold, 좌우 16px, 위 16px ── */
.restock-notification-form__sold-out-option__section-title,
.restock-notification-form__label {
display: block;
padding: 16px 16px 0;
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 600;
color: #1a1a1a;
}
/* ë²¤ë” CSSê°€ ì´ ì •í™•í•œ í´ëž˜ìŠ¤ëª…(.restock-notification-form__label)ì— êµ¬ 스킨 가로배치
í”ì (width:70px, flex-shrink:0, display:flex)ì„ ì´ë¯¸ ê°–ê³ ìžˆì–´ì„œ, 위ì—서 displayë§Œ
block으로 ë˜ëŒë ¤ë„ widthê°€ 그대로 남아 "ì‹ ì²ìžëª…" ë¼ë²¨ì´ 70px íì— ë¼ì—¬ 줄바꿈ë˜ê³
ìžˆì—ˆìŒ â€” 명시ì 으로 리셋 */
.restock-notification-form__label {
width: auto;
flex-shrink: initial;
}
/* ë²¤ë” .restock-notification-form__sold-out-option{width/height:100%;padding:20px 0}ê°€
위/아래 20px íŒ¨ë”©ì„ ì¶”ê°€ë¡œ 얹어서 "ìƒí’ˆëª…" 타ì´í‹€ ìœ„ìª½ì´ 16+20=36px로 ì´ì¤‘ 여백 */
.restock-notification-form__sold-out-option {
width: auto;
height: auto;
padding: 0;
}
/* ── ìƒí’ˆëª…/ë‹¨ì¼ ì˜µì…˜ 칩 — Figma ProductNameChip(bg #fafafa, radius 8, ê°€ìš´ë° ì •ë ¬) ──
벤ë”ê°€ ê°™ì€ í´ëž˜ìŠ¤ëª…ì— width/height:100%를 줘서 부모 높ì´ë§Œí¼ 늘어나 ìžˆì—ˆìŒ */
.restock-notification-form__sold-out-option__product-name {
width: auto;
height: auto;
margin: 8px 16px 16px;
padding: 12px;
background-color: #fafafa;
border-radius: 8px;
text-align: center;
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 500;
color: #404040;
}
/* ── í’ˆì ˆ ì˜µì…˜ì´ ì—¬ëŸ¬ ê°œì¼ ë•Œì˜ ì²´í¬ë°•스 리스트 — Figma OptionList(padding 16, gap 8) ── */
.restock-notification-form__sold-out-option__list {
display: flex;
flex-direction: column;
gap: 8px;
padding: 8px 16px 16px;
}
/* ── ì‹ ì²ìž ì •ë³´ ìž…ë ¥ — Figma InputSection ──
ë²¤ë” .restock-notification-form__applicant-info{gap:12px;padding:20px 0}ê³¼
.restock-notification-form__item{gap:20px}ì´ ê° ìž…ë ¥ 필드 ìžì²´ 여백 위ì—
추가로 ì—¬ë°±ì„ ì–¹ê³ ìžˆì–´ì„œ ì „ë¶€ 0으로 ë¦¬ì…‹í•˜ê³ ê° ìš”ì†Œ ìžì‹ ì˜ íŒ¨ë”©ë§Œ 남긴다 */
.restock-notification-form__applicant-info {
display: flex;
flex-direction: column;
gap: 0;
padding: 0;
}
.restock-notification-form__item {
display: flex;
flex-direction: column;
gap: 0;
}
.restock-notification-form__input-wrap {
flex: none;
padding: 4px 16px 16px;
}
.restock-notification-form__input-wrap .text-field {
display: flex;
align-items: center;
height: 40px;
padding: 0 12px;
background-color: #ffffff;
}
.restock-notification-form__input-wrap .text-field input {
width: 100%;
font-family: Pretendard, sans-serif;
font-size: 14px;
color: #1a1a1a;
}
.restock-notification-form__input-wrap .text-field input::placeholder {
color: #c2c2c2;
}
/* ── ì²´í¬ë°•스(í’ˆì ˆ 옵션 ì„ íƒ / ê°œì¸ì •ë³´ ë™ì˜ 공통) — Figma General/CheckBox(20x20 ì›í˜•).
ì›í˜•/기본 색ìƒì€ _sharedComponents.css로 ì´ì „. ë²¤ë” <Checkbox>ê°€ label/childrenì„ ì•ˆ
받으면 .check-radio__labelì´ ì•„ë‹ˆë¼ ë°”ê¹¥ .form-check__labelì„ í˜•ì œë¡œ ë Œë”ë§í•˜ë¯€ë¡œ
(회ì›ì •ë³´ìˆ˜ì • 등과 다른 구조) :has()로 ì²´í¬ ì—¬ë¶€ì— ë”°ë¼ ë°”ê¹¥ ë¼ë²¨ ìƒ‰ì„ ë°”ê¾¼ë‹¤ —
_layout.css .text-field:has(input:disabled)와 ë™ì¼í•œ 패턴 */
.restock-notification-form .form-check {
display: flex;
align-items: center;
gap: 8px;
}
/* sold-out 옵션 리스트는 flex í–‰ 안ì—서 ì•„ì´ì½˜ì´ 찌그러지지 않게 flex-shrinkë§Œ ë³„ë„ ì§€ì • */
.restock-notification-form .check-radio__ico {
flex-shrink: 0;
}
/* 벤ë”ê°€ í’ˆì ˆ 옵션 ì²´í¬ë°•스ì—ë§Œ 별ë„로 ë” êµ¬ì²´ì ì¸(í´ëž˜ìФ 3~4ê°œ) ê·œì¹™ì„ ê°–ê³ ìžˆì–´ì„œ,
ì²´í¬ ì‹œ ë°°ê²½ì´ ê²€ì •(_sharedComponents.css와 통ì¼ëœ 색)ì´ ì•„ë‹ˆë¼ ë¸Œëžœë“œ í¬ì¸íŠ¸ì»¬ëŸ¬
(파란색)로 ìƒˆì–´ë‚˜ì˜¤ê³ ìžˆì—ˆìŒ â€” 명시ë„를 ë§žì¶° 다시 ì´ê¹€ */
.restock-notification-form__sold-out-option__list .form-check .check-radio__ico {
background-color: #ffffff;
}
.restock-notification-form__sold-out-option__list .form-check input:checked ~ .check-radio__ico {
background-color: #111111;
}
.restock-notification-form .form-check__label {
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
color: #9b9b9b;
}
.restock-notification-form .form-check:has(input:checked) .form-check__label {
color: #1a1a1a;
}
/* ── ê°œì¸ì •ë³´ 수집 ë™ì˜ — Figma QnACautionSection(padding 16/20) ── */
.restock-notification-form__agreement {
display: flex;
flex-direction: column;
gap: 8px;
padding: 16px 20px;
}
/* ë²¤ë” CSSê°€ ì´ í´ëž˜ìŠ¤ëª…ì— ì´ë¯¸ background/max-height/overflow-y/margin-topì„
심어놨ìŒ(Figma ListContainer 실측 ë†’ì´ 162px와 ë²¤ë” ê¸°ë³¸ max-height:160pxê°€ ê±°ì˜
ì¼ì¹˜ — ë‚´ìš©ì´ ë„˜ì¹˜ë©´ 스í¬ë¡¤ë˜ëŠ” ì›ëž˜ 설계로 ë³´ìž„, 그대로 ìœ ì§€). margin-topë§Œ
부모(.restock-notification-form__agreement)ì˜ gap:8pxê³¼ ì´ì¤‘으로 ê²¹ì³ì„œ 0으로 리셋 */
.restock-notification-form__agreement-content {
margin-top: 0;
padding: 12px;
background-color: #fafafa;
border-radius: 8px;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
color: #404040;
line-height: 18px;
}
.restock-notification-form__agreement-content p + p {
margin-top: 4px;
}
/* ── 하단 CTA — 색ìƒ/radius는 style.css ì „ì— .btn--dark/.btn--cautionì„ ë”°ë¥´ê³ ,
버튼 배치(가로배치·간격·높ì´)는 @shared/FormButtonGroupì„ ê·¸ëŒ€ë¡œ ì“°ê³
ì—¬ê¸°ì„ ì´ ëª¨ë‹¬ ì „ìš© 여백만 ì§€ì • ── */
.restock-notification__btn-wrap {
/* Figma Button/CTAArea padding: 12px 16px(ìƒí•˜ 12/좌우 16) — ìƒí•˜/좌우가 뒤바뀌어 ìžˆì—ˆìŒ */
padding: 12px 16px;
}
/* OptionDropdown — 네ì´í‹°ë¸Œ <select> ëŒ€ì‹ ì“°ëŠ” 커스텀 드ë¡ë‹¤ìš´.
ì›ëž˜ ìƒí’ˆìƒì„¸ 구매 바텀시트(.purchase-sheet) 안ì—서만 스코프해 ì“°ë˜ ê±¸
ì´ë©”ì¼ ë„ë©”ì¸ ì„ íƒ ë“± 다른 ê³³ì—ì„œë„ ìž¬ì‚¬ìš©í•˜ë„ë¡ ì»´í¬ë„ŒíЏ ì†Œìœ CSS로 승격.
펼침 목ë¡ì€ 문서 íë¦„ì— ìžë¦¬ë¥¼ 차지하지 않ë„ë¡ íŠ¸ë¦¬ê±° 기준 ì ˆëŒ€ 위치로 ë„ìš°ê³
(ì˜ˆì „ì—” 목ë¡ì´ ì‹¤ì œ ë ˆì´ì•„웃 높ì´ë¥¼ 차지해 ì—´ 때마다 아래 콘í…ì¸ ê°€ ë°€ë ¤ ë‚´ë ¤ê°”ìŒ),
opacity/transform으로 ì—´ê³ ë‹«ížˆëŠ” íŠ¸ëžœì§€ì…˜ì„ ì¤€ë‹¤ */
.option-dropdown {
position: relative;
width: 100%;
margin-bottom: 12px;
}
.option-dropdown__trigger {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 40px;
padding: 0 12px;
background-color: #ffffff;
border: 1px solid #e6e6e6;
border-radius: 8px;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
text-align: left;
}
.option-dropdown.is-disabled .option-dropdown__trigger {
cursor: not-allowed;
opacity: 0.5;
}
/* 펼침 ìƒíƒœ — Figma Option/BottomSheet(6901:32152): 컨테ì´ë„ˆ ì „ì²´ê°€ 1px #202020
ë³´ë”로 ë°”ë€Œê³ , 목ë¡ì´ íŠ¸ë¦¬ê±°ì— ë¶™ì–´ 한 박스처럼 ì´ì–´ì§„다(트리거 하단 ë¼ìš´ë“œ ì œê±°,
목ë¡ì€ ìƒë‹¨ ë¼ìš´ë“œ ì œê±° + ìƒë‹¨ ë³´ë” ì—†ì´ íŠ¸ë¦¬ê±° ë³´ë”를 그대로 ì´ì–´ë°›ìŒ) */
.option-dropdown.is-open .option-dropdown__trigger {
border-color: #202020;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.option-dropdown.is-open .option-dropdown__list {
border-color: #202020;
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.option-dropdown__placeholder {
color: #9b9b9b;
}
.option-dropdown__value {
color: #404040;
}
.option-dropdown__chevron {
flex-shrink: 0;
transform: rotate(90deg);
transition: transform 0.2s;
}
.option-dropdown.is-open .option-dropdown__chevron {
transform: rotate(-90deg);
}
/* 트리거 바로 아래 ë– ìžˆëŠ” ëª©ë¡ â€” ê¸°ë³¸ê°’ì€ ì‚´ì§ ìœ„(-4px)·투명 ìƒíƒœë¡œ 숨겨ë‘ê³
is-openì¼ ë•Œë§Œ ì œìžë¦¬ë¡œ ë‚´ë ¤ì˜¤ë©° 나타나게 해서 여닫는 íŠ¸ëžœì§€ì…˜ì„ ë§Œë“ ë‹¤.
position:absoluteë¼ ë¬¸ì„œ í름(ë ˆì´ì•„웃 밀림)ì—는 ì˜í–¥ì„ 안 주지만, opacity/visibility만으로
숨기면 ì‹¤ì œ 박스 í¬ê¸°(240px)는 ê³„ì† ì°¨ì§€í•˜ê³ ìžˆì–´ì„œ — 바텀시트처럼 ë³¸ë¬¸ì´ ìŠ¤í¬ë¡¤ 가능한
컨테ì´ë„ˆ ì•ˆì— ìžˆìœ¼ë©´ ì´ ì•ˆ ë³´ì´ëŠ” 240px 박스까지 scrollHeightì— ìž¡í˜€ 바텀시트가 닫힌
ìƒíƒœì—ì„œë„ ì‹¤ì œë³´ë‹¤ í¬ê²Œ(ë˜ëŠ” 스í¬ë¡¤ 가능하게) 계산ë˜ëŠ” ë¬¸ì œê°€ 있었ìŒ.
닫혀 ìžˆì„ ë•Œ max-height:0 + overflow:hidden으로 박스 ìžì²´ë¥¼ ì ‘ì–´ì„œ ì–´ë–¤ ì¡°ìƒì˜
스í¬ë¡¤ ì˜ì—ì—ë„ ìž¡ížˆì§€ 않게 í•˜ê³ , 열릴 때만 ì‹¤ì œ 높ì´ë¡œ 펼ì³ì§€ë„ë¡ íŠ¸ëžœì§€ì…˜í•œë‹¤. */
.option-dropdown__list {
position: absolute;
top: 100%;
left: 0;
right: 0;
z-index: 10;
max-height: 0;
overflow: hidden;
background-color: #ffffff;
border: 1px solid #e6e6e6;
border-radius: 8px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
opacity: 0;
transform: translateY(-4px);
visibility: hidden;
pointer-events: none;
transition: max-height 0.2s ease, opacity 0.15s ease, transform 0.15s ease, visibility 0.2s;
scrollbar-width: none;
}
.option-dropdown__list::-webkit-scrollbar {
display: none;
}
.option-dropdown.is-open .option-dropdown__list {
max-height: 240px;
overflow-y: auto;
opacity: 1;
transform: translateY(0);
visibility: visible;
pointer-events: auto;
}
/* 바텀시트 안ì—서는 ì˜¤ë²„ë ˆì´ë¡œ ë„ìš°ì§€ ì•Šê³ ì‹¤ì œ ë ˆì´ì•„웃 ê³µê°„ì„ ì°¨ì§€í•˜ê²Œ 한다 —
펼ì³ì§€ëŠ” ë§Œí¼ ì‹œíŠ¸ ìžì²´ê°€ 늘어나며(하단 ê³ ì •ì´ë¼ 위쪽 가장ìžë¦¬ê°€ 위로 올ë¼ì˜¤ë©°) 펼ì³ì§„다.
페ì´ì§€ì— 그냥 ë†“ì˜€ì„ ë•Œ(ì˜¤ë²„ë ˆì´)와 달리, 바텀시트 스í¬ë¡¤ ì˜ì— 안ì—서는 ì´ë ‡ê²Œ ì‹¤ì œë¡œ
ìžë¦¬ë¥¼ 차지해야 트리거 아래 다른 내용과 겹치지 ì•Šê³ , 화면 아래로 ìž˜ë¦¬ì§€ë„ ì•ŠëŠ”ë‹¤. */
.option-dropdown--in-sheet .option-dropdown__list {
position: static;
top: auto;
left: auto;
right: auto;
box-shadow: none;
}
/* (펼침 목ë¡ì´ íŠ¸ë¦¬ê±°ì— ë¶™ëŠ” 한 박스 êµ¬ì¡°ë¼ in-sheetì—ì„œë„ ë³„ë„ ê°„ê²© ì—†ìŒ) */
.option-dropdown__item {
display: flex;
align-items: center;
justify-content: space-between;
height: 40px;
padding: 0 12px;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
color: #404040;
cursor: pointer;
}
.option-dropdown__item.is-disabled {
color: #ababab;
cursor: not-allowed;
}
.option-dropdown__item-note {
flex-shrink: 0;
margin-left: 12px;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
color: #9b9b9b;
}
/* í’ˆì ˆ ì˜µì…˜ì˜ ìž¬ìž…ê³ ì•Œë¦¼ 칩 — Figma NoticeButton(6901:32209) 실측: ë°°ê²½ #f0f4fe,
radius 4, ì•„ì´ì½˜-í…스트 gap 4px, í…스트 12px/400/#3c56d6 */
.option-dropdown__restock-chip {
display: flex;
flex-shrink: 0;
align-items: center;
gap: 4px;
margin-left: 12px;
padding: 4px 8px;
border: none;
border-radius: 4px;
background-color: #f0f4fe;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
color: #3c56d6;
cursor: pointer;
}
/* ìƒí’ˆ í…스트 옵션(ê°ì¸/ë§žì¶¤ì œìž‘ 등 ì§ì ‘ ìž…ë ¥) — Figmaì— ì´ ìž…ë ¥ í•„ë“œì˜ ì‹¤ì œ 목업ì´
없어, ì´ êµ¬ë§¤ ë°”í…€ì‹œíŠ¸ì˜ ë‹¤ë¥¸ ìž…ë ¥ 요소(QuantityChanger/OptionDropdown)와 ê°™ì€ í†¤
(14px/500, ë³´ë” #e6e6e6/radius 8)으로 맞춘다. vertical=false(êµ¬ë²„ì „ OptionQuantity)는
ë¼ë²¨+ìž…ë ¥ì„ í•œ 줄로, vertical=true(OptionQuantityV2/사ì€í’ˆí˜• 추가옵션)는 ë¼ë²¨ì„
ìž…ë ¥ ìœ„ì— ìŒ“ëŠ”ë‹¤ */
.text-option {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
}
.text-option--vertical {
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.text-option__label {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 4px;
white-space: nowrap;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
color: #404040;
}
.text-option__label em {
font-style: normal;
font-size: 13px;
color: #ff272b;
}
.text-option__input {
flex: 1;
}
.text-option__input input {
height: 40px;
padding: 0 12px;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
color: #404040;
}
.text-option__input ~ .character-counter__status {
margin-top: 4px;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
color: #9b9b9b;
}
/* 벤ë”ê°€ 현재 글ìžìˆ˜ 숫ìžì—ë§Œ --point-color(몰 관리ìžê°€ 바꿀 수 있는 색ìƒ)를 ê°•ì œë¡œ
입혀놔서, ì–´ì‹ ìƒµ í¬ì¸íŠ¸ì»¬ëŸ¬(파란색)ê°€ 그대로 ìƒˆì–´ë‚˜ì˜¤ê³ ìžˆì—ˆìŒ â€” 위 부모 ìƒ‰ì„ ê·¸ëŒ€ë¡œ
ë¬¼ë ¤ë°›ê²Œ 리셋 */
.text-option__input ~ .character-counter__status .character-counter__count {
color: inherit;
font-weight: 400;
}
/* 구매 ë™ì˜ 아코디언 — Figma AgreementAccordion(7298:49638).
ë²¤ë” aurora.cssì˜ .order-sheet__terms{padding:20px} ê¸°ë³¸ê°’ì„ Figma 실측
(pad 16/16/28, ìƒë‹¨ 1px #E6E6E6 ë³´ë”)으로 êµì²´í•œë‹¤ */
.order-sheet__terms {
display: block;
padding: 16px 16px 28px;
border-top: 1px solid #e6e6e6;
background-color: #fff;
}
/* AgreementHeader — 좌측 마스터 ì²´í¬ ë¸”ë¡ + 우측 ì‰ë¸Œë¡ í† ê¸€, gap 20 */
.order-sheet__terms-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
}
/* RadioHeadWrapper — ì²´í¬ í–‰ê³¼ ì„¤ëª…ë¬¸ì´ gap 4ì¸ ì„¸ë¡œ ìŠ¤íƒ */
.order-sheet__terms-master {
display: flex;
flex-direction: column;
gap: 4px;
min-width: 0;
}
.order-sheet__terms-master-btn {
display: flex;
align-items: center;
gap: 8px;
padding: 0;
border: none;
background: none;
cursor: pointer;
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 24px;
color: #404040;
text-align: left;
}
/* 설명문 — ì²´í¬ë°•스(20px)+간격(8px)ë§Œí¼ ë“¤ì—¬ì“°ê¸°(Figma EmptySpace 28px) */
.order-sheet__terms-description {
margin: 0;
padding-left: 28px;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
line-height: 18px;
color: #9b9b9b;
}
/* ChevronDown 24px — 공용 ChevronRightIconì„ 90ë„ íšŒì „í•´ 사용, 펼치면 위로 뒤집힘 */
.order-sheet__terms-toggle {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
border: none;
background: none;
cursor: pointer;
}
.order-sheet__terms-toggle svg {
transform: rotate(90deg);
transition: transform 0.2s ease;
}
.order-sheet__terms-toggle.is-open svg {
transform: rotate(-90deg);
}
/* ì›í˜• ì²´í¬ë°•스(20px) — 미체í¬: í° ë°°ê²½ + #E6E6E6 ë³´ë” / ì²´í¬: #111 ë°°ê²½ + í° ì²´í¬ */
.order-sheet__terms-checkbox {
flex-shrink: 0;
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid #e6e6e6;
background-color: #ffffff;
box-sizing: border-box;
}
.order-sheet__terms-checkbox.is-checked {
border: none;
background-color: #111111;
background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27none%27%3E%3Cpath d=%27M3 8.5L6.5 12L13 4.5%27 stroke=%27%23ffffff%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: center;
}
/* AgreementList — 펼친 ìƒíƒœì˜ 개별 약관 í–‰, í–‰ ê°„ gap 8, í—¤ë”와 간격(Figma paddingTop ìƒë‹¹) */
.order-sheet__terms-list {
display: flex;
flex-direction: column;
gap: 8px;
margin: 16px 0 0;
padding: 0;
list-style: none;
}
.order-sheet__term-checker {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.order-sheet__term-check-btn {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
padding: 0;
border: none;
background: none;
cursor: pointer;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 18px;
color: #9b9b9b;
text-align: left;
}
/* 약관 ìƒì„¸ — Figma는 밑줄 ë²„íŠ¼ì´ ì•„ë‹ˆë¼ ìš°ì¸¡ 회색 í…스트 "ìƒì„¸ë³´ê¸°"(12/400/#9B9B9B) */
.order-sheet__term-detail-btn {
flex-shrink: 0;
padding: 0;
border: none;
background: none;
cursor: pointer;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
line-height: 18px;
color: #9b9b9b;
}
/* ── ìƒí’ˆìƒì„¸ 구매 ì˜ì— — Figma Button/CTAArea(5236:30980) + 구매 옵션 ì„ íƒ
바텀시트(5236:31195) — ì¸ë¼ì¸ìœ¼ë¡œ 펼ì³ì§€ë˜ ë°©ì‹ì„ ì‹¤ì œ 바텀시트 모달로 êµì²´ ── */
/* Figma Button/CTAArea는 fill #FFFFFFë§Œ ìžˆê³ ìƒë‹¨ ë³´ë”ê°€ ì—†ìŒ â€” 벤ë”
.purchase{border-top:1px solid var(--default-color)}ê°€ ë‚¨ì•„ìžˆì—ˆìŒ */
.purchase {
border-top: none;
}
.purchase__cart-trigger-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
/* Figma IconArea gap: 4px */
gap: 4px;
width: 56px;
flex-shrink: 0;
background: none;
border: none;
padding: 4px 0;
font-family: Pretendard, sans-serif;
font-size: 13px;
font-weight: 400;
letter-spacing: 0.0015em;
color: #404040;
white-space: nowrap;
}
/* 찜하기 버튼 — Figma WishButton(5236:30980;366:4092)ê³¼ ë™ì¼í•˜ê²Œ 장바구니 버튼과
ê°™ì€ ì„¸ë¡œ(ì•„ì´ì½˜+ë¼ë²¨) ë ˆì´ì•„웃/타ì´í¬ë¡œ 맞춤. ë² ì´ìФ ìŠ¤í‚¨ì´ ê¸°ë³¸ìœ¼ë¡œ ë‘는 회색
í…Œë‘리 박스는 Figmaì— ì—†ì–´ì„œ ì œê±° */
.purchase__like-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
/* Figma IconArea gap: 4px */
gap: 4px;
width: 56px;
flex-shrink: 0;
font-family: Pretendard, sans-serif;
font-size: 13px;
font-weight: 400;
letter-spacing: 0.0015em;
color: #404040;
white-space: nowrap;
border: none !important;
padding: 4px 0 !important;
}
/* ë² ì´ìФ ìŠ¤í‚¨ì´ span 태그 ìžì²´ì— border/padding/border-radius를 ì „ì—으로 걸어놔서
(aurora.css: span{padding:12px;border-radius:4px;border:1px solid #dadada}),
찜하기/장바구니 ë¼ë²¨ í…스트ì—ë„ íšŒìƒ‰ í…Œë‘리 박스가 그대로 ì”Œì›Œì§€ê³ ìžˆì—ˆìŒ â€” 리셋 */
.purchase__like-btn span,
.purchase__cart-trigger-btn span {
padding: 0;
border: none;
border-radius: 0;
}
/* "구매하기" 버튼 — ë°°ê²½/radius/ê¸€ìž êµµê¸°ëŠ” style.cssì˜ ì „ì— .btn--caution 공용 스타ì¼ì„
ë”°ë¥´ê³ , ì—¬ê¸°ì„ ì´ í™”ë©´ ë ˆì´ì•„웃만 ì§€ì •. Figma ë Œë” ì´ë¯¸ì§€ë¥¼ 픽셀 단위로 스캔해서 확ì¸í•œ
ê²°ê³¼ 찜하기/장바구니 묶ìŒê³¼ 구매하기 버튼 사ì´ì— 28px ì •ë„ì˜ ê³ ì • ê°„ê²©ì´ ìžˆê³ , ê·¸ 뒤로
ë²„íŠ¼ì´ ë‚¨ì€ íì„ ë„“ê²Œ 채우는 í˜•íƒœì˜€ìŒ â€” ë² ì´ìФ ìŠ¤í‚¨ì˜ ê¸°ë³¸ gap(6px)만으로는 간격ì´
부족해서 margin-left로 ë³´ì • */
.purchase__buy-btn {
flex: 1;
margin-left: 22px;
padding: 12px 20px;
}
/* ìž¬ìž…ê³ ì•Œë¦¼ 받기 — Figma PD-001_ìƒí’ˆìƒì„¸(í’ˆì ˆ, 6901:32404 "ìƒí’ˆìž¬ìž…ê³ ì‹ ì²" 섹션)
실측: í° ë°°ê²½ + 진한 í…Œë‘리(#202020) + radius 8, í…스트 16px/#404040.
ìž¬ìž…ê³ ì•Œë¦¼ì´ ê°€ëŠ¥í•˜ë©´ ì´ ë²„íŠ¼ 하나만 찜하기 옆 ë‚¨ì€ íì„ ì „ë¶€ ì±„ìš°ê³ ("구매불가"는
ê°™ì´ ì•ˆ ë³´ìž„ — Purchase.tsxì—서 서로 배타ì 으로 ë Œë”ë§) */
.purchase__restock-btn {
flex: 1;
height: auto;
/* ë² ì´ìФ 스킨 .purchase__button-wrapì˜ flex gap(6px)ì— 6px를 ë”í•´ Figma 실측
ì°œí•˜ê¸°â†”ìž¬ìž…ê³ ì•Œë¦¼ë°›ê¸° 간격(12px)ì„ ë§žì¶¤ */
margin: 0 0 0 6px;
padding: 12px 20px;
background-color: #ffffff;
border: 1px solid #202020;
border-radius: 8px;
font-family: Pretendard, sans-serif;
font-size: 16px;
/* Figma "ìž¬ìž…ê³ ì•Œë¦¼ 받기" 16px/500/#404040 */
font-weight: 500;
color: #404040;
}
/* ìž¬ìž…ê³ ì•Œë¦¼ ì‹ ì² ì™„ë£Œ ìƒíƒœ — Figma 6901:34282: #E6E6E6 ë°°ê²½ + #ABABAB ë¼ë²¨ì˜
비활성 버튼("ìž¬ìž…ê³ ì•Œë¦¼ 받기 완료")으로 ì „í™˜ */
.purchase__restock-btn--applied,
.purchase__restock-btn--applied:disabled {
background-color: #e6e6e6;
border: none;
color: #ababab;
cursor: default;
opacity: 1;
}
/* .product-detail로 ì¡°ìƒ ìŠ¤ì½”í”„ë¥¼ ë”í•´ 명시ë„를 올림 — style.cssì˜ .btn--dark(단ì¼
í´ëž˜ìФ, _productDetail.css import보다 ë’¤ì— ë¡œë“œë¨)ê°€ ì´ ê·œì¹™ê³¼ 명시ë„ê°€ 같아서
ì‹¤ì œë¡œëŠ” 그게 ì´ê²¨ ë°°ê²½/글ìžìƒ‰ì´ 연한 하늘색+파란 글ìžë¡œ ìƒˆì–´ë‚˜ê°€ê³ ìžˆì—ˆìŒ */
.product-detail .purchase__buy-btn--unpurchasable {
flex: 1;
margin-left: 12px;
padding: 12px 20px;
background-color: #9b9b9b;
color: #ffffff;
opacity: 1;
/* í’ˆì ˆì´ ì•„ë‹Œ ì‚¬ìœ (íŒë§¤ì¢…료 등)로 êµ¬ë§¤ë¶ˆê°€ì¼ ë• disabled ì†ì„±ì´ 안 붙어 í´ë¦ì€
막히지만(onClick ì—†ìŒ) 마우스 커서가 í‰ë²”한 í¬ì¸í„°ë¡œ 남아 ëˆŒëŸ¬ë„ ë˜ëŠ” 버튼처럼
ë³´ì˜€ìŒ â€” í•ìƒ ê¸ˆì§€ 커서로 표시 */
cursor: not-allowed;
}
/* 옵션 ì„ íƒ ë°”í…€ì‹œíŠ¸ëŠ” 공용 @shared/BottomSheet(.bottom-sheet)를 그대로 ì“°ê³ ,
.purchase-sheet는 ê·¸ ìœ„ì— ì˜µì…˜ 개수가 ë§Žì„ ë•Œë¥¼ 위한 최대 높ì´/스í¬ë¡¤ë§Œ 얹는
ë³´ì¡° í´ëž˜ìŠ¤ë¡œ 남김. 딤/í¬ì§€ì…”ë‹/PC ë°˜ì‘형/í—¤ë”/드래그핸들/타ì´í‹€ì€ ì „ë¶€
BottomSheet.cssê°€ ì´ë¯¸ 처리하므로 여기서 따로 ì •ì˜í•˜ì§€ ì•ŠìŒ */
.bottom-sheet.purchase-sheet {
max-height: 80vh;
overflow-y: auto;
}
.purchase-sheet__body {
/* Figma OptionSection/StepperSection/TotalPriceSection ëª¨ë‘ ì¢Œìš° 24px */
padding: 0 24px;
}
.purchase-sheet__cta {
display: flex;
gap: 8px;
/* Figma Button/CTAArea padding: 12px 16px — í•˜ë‹¨ë„ 12px */
padding: 12px 16px;
}
.purchase-sheet__cart-btn,
.purchase-sheet__buy-btn {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
height: 52px;
border-radius: 8px;
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 600;
}
.purchase-sheet__cart-btn {
border: none;
background-color: #f0f4fe;
color: #3c56d6;
/* Figma "장바구니 담기" 16px/500/#3C56D6 — 구매하기(600)와 굵기가 다름 */
font-weight: 500;
}
.purchase-sheet__buy-btn {
border: none;
background-color: #4a69ea;
color: #ffffff;
}
/* ── 옵션 ì„ íƒ ë°”í…€ì‹œíŠ¸ ë‚´ë¶€ — Figma Option/BottomSheet(5236:31195;964:6856) ──
ë² ì´ìФ 스킨 select-box/quantity/counter 기본 스타ì¼ì´ Figma와 ì „í˜€ 달ë¼ì„œ
바텀시트 안(.purchase-sheet)ì—서만 스코프해서 다시 그림. ì‹¤ì œ ë Œë”ë§ì€
OptionQuantityV2/ExtraProductOptionSelector 등 여러 ìžì‹ì´ ë‚˜ëˆ ë§¡ì§€ë§Œ, ì „ë¶€ ì´
ì»´í¬ë„ŒíŠ¸ê°€ 여는 .purchase-sheet 스코프 안ì—서만 쓰여서 여기 한 ê³³ì— ëª¨ì•„ë‘”ë‹¤.
"ìƒí’ˆ 옵션" 커스텀 드ë¡ë‹¤ìš´(OptionDropdown) 스타ì¼ì€ @shared/OptionDropdown로
ì»´í¬ë„ŒíŠ¸ì™€ 함께 승격 ì´ì „ — ì´ë©”ì¼ ë„ë©”ì¸ ì„ íƒ ë“± 다른 ê³³ì—ì„œë„ ìž¬ì‚¬ìš©í•˜ê¸° 위함 */
/* ì„ íƒëœ 옵션 카드(StepperBox) — ì˜…ì€ íšŒìƒ‰ ë°°ê²½, í…Œë‘리 ì—†ìŒ, radius 8 */
.purchase-sheet .quantity {
margin: 0 0 12px;
padding: 12px;
background-color: #fafafa;
border-radius: 8px;
position: relative;
}
/* ìƒí’ˆëª…ì´ ì˜µì…˜ ë¼ë²¨ ìœ„ì— ì¤‘ë³µìœ¼ë¡œ 한번 ë” ë‚˜ì™€ì„œ(ì„ íƒëœ 옵션명만 있으면 ì¶©ë¶„) 숨김.
ì„ íƒëœ 옵션값(.selected-values)ë„ Sanitizedê°€ .editor를 함께 붙여 ë Œë”하므로 예외로 둔다 —
빼지 않으면 추가ìƒí’ˆ ì„ íƒ ì¹´ë“œì—서 "옵션 : …" 줄까지 사ë¼ì§„다(USIN-37 í™•ì¸ ì¤‘ 발견) */
.purchase-sheet .quantity__label .editor:not(.selected-values) {
display: none;
}
.purchase-sheet .quantity__label .selected-values {
font-family: Pretendard, sans-serif;
font-size: 13px;
font-weight: 400;
color: #404040 !important;
}
.purchase-sheet .quantity__content {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 8px;
}
/* ë²¤ë” Quantity ì»´í¬ë„ŒíŠ¸ëŠ” convertToKoreanCurrency로 숫ìžë§Œ í¬ë§·í•˜ê³ 통화 단위는
붙여주지 않아서(ì»´í¬ë„ŒíЏ ìžì²´ì— ìŠ¬ë¡¯ì´ ì—†ìŒ) "ì›"ì´ ë¹ ì ¸ ë³´ì˜€ìŒ â€” ì´ ìƒí’ˆ 금액
줄(purchase__total)ì€ ìš°ë¦¬ 코드가 ì§ì ‘ ê·¸ë ¤ì„œ ì´ë¯¸ "ì›"ì´ ë¶™ì–´ìžˆëŠ”ë° ì´ ì˜µì…˜ë³„
가격만 ë¹„ì–´ìžˆë˜ ê²ƒ */
.purchase-sheet .quantity__content em {
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 600;
color: #1a1a1a;
font-style: normal;
}
.purchase-sheet .quantity__content em::after {
content: 'ì›';
}
/* 수량 스í…í¼ â€” 36px씩 3칸, ì „ì²´ë¥¼ í•˜ë‚˜ì˜ radius 8 í…Œë‘리로 ê°ìŒˆ */
.purchase-sheet .counter {
display: flex;
max-width: none;
background-color: transparent;
border: 1px solid #e6e6e6;
border-radius: 8px;
overflow: hidden;
}
.purchase-sheet .counter__btn {
width: 36px;
height: 36px;
border: none;
border-right: 1px solid #e6e6e6;
background-color: #ffffff;
font-size: 16px;
color: #1a1a1a;
}
.purchase-sheet .counter__btn:last-child {
border-right: none;
border-left: 1px solid #e6e6e6;
}
.purchase-sheet .counter__input {
width: 36px;
height: 36px;
border: none;
flex: none;
}
.purchase-sheet .counter__input input {
width: 100%;
height: 100%;
padding: 0;
text-align: center;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 600;
color: #1a1a1a;
}
/* 옵션 ì‚ì œ(X) 버튼 — 우측 ìƒë‹¨ ìž‘ì€ ì•„ì´ì½˜ */
.purchase-sheet .quantity__del {
position: absolute;
top: 12px;
right: 12px;
width: 20px;
height: 20px;
background: none;
}
.purchase-sheet .quantity__del svg {
width: 100%;
height: 100%;
}
.purchase-sheet .quantity__del svg path {
fill: none;
stroke: #9b9b9b;
}
/* ì´ ìƒí’ˆê¸ˆì•¡ — Figma TotalPriceSection(1037:8457) padding: 12px 24px 20px.
좌우 24px는 .purchase-sheet__bodyê°€ ì´ë¯¸ 담당하므로 ì—¬ê¸°ì„ ìƒí•˜ë§Œ ì§€ì • */
.purchase-sheet .purchase__total {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
padding: 12px 0 20px;
border-top: none;
}
.purchase-sheet .purchase__total > span {
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 600;
color: #9b9b9b;
}
.purchase-sheet .purchase__total em {
font-family: Pretendard, sans-serif;
font-size: 18px;
font-weight: 600;
color: #1a1a1a;
font-style: normal;
}
/* 금액 숫ìžë¥¼ ê°ì‹¸ëŠ” 공용 .highlight.bold ìœ í‹¸ë¦¬í‹°ê°€ --blue-gray-color로
ìƒ‰ì„ ë®ì–´ì¨ì„œ, emì— ì§€ì •í•œ Figma 색(#1a1a1a)ì´ ì ìš©ë˜ì§€ ì•Šë˜ ë¬¸ì œ ìˆ˜ì • */
.purchase-sheet .purchase__total em span {
color: #1a1a1a;
}
/* ── 추가 ìƒí’ˆ(ê°™ì´ì‚¬ë©´ ì¢‹ì€ ì±„ë¹„) 3단계 펼침 — USIN-37, Figma 10365-6121/10364-6014 ──
â‘ ì§„ìž… 시 ì ‘íž˜ → â‘¡ 섹션 타ì´í‹€ í´ë¦: ìƒí’ˆëª… 줄만 → â‘¢ ìƒí’ˆëª… 줄 í´ë¦: 옵션 드ë¡ë‹¤ìš´.
마í¬ì—…ì´ <details> 2중첩으로 바뀌면서 ë²¤ë” ê¸°ë³¸ê°’ì´ ìƒˆì–´ 나오는 ë¶€ë¶„ì„ ì—¬ê¸°ì„œ 눌러준다. */
/* ë²¤ë” .accordion__items{padding:20px} — ì‹œì•ˆì€ ì„¹ì…˜ 안쪽 ì—¬ë°±ì´ ë”°ë¡œ 없다 */
.extra-product-purchase__info .accordion__items {
padding: 0;
}
/* 화살표는 옵션 드ë¡ë‹¤ìš´ê³¼ ê°™ì€ 24px SVG(ChevronRightIcon)를 summary ì•ˆì— ì§ì ‘ 넣는다 —
벤ë”ì˜ 8×16 PNG(::after)는 모양·í¬ê¸°Â·íšŒì „ì´ ë“œë¡ë‹¤ìš´ê³¼ ë‹¬ë¼ ìˆ¨ê¸´ë‹¤ */
.extra-product-purchase__info .accordion__title::after {
display: none;
}
.extra-product-purchase__info .accordion__title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
/* 섹션 타ì´í‹€ — Figma BundleHeader(16px Bold #1a1a1a, ë†’ì´ 24, 위아래 16/12) */
.extra-product-purchase__info > div > .accordion > .accordion__title {
padding: 16px 0 12px;
font-size: 16px;
font-weight: 700;
color: #1a1a1a;
}
/* ìƒí’ˆëª… 줄 — Figma DropdownField(312×40, ë³´ë” #e6e6e6, radius 8, 좌우 12, 14px/500 #9b9b9b).
ìƒí’ˆëª…ì´ ë‘ ì¤„ê¹Œì§€ ë‚´ë ¤ì˜¤ë¯€ë¡œ 높ì´ëŠ” ê³ ì •í•˜ì§€ ì•Šê³ min-height로 둔다 */
.extra-product-purchase__options-item .accordion__title {
min-height: 40px;
padding: 6px 12px;
border: 1px solid #e6e6e6;
border-radius: 8px;
background-color: #ffffff;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 1.25;
color: #9b9b9b;
}
/* ì—¬ë‹«ì´ í™”ì‚´í‘œ — 옵션 드ë¡ë‹¤ìš´(.option-dropdown__chevron)ê³¼ ê°™ì€ íšŒì „Â·ì „í™˜.
details[open]ì€ ë†’ì´ ì• ë‹ˆë©”ì´ì…˜ì´ ë난 ë’¤ì—야 바뀌어서 화살표가 한 ë°•ìž ëŠ¦ê²Œ ëŒê¸° 때문ì—,
useAccordionAnimationì´ ì—¬ë‹«ëŠ” ë™ì•ˆ 붙여주는 data-accordion-openì„ ë¨¼ì € 본다 */
.extra-product-purchase__info .extra-product-purchase__chevron {
flex-shrink: 0;
transform: rotate(90deg);
transition: transform 0.2s ease-out;
}
.extra-product-purchase__info .accordion[open] > .accordion__title .extra-product-purchase__chevron,
.extra-product-purchase__info .accordion[data-accordion-open='true'] > .accordion__title .extra-product-purchase__chevron {
transform: rotate(-90deg);
}
.extra-product-purchase__info .accordion[data-accordion-open='false'] > .accordion__title .extra-product-purchase__chevron {
transform: rotate(90deg);
}
/* 시안 간격 — 섹션 안 요소들 ì‚¬ì´ 12px(ìƒí’ˆëª… 줄 ↔ 옵션 드ë¡ë‹¤ìš´, 추가 ìƒí’ˆë¼ë¦¬) */
.extra-product-purchase__options-item .purchase__option-options-box {
margin-top: 12px;
}
.extra-product-purchase__options-item + .extra-product-purchase__options-item {
margin-top: 12px;
}
/* ë°°ì†¡ì •ë³´ — Figma DeliveryInfo(5236:30949)는 좌측 "ë°°ì†¡ì •ë³´" ë¼ë²¨ + 우측ì—
"오늘 주문 시 ë‚´ì¼ ì¶œë°œ"/"OOì› ì´ìƒ 무료배송" ë‘ ì¤„ì´ ë‚˜ëž€ížˆ(가로) 배치ë˜ëŠ”ë°,
ë²¤ë” CSSì— ì´ dl/dt/ddì˜ ë ˆì´ì•„웃 ê·œì¹™ì´ ì „í˜€ 없어서(네ì´í‹°ë¸Œ dl 기본값) ë¼ë²¨ê³¼
ë‚´ìš©ì´ ì„¸ë¡œë¡œ 쌓ì´ê³ dd 기본 들여쓰기(margin-left)까지 ë‚¨ì•„ìžˆì—ˆìŒ */
.product-summary__freight {
display: flex;
align-items: flex-start;
/* Figma 실측: Label(width 49, x 1488~1537) ↔ _DeliveryDetail(x 1577) 간격 40px.
12px로 ë¶™ì—¬ë†¨ë˜ ê±¸ ì •í™•í•œ 값으로 ìˆ˜ì • */
gap: 40px;
}
.product-summary__freight dt {
flex-shrink: 0;
}
.product-summary__freight dd {
margin: 0;
/* ë² ì´ìФ 스킨 dd 기본 padding-left(5px)ê°€ 남아있어 ë‚´ìš©ì´ ë¼ë²¨ê³¼ì˜ 40px 간격보다
5px ë” ë°€ë ¤ë‚˜ ìžˆì—ˆìŒ */
padding-left: 0;
}
.product-summary__freight dd p {
margin: 0;
}
.product-summary__freight-label {
color: #9b9b9b;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
/* ë¼ë²¨ê³¼ 옆 ë‚´ìš©(.product-summary__display-label)ì˜ line-height를 반드시 ë™ì¼í•˜ê²Œ
맞춰야 ìƒë‹¨ì´ ì •í™•ížˆ ì¼ì¹˜í•¨ — 하나ë¼ë„ 브ë¼ìš°ì € 기본값("normal")ì— ë§¡ê¸°ë©´
í°íЏ 메트ë¦ì— ë”°ë¼ ì¤„ê°„ê²©ì´ ë‹¬ë¼ì ¸ 미묘하게 어긋나 ë³´ìž„ */
line-height: 18px;
}
.product-summary__delivery-date {
margin-bottom: 2px;
}
/* "ë‚´ì¼ ì¶œë°œ" 등 ë‚ ì§œ 부분만 ê°•ì¡° — Figma characterStyleOverridesê°€ ì´ ë¶€ë¶„ë§Œ
#3c56d6로 ì§€ì • */
.product-summary__delivery-date-highlight {
color: #3c56d6;
}
/* ë°°ì†¡ì •ë³´(무료배송 등) — Figma DeliveryInfo(5236:30949)는 14px/500/#404040,
line-height 18pxì¸ë°, ë²¤ë” CSSì— ì´ê±° ë§ê³ ".product-summary dd"ë¼ëŠ” ë” ëª…ì‹œë„
ë†’ì€ ë²”ìš© ê·œì¹™ì´ ë”°ë¡œ 있어서(font-size 12px, line-height 16px, padding-left 5.7px,
display:inline-block) ì‹¤ì œë¡œëŠ” 그게 ì´ê¸°ê³ ìžˆì—ˆìŒ â€” ë¼ë²¨("ë°°ì†¡ì •ë³´", 14px/줄간격14px)ê³¼
ë‚´ìš©(12px/줄간격16px)ì˜ í°íЏí¬ê¸°Â·ì¤„ê°„ê²©ì´ ì„œë¡œ 달ë¼ì„œ ìƒë‹¨ì´ 안 ë§žì•„ ë³´ì˜€ë˜ ì›ì¸.
.product-summary__display-label 한 í´ëž˜ìФ(ëª…ì‹œë„ 1)로는 ".product-summary dd"
(ëª…ì‹œë„ class 1 + 태그 1)를 못 ì´ê²¨ì„œ ì¡°ìƒ í´ëž˜ìŠ¤ë¥¼ ë”í•´ 명시ë„를 올림.
WeightInformation.tsxë„ ë™ì¼ ê·œì¹™ì„ ë³µì œí•´ì„œ 씀(ê°’ì´ ê°™ì•„ 로드 순서 무관) */
.product-summary .product-summary__display-label {
display: block;
padding-left: 0;
color: #404040;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 18px;
}
.product-summary__original-price {
color: #9b9b9b;
font-family: Pretendard, sans-serif;
font-size: 13px;
line-height: 18px;
margin: 0;
}
.product-detail .product-summary__off-percent {
color: #ff272b;
font-family: Pretendard, sans-serif;
font-size: 24px;
line-height: 34px;
}
/* Figma DiscountRate("24%")는 문ìžë³„ ìŠ¤íƒ€ì¼ overrideê°€ ì „í˜€ ì—†ìŒ(24와 %ê°€ ì™„ì „ížˆ
ë™ì¼í•œ 24px/600) — ë²¤ë” ê¸°ë³¸ê°’(.off-percent span{font-size:1.1428571429rem})ì´
"%"ë§Œ 16px로 작게 ë§Œë“¤ê³ ìžˆì–´ì„œ 숫ìžì™€ 다르게 ë³´ì˜€ìŒ */
.product-detail .product-summary__off-percent span {
font-size: inherit;
font-weight: inherit;
margin-left: 0;
}
.product-summary__price-detail {
display: flex;
justify-content: space-between;
align-items: center;
}
.product-summary__price-detail-left {
display: flex;
align-items: center;
}
/* PriceInformation.tsxì—서 ì›ê°€(.original-price)를 íŒë§¤ê°€ 줄 "위"로 옮기면서
ê·¸ ë‘˜ì„ ê°™ì´ ë¬¶ì–´ í°íŠ¸ë¥¼ ì§€ì •í•˜ë˜ .product-summary__discounted-price 래í¼ê°€
ì—†ì–´ì§ â€” ê·¸ 래í¼ê°€ ë‹´ë‹¹í•˜ë˜ íŒë§¤ê°€ í°íЏ ìŠ¤íŽ™ì„ .priceì— ì§ì ‘ 옮김 */
.product-summary__price {
display: inline-block;
color: #1a1a1a;
font-family: Pretendard, sans-serif;
font-size: 24px;
font-weight: 600;
/* Figma SalePrice 24px/600/lh34 — ê°™ì€ ì¤„ì˜ í• ì¸ìœ¨(__off-percent, lh34)ê³¼ ë¼ì¸ë°•스를
통ì¼í•´ì•¼ ë‘ í…ìŠ¤íŠ¸ì˜ ë² ì´ìФë¼ì¸/세로 위치가 ì •í™•ížˆ 맞는다(기존 26px로 어긋나 있었ìŒ) */
line-height: 34px;
}
/* Figma SalePrice("189,000ì›")ë„ ë¬¸ìžë³„ override ì—†ìŒ â€” "ì›"ì´ ìˆ«ìžì™€ ì™„ì „ížˆ
ë™ì¼í•œ 24px/600. ë²¤ë” ê¸°ë³¸ê°’(.discounted-price span{font-size:1.2857142857rem})ì´
"ì›"ë§Œ 18px/400으로 ìž‘ê³ ì–‡ê²Œ ë§Œë“¤ê³ ìžˆì–´ì„œ 숫ìžì™€ 다르게 ë³´ì˜€ìŒ */
.product-summary__price span {
font-size: inherit;
font-weight: inherit;
margin-left: 0;
}
/* ì¿ í° ë°›ê¸° 버튼 — Figma Button/Buttons(5236:30949 PriceRow) 실측: ë°°ê²½ #fafafa,
radius 4px, 좌우 20px/ìƒí•˜ 12px 패딩, ì•„ì´ì½˜-í…스트 gap 4px, í…스트 14px/500/#404040.
ë²¤ë” ê¸°ë³¸ê°’(.product-summary__coupon-download-btn)ì€ ì–´ë‘ìš´ ë°°ê²½+í° í…스트ì˜
pill 버튼(radius 18px)ì´ì—ˆê³ , ì•„ì´ì½˜ë„ position:absolute로 우측 ìƒë‹¨ì— ê³ ì •ëœ
í°ìƒ‰ 스프ë¼ì´íŠ¸ë¼ DOM 순서/flex-directionì„ ë°”ê¿”ë„ ìœ„ì¹˜ê°€ ì „í˜€ 안 ë°”ë€Œì—ˆìŒ â€”
DownloadCouponButton ì»´í¬ë„ŒíЏ(@features/coupon-download)로 êµì²´í•˜ë©´ì„œ ë ˆì´ì•„웃ë„
ì „ë¶€ 다시 그림. ì´ í™”ë©´ì—서만 쓰는 기능ì´ë¼ ê·¸ ì»´í¬ë„ŒíŠ¸ê°€ ë Œë”ë§í•˜ëŠ” ë²¤ë” í´ëž˜ìŠ¤ë¥¼
여기서 오버ë¼ì´ë“œí•œë‹¤ */
.product-summary__coupon-download-btn {
display: flex;
align-items: center;
position: static;
top: auto;
gap: 4px;
padding: 12px 20px;
/* Figma Button/Buttons stroke — ë°°ê²½(#fafafa)ê³¼ ê±°ì˜ ê°™ì€ í†¤ì´ì§€ë§Œ ì‹¤ì¸¡ìƒ 1px #F5F5F5 ë³´ë”ê°€ ìžˆìŒ */
border: 1px solid #f5f5f5;
border-radius: 4px;
background-color: #fafafa;
color: #404040;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.02em;
line-height: 18px;
}
/* ── ì¿ í° ë°›ê¸° 바텀시트(@features/coupon-download) — Figma PD-013_ì¿ í°ë²„텀시트(5218:34176) ──
ì „ì²´í™”ë©´ 모달 + ë²¤ë” Coupon ì»´í¬ë„ŒíЏ(개별 다운로드 ì•„ì´ì½˜) ì¡°í•©ì´ì—ˆë˜ 걸,
BottomSheet + ì²´í¬ë°•스 ì„ íƒí˜• 카드 ëª©ë¡ + 하단 ê³ ì • CTA로 ì „ë©´ 재설계.
ì´ ê¸°ëŠ¥ì€ ì´ í™”ë©´(PriceInformation)ì—서만 쓰여서 여기 ê°™ì´ ë‘”ë‹¤ */
.coupon-sheet .bottom-sheet__title {
font-size: 17px;
}
.coupon-card-list {
display: flex;
flex-direction: column;
gap: 12px;
margin: 0;
padding: 0 24px 20px;
list-style: none;
}
/* CardButton(5236:32433 계열) 실측: 312x128, radius 8, padding 20, itemSpacing 8.
ì„ íƒ ì‹œ fill #f0f4fe + border 2px #4a69ea, ë¯¸ì„ íƒ ì‹œ fill #fafafa + border 1px #d3d3d3.
높ì´ê°€ min-height(ê³ ì • height 아님)ë¼ border-boxì—¬ë„ border-width ìžì²´ë¥¼ 1→2px로
바꾸면 카드 높ì´ê°€ ê·¸ë§Œí¼ ì‹¤ì œë¡œ 늘어나 ì„ íƒí• 때마다 카드가 커졌다 작아졌다 í–ˆìŒ â€”
border-width는 í•ìƒ 1px로 ê³ ì •í•˜ê³ , ì„ íƒ ì‹œ ì•ˆìª½ì— box-shadow(inset)로 1px를 ë”
ê²¹ì³ ê·¸ë ¤ì„œ ë‘께만 2px처럼 ë³´ì´ê²Œ í•˜ê³ ë ˆì´ì•„웃 í¬ê¸°ëŠ” 그대로 ìœ ì§€í•œë‹¤ */
.coupon-card {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 8px;
width: 100%;
min-height: 128px;
box-sizing: border-box;
padding: 20px;
border: 1px solid #d3d3d3;
border-radius: 8px;
background-color: #fafafa;
text-align: left;
cursor: pointer;
}
.coupon-card.is-selected {
border-color: #4a69ea;
box-shadow: inset 0 0 0 1px #4a69ea;
background-color: #f0f4fe;
}
.coupon-card__head {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
gap: 8px;
}
.coupon-card__title {
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 600;
line-height: 18px;
color: #9b9b9b;
}
.coupon-card.is-selected .coupon-card__title {
color: #1a1f29;
}
.coupon-card__valid-date {
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
line-height: 18px;
color: #9b9b9b;
}
/* Figma DiscountRate(counterAxisAlignItems=MAX) — 금액(24px/lh34)과 괄호 노트를 행
아래ë 기준으로 ì •ë ¬(gap 4, 노트 í…스트는 하단ì—서 4px 위 — ì¿ í° ì„ íƒ ëª¨ë‹¬ê³¼ ë™ì¼ 규칙) */
.coupon-card__value {
display: flex;
align-items: flex-end;
gap: 4px;
font-family: Pretendard, sans-serif;
font-size: 24px;
font-weight: 600;
line-height: 34px;
color: #9b9b9b;
}
.coupon-card.is-selected .coupon-card__value {
color: #3c56d6;
}
.coupon-card__note {
padding-bottom: 4px;
font-size: 12px;
font-weight: 400;
line-height: 18px;
}
/* General/CheckBox(20x20, radius 9999) — ì„ íƒ ì‹œ 진한 ì›(#111111) + í° ì²´í¬,
ë¯¸ì„ íƒ ì‹œ í° ë°°ê²½ + 1px #e6e6e6 í…Œë‘리 */
.coupon-card__check {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
width: 20px;
height: 20px;
border: 1px solid #e6e6e6;
border-radius: 9999px;
background-color: #ffffff;
}
.coupon-card__check.is-selected {
border: none;
/* Figma General/CheckBox fill #111111 */
background-color: #111111;
}
/* Button/CTAArea(360í, 좌우 16px/ìƒí•˜ 12px 패딩, í° ë°°ê²½) — 시트 하단 ê³ ì • CTA */
.coupon-sheet__footer {
padding: 12px 16px;
background-color: #ffffff;
}
.coupon-sheet__submit {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 100%;
padding: 15px 0;
border: none;
border-radius: 8px;
background-color: #4a69ea;
color: #ffffff;
font-family: Pretendard, sans-serif;
font-size: 16px;
font-weight: 600;
line-height: 22px;
}
.coupon-sheet__submit:disabled {
background-color: #d3d3d3;
cursor: default;
}
/* ê³µìœ ë§í¬ 복사 완료 í† ìŠ¤íŠ¸ — @shared/Toast 공용 ì»´í¬ë„ŒíŠ¸ë¥¼ 씀. 위치/스타ì¼ì€
Toast.cssì—서 ì „ì—으로 관리 */
/* ê³µìœ í•˜ê¸° 바텀시트 — Figma ê³µìœ í•˜ê¸° 바텀시트 모달 SECTION(5218:34182).
딤/시트 위치/í—¤ë”(패딩·드래그핸들·타ì´í‹€)는 @shared/BottomSheet 공통 스타ì¼ì´ ì´ë¯¸
ê°™ì€ ê°’(16/24/16, #D3D3D3, 18px/600/lh24/-0.01em)ì´ë¼ 로컬 오버ë¼ì´ë“œ ì—†ì´ ê·¸ëŒ€ë¡œ 씀 */
.share-bottom-sheet__options {
display: flex;
justify-content: center;
gap: 36px;
margin: 0;
padding: 0 24px 20px;
list-style: none;
}
.share-bottom-sheet__option {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
width: 42px;
border: none;
background: none;
padding: 0;
}
.share-bottom-sheet__option:disabled {
opacity: 0.4;
}
.share-bottom-sheet__option-icon {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: 50%;
}
.share-bottom-sheet__option-icon--kakao {
background-color: #fee500;
}
.share-bottom-sheet__option-icon--link {
background-color: #fafafa;
}
/* "URL" ì•„ì´ì½˜ ê¸€ìž â€” Figma 14px/400 (600ì€ ê°ì‚¬ì—서 확ì¸ëœ 불ì¼ì¹˜) */
.share-bottom-sheet__option-icon-text {
color: #404040;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 400;
letter-spacing: 0.02em;
line-height: 18px;
}
.share-bottom-sheet__option-label {
color: #404040;
font-family: Pretendard, sans-serif;
font-size: 12px;
font-weight: 400;
letter-spacing: 0.02em;
line-height: 18px;
white-space: nowrap;
}
/* FreightInformation.tsx와 ë™ì¼ ê·œì¹™ì„ ë³µì œ(ê°’ì´ ê°™ì•„ 로드 순서 무관) — ìƒì„¸ ì´ìœ 는
FreightInformation.css ì°¸ê³ */
.product-summary .product-summary__display-label {
display: block;
padding-left: 0;
color: #404040;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 18px;
}
/* 브랜드명/ìƒí’ˆëª… — Figma InfoArea/PriceArea(5236:30949)ì˜ Fills/í°íЏ ìŠ¤íŽ™ì„ ì‹¤ì¸¡í•´
ì •í™•í•œ 값으로 맞춤. ì „ë¶€ 커스텀 CSSê°€ 없어 ë²¤ë” ê¸°ë³¸ê°’(html 14px 기준 rem 환산값,
색ìƒë„ --point-color 등 다른 ê°’)ì„ ê·¸ëŒ€ë¡œ ì“°ê³ ìžˆì—ˆìŒ.
font-familyë„ ëª…ì‹œ — ë²¤ë” body{font:14px/1 "Montserrat","Noto Sans KR",sans-serif}ê°€
ì „ì²´ì— ê¹”ë ¤ìžˆì–´ì„œ 개별 ì§€ì • 안 하면 ì „ë¶€ Montserrat로 새어나ê°(Figma는 Pretendard) */
.product-summary__brand-name {
color: #9b9b9b;
font-family: Pretendard, sans-serif;
font-size: 14px;
font-weight: 400;
}
.product-summary__title {
color: #1a1a1a;
font-family: Pretendard, sans-serif;
font-size: 20px;
font-weight: 600;
line-height: 30px;
margin-top: 4px;
}
/* price-info는 ì´ì œ ì›ê°€(위 줄) + price-detail(아래 줄)ë§Œ 세로로 쌓으면 ë¨ â€”
ì¿ í° ë²„íŠ¼ì„ price-detail 안으로 ì˜®ê²¼ëŠ”ë° ë²¤ë” ê¸°ë³¸ê°’(space-between)ì´ ì—¬ì „ížˆ
ì›ê°€/price-detail ë‘ ì¤„ì„ ì–‘ìª½ ë으로 ë²Œë ¤ë²„ë ¤ì„œ block으로 리셋.
ì‹¤ì œ 좌우 배치(í• ì¸ìœ¨+가격 ↔ ì¿ í° ë²„íŠ¼)는 price-detail 쪽(PriceInformation.tsx)ì—서 담당 */
.product-summary__price-info {
display: block;
}
/* Summary(브랜드명/ìƒí’ˆëª…/가격/ë°°ì†¡ì •ë³´) 로딩 ìŠ¤ì¼ˆë ˆí†¤ — ë°ì´í„° ë„ì°© ì „ "0ì›"ì´
ì‹¤ì œ 값처럼 ìž ê¹ ë…¸ì¶œë˜ëŠ” ë¬¸ì œë¥¼ 막기 위한 ìžë¦¬í‘œì‹œìš© ë¼ì¸. ì‹¤ì œ ë ˆì´ì•„웃ì˜
대략ì ì¸ í/간격만 ë§žì¶”ê³ ë²¤ë” .skeleton__lineì˜ shimmer ì• ë‹ˆë©”ì´ì…˜ì€ 그대로 사용 */
.product-summary-skeleton__brand {
width: 30%;
margin-bottom: 8px;
}
.product-summary-skeleton__title {
width: 70%;
margin-bottom: 16px;
}
.product-summary-skeleton__price {
width: 45%;
height: 28px;
margin-bottom: 16px;
}
.product-summary-skeleton__freight {
width: 55%;
}
/* ProductDetail.tsxê°€ ì§ì ‘ ë Œë”ë§í•˜ëŠ”(서브컴í¬ë„ŒíŠ¸ê°€ 아닌) 페ì´ì§€ 루트(.product-detail)
ì „ìš© 스타ì¼. íƒ ë°” sticky 오프셋 — _layout.cssì˜ ì „ì— `.tabs { top: var(--header-height) }`로
대부분 í•´ê²°ë˜ì§€ë§Œ, ë²¤ë” CSSì— `.product-detail .tabs { top: 90px }`ë¼ëŠ” ë” êµ¬ì²´ì ì¸
(í´ëž˜ìФ 2ê°œ) ê·œì¹™ì´ ë”°ë¡œ 있어서 ì „ì— ê·œì¹™(í´ëž˜ìФ 1ê°œ)보다 ìš°ì„ í•´ 90px로 ë˜ëŒì•„ê° â€”
ë˜‘ê°™ì´ íŽ˜ì´ì§€ 스코프로 ë®ì–´ì¨ì•¼ ì´ê¹€ */
.product-detail .tabs {
top: var(--header-height);
}
/* ìƒí’ˆìƒì„¸ íƒ(ìƒí’ˆì •ë³´/리뷰/Q&A) 위·아래 여백 — ë² ì´ìФ 스킨
.product-detail .tabs{margin:10px auto}ê°€ íƒ ë°” 위·아래 10px ì—¬ë°±ì„ ë§Œë“œëŠ”ë°,
Figma는 ProductInfo와 íƒ ë°”, íƒ ë°”ì™€ 콘í…ì¸ ê°€ ì „ë¶€ 여백 ì—†ì´ ë°”ë¡œ ë¶™ì–´ìžˆìŒ */
.product-detail .tabs {
margin-top: 0;
margin-bottom: 0;
}