/* ======================================================================
   site.css — 쇼핑몰(공개) 화면 공통. 관리자(app.css · cgrid.css)와 섞지 않는다.
   레이아웃은 postring 메인 구성을 따른다(텍스트 띠 · 헤더 · 카테고리 내비 · 히어로 · 섹션 · 푸터).
   테마(ADR-021): 글꼴은 chub 와 같은 IBM Plex Sans KR · 움직임은 '통통 튀는' 이징(--bounce) · 동전 회전(coinSpin).
   ====================================================================== */
:root { --ink: #111111; --accent: #FF5A36; --ease: cubic-bezier(.22,.61,.36,1); --bounce: cubic-bezier(.34,1.56,.64,1); }
html, body { font-family: 'IBM Plex Sans KR', 'Pretendard', -apple-system, BlinkMacSystemFont, 'Malgun Gothic', AppleGothic, sans-serif; }
.price-font { font-family: 'Manrope', 'IBM Plex Sans KR', sans-serif; letter-spacing: -0.35px; }

/* ---------- 브랜드 로고 (A 심볼 + 텍스트 로고) ----------
   텍스트 로고는 MemoryBook 과 같은 결 — Black Han Sans · 대문자 · 좁은 자간 · 두 톤(먹색 + 포인트색) */
.brand-logo { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; line-height: 1; flex-shrink: 0; }
.brand-logo:hover { opacity: .85; }
.brand-symbol { width: 34px; height: 34px; border-radius: 9px; }
.brand-word { font-family: 'Black Han Sans', 'IBM Plex Sans KR', sans-serif; font-weight: 400; font-size: 26px; letter-spacing: -.01em; color: var(--ink); }
.brand-word .accent { color: var(--accent); }
.brand-sm .brand-symbol { width: 28px; height: 28px; border-radius: 7px; }
.brand-sm .brand-word { font-size: 21px; }
.on-dark .brand-word { color: #fff; }
.on-dark .brand-symbol { box-shadow: 0 0 0 1px rgba(255,255,255,.15); }
@media (max-width: 1023px) { .brand-md .brand-symbol { width: 28px; height: 28px; border-radius: 7px; } .brand-md .brand-word { font-size: 21px; } }

/* ---------- 헤더 (로고 줄) ---------- */
.head-search { position: relative; align-items: center; height: 46px; border: 1.5px solid #d4d4d8; border-radius: 9999px; background: #fff;
    transition: border-color .2s, box-shadow .25s var(--ease); }
.head-search:focus-within { border-color: var(--ink); box-shadow: 0 0 0 4px rgba(255,90,54,.14); }
.head-search-ico { position: absolute; left: 16px; width: 19px; height: 19px; color: #71717a; pointer-events: none; transition: transform .35s var(--bounce), color .2s; }
.head-search:focus-within .head-search-ico { color: var(--accent); transform: rotate(-12deg) scale(1.12); }
.head-search input { flex: 1; min-width: 0; height: 100%; padding: 0 12px 0 44px; font-size: 14px; background: transparent; outline: none; border-radius: 9999px; }
.head-search-go { margin-right: 5px; height: 34px; padding: 0 16px; border-radius: 9999px; background: var(--ink); color: #fff; font-size: 13px; font-weight: 600;
    transition: background .2s, transform .2s var(--bounce); }
.head-search-go:hover { background: var(--accent); transform: scale(1.05); }
.head-search-go:active { transform: scale(.94); }
.head-link { align-items: center; gap: 6px; padding: 8px 10px; border-radius: 10px; font-size: 14px; font-weight: 600; color: #27272a; transition: background .2s, color .2s; }
.head-link svg { width: 20px; height: 20px; transition: transform .5s var(--bounce); }
.head-link:hover { background: #fff4f0; color: var(--accent); }
.head-link:hover svg { transform: rotate(-14deg) scale(1.15); }
.head-icon { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 9999px; color: #27272a; transition: background .2s, color .2s, transform .25s var(--bounce); }
.head-icon svg { width: 24px; height: 24px; }
.head-icon:hover { background: #f4f4f5; color: var(--accent); transform: translateY(-2px); }
.head-icon:active { transform: scale(.9); }
.head-icon.is-off { opacity: .4; cursor: not-allowed; }
.head-icon.is-off:hover { background: transparent; color: #27272a; transform: none; }

/* ---------- 카테고리 내비 + 메가메뉴 (ADR-021) ---------- */
.site-nav { position: sticky; }
.nav-item { height: 100%; display: flex; align-items: center; }
.nav-cat { position: relative; display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; perspective: 400px; transition: color .2s; }
.nav-cat::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: -11px; height: 2.5px; border-radius: 2px; background: var(--accent);
    transform: scaleX(0); transform-origin: center; transition: transform .3s var(--bounce); }
.nav-cat:hover, .nav-item.is-open .nav-cat, .nav-cat.is-on { color: var(--accent); }
.nav-item.is-open .nav-cat::after, .nav-cat.is-on::after { transform: scaleX(1); }
/* 동전 회전 — 글자가 Y축으로 한 바퀴(앞면으로 돌아와 멈춤) */
.coin { display: inline-block; transform-style: preserve-3d; backface-visibility: visible; }
@keyframes coinSpin { 0% { transform: rotateY(0); } 70% { transform: rotateY(380deg); } 100% { transform: rotateY(360deg); } }
.nav-cat:hover .coin, .nav-cat:focus-visible .coin { animation: coinSpin .7s var(--ease); }
.nav-burger { display: inline-flex; flex-direction: column; justify-content: center; gap: 3.5px; width: 16px; }
.nav-burger i { display: block; height: 2px; border-radius: 2px; background: currentColor; transition: transform .3s var(--bounce), width .3s var(--bounce); }
.nav-burger i:nth-child(2) { width: 70%; }
.nav-item.is-open .nav-burger i:nth-child(1) { transform: translateX(3px); }
.nav-item.is-open .nav-burger i:nth-child(2) { width: 100%; }
.nav-item.is-open .nav-burger i:nth-child(3) { transform: translateX(-3px); }

.mega { position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-top: 1px solid #f1f5f9;
    box-shadow: 0 24px 40px -24px rgba(15,23,42,.28); visibility: hidden; opacity: 0; transform: translateY(-10px);
    transition: opacity .22s var(--ease), transform .32s var(--ease), visibility 0s linear .32s; font-weight: 400; }
.nav-item.is-open .mega { visibility: visible; opacity: 1; transform: none; transition: opacity .22s var(--ease), transform .32s var(--ease), visibility 0s; }
.mega-in { opacity: 0; transform: translateY(12px) scale(.97); }
.nav-item.is-open .mega-in { animation: megaIn .5s var(--bounce) both; animation-delay: calc(var(--i, 0) * 45ms + 60ms); }
@keyframes megaIn { from { opacity: 0; transform: translateY(12px) scale(.97); } to { opacity: 1; transform: none; } }
.mega-title { display: flex; align-items: baseline; gap: 12px; margin-bottom: 18px; font-size: 16px; font-weight: 700; color: var(--ink); }
.mega-more { font-size: 13px; font-weight: 500; color: #94a3b8; transition: color .2s; }
.mega-more:hover { color: var(--accent); }
.mega-empty { padding: 28px 0; font-size: 14px; color: #94a3b8; }
/* 카테고리 동전(원형 썸네일) — 호버 시 동전처럼 회전 */
.mega-coins { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 22px 12px; }
.coin-link { display: flex; flex-direction: column; align-items: center; gap: 10px; perspective: 500px; }
.coin-face { width: 80px; height: 80px; border-radius: 9999px; overflow: hidden; display: flex; align-items: center; justify-content: center;
    color: #fff; font-family: 'Black Han Sans', 'IBM Plex Sans KR', sans-serif; font-size: 26px; box-shadow: 0 0 0 4px #f4f4f5;
    transition: box-shadow .3s; transform-style: preserve-3d; }
.coin-face img { width: 100%; height: 100%; object-fit: cover; }
.coin-link:hover .coin-face { animation: coinSpin .8s var(--ease); box-shadow: 0 0 0 4px #ffe1d8, 0 14px 22px -10px rgba(255,90,54,.55); }
.coin-label { font-size: 14px; font-weight: 500; color: #334155; transition: color .2s; }
.coin-link:hover .coin-label { color: var(--accent); }
/* 카테고리 상품 썸네일 카드 */
.mega-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
.mega-card { display: block; }
.mega-card-img { position: relative; display: block; aspect-ratio: 1; border-radius: 14px; overflow: hidden; background: #f1f5f9; }
.mega-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.mega-card:hover .mega-card-img img { transform: scale(1.08) rotate(1deg); }
.mega-pick { position: absolute; left: 8px; top: 8px; padding: 2px 6px; border-radius: 4px; background: var(--accent); color: #fff; font-size: 9px; font-weight: 700; letter-spacing: .06em; }
.mega-card-name { display: block; margin-top: 8px; font-size: 13px; font-weight: 600; color: #1e293b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .2s; }
.mega-card:hover .mega-card-name { color: var(--accent); }
.mega-card-sub { display: block; font-size: 12px; color: #94a3b8; }
/* PICK 목록 행 */
.mega-row { display: flex; align-items: center; gap: 14px; padding: 4px; border-radius: 12px; transition: background .2s, transform .25s var(--bounce); }
.mega-row:hover { background: #fafafa; transform: translateX(4px); }
.mega-row-img { width: 64px; height: 64px; flex-shrink: 0; border-radius: 10px; overflow: hidden; background: #f1f5f9; }
.mega-row-img img { width: 100%; height: 100%; object-fit: cover; }
.mega-row-name { display: block; font-size: 14px; color: #334155; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mega-row-sub { display: block; margin-top: 2px; font-size: 13px; font-weight: 700; color: var(--ink); }
/* 오른쪽 홍보 카드 */
.mega-promo { position: relative; display: block; aspect-ratio: 1; border-radius: 20px; overflow: hidden; background: #fde8e1; }
.mega-promo img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.mega-promo:hover img { transform: scale(1.06); }
.mega-promo-text { position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 18px 16px; color: #fff; font-size: 15px; font-weight: 700;
    background: linear-gradient(to top, rgba(17,17,17,.72), rgba(17,17,17,0)); }
.mega-promo-text small { display: block; margin-bottom: 2px; font-size: 12px; font-weight: 500; opacity: .85; }
.mega-promo-text em { display: inline-block; font-style: normal; transition: transform .3s var(--bounce); }
.mega-promo:hover .mega-promo-text em { transform: translateX(6px); }
/* 메가메뉴 아래 딤드 + 블러 — top 은 site.js 가 내비 아래로 */
.nav-dim { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 30; background: rgba(17,17,17,.32);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity .28s var(--ease), visibility 0s linear .28s; }
.nav-dim.is-on { opacity: 1; visibility: visible; transition: opacity .28s var(--ease), visibility 0s; }

/* ---------- 모바일 드로어 ---------- */
.drawer-dim { background: rgba(17,17,17,.4); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); animation: fadeIn .25s var(--ease) both; }
.drawer-panel { animation: drawerIn .38s var(--ease) both; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes drawerIn { from { transform: translateX(100%); } to { transform: none; } }
.drawer-link { display: flex; align-items: center; gap: 12px; padding: 9px 20px; font-size: 15px; color: #334155; perspective: 400px;
    animation: megaIn .45s var(--bounce) both; animation-delay: calc(var(--i, 0) * 40ms + 120ms); transition: background .2s, color .2s; }
.drawer-link:hover, .drawer-link.is-on { background: #fff7f4; color: var(--accent); }
.drawer-thumb { width: 38px; height: 38px; flex-shrink: 0; border-radius: 9999px; overflow: hidden; display: flex; align-items: center; justify-content: center;
    color: #fff; font-family: 'Black Han Sans', 'IBM Plex Sans KR', sans-serif; font-size: 14px; }
.drawer-thumb img { width: 100%; height: 100%; object-fit: cover; }
.drawer-link:active .drawer-thumb, .drawer-link:hover .drawer-thumb { animation: coinSpin .7s var(--ease); }

/* ---------- 히어로 ---------- */
.hero-slide { background: var(--hero-bg, #f3ede4); }
.hero-art { width: 300px; height: 300px; object-fit: cover; border-radius: 20px; box-shadow: 0 30px 60px -20px rgba(15,23,42,.35); transform: rotate(2deg); }
@media (min-width: 768px) { .hero-art { width: 380px; height: 380px; } }
.hero-btn { display: inline-block; padding: 11px 24px; border-radius: 9999px; background: var(--ink); color: #fff; font-size: 14px; font-weight: 700; transition: background .2s, transform .25s var(--bounce), box-shadow .25s; }
.hero-btn:hover { background: var(--accent); transform: translateY(-2px); box-shadow: 0 12px 20px -10px rgba(255,90,54,.7); }
.hero-swiper .swiper-pagination.hero-pagination { left: 50%; transform: translateX(-50%); width: auto; bottom: 16px; background: rgba(15,23,42,.5); color: #fff; border-radius: 9999px; padding: 4px 14px; font-size: 13px; font-weight: 600; letter-spacing: .03em; }
.hero-swiper .swiper-pagination.hero-pagination .swiper-pagination-total { color: rgba(255,255,255,.65); }
/* 활성 슬라이드 진입 시 아래→위 stagger (postring 과 같은 인트로) */
@keyframes heroUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
.hero-swiper .hero-anim { opacity: 0; }
.hero-swiper .swiper-slide-active .hero-anim { animation: heroUp 1.1s cubic-bezier(.22,.61,.36,1) both; }
.hero-swiper .swiper-slide-active .hero-anim.d1 { animation-delay: .2s; }
.hero-swiper .swiper-slide-active .hero-anim.d2 { animation-delay: .42s; }
.hero-swiper .swiper-slide-active .hero-anim.d3 { animation-delay: .66s; }
.topbar-swiper { cursor: grab; }

/* ---------- 카테고리 퀵 메뉴 ---------- */
.quick-cat { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.quick-dot { width: 64px; height: 64px; border-radius: 9999px; display: flex; align-items: center; justify-content: center;
    font-family: 'Black Han Sans', 'IBM Plex Sans KR', sans-serif; font-size: 22px; color: #fff; background: var(--dot, #111);
    transition: transform .2s, box-shadow .2s; }
.quick-dot[style*="--dot"] { font-size: 16px; letter-spacing: .04em; }
.quick-cat { perspective: 500px; }
.quick-cat:hover .quick-dot { animation: coinSpin .8s var(--ease); box-shadow: 0 10px 20px -8px rgba(0,0,0,.35); }
@media (min-width: 768px) { .quick-dot { width: 84px; height: 84px; font-size: 28px; } }
.quick-c0 { background: #FF5A36; } .quick-c1 { background: #2f6b5e; } .quick-c2 { background: #2f5fd0; }
.quick-c3 { background: #8f7f6c; } .quick-c4 { background: #e8a33a; } .quick-c5 { background: #5b4aa8; }
.quick-label { font-size: 13px; color: #475569; }
@media (min-width: 768px) { .quick-label { font-size: 14px; } }

/* ---------- 중단 배너 ---------- */
.mid-banner { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 36px 40px; border-radius: 20px;
    background: radial-gradient(120% 140% at 100% 0%, #3a2a24 0%, #111111 55%); }
@media (max-width: 640px) { .mid-banner { padding: 28px 24px; } }

/* ---------- 목록 정렬 칩 ---------- */
.sort-chip { padding: 6px 12px; border-radius: 9999px; color: #64748b; border: 1px solid #e2e8f0; transition: background .2s, color .2s, border-color .2s, transform .25s var(--bounce); }
.sort-chip:hover { transform: translateY(-2px); }
.sort-chip:hover { color: var(--ink); border-color: #cbd5e1; }
.sort-chip.is-on { background: var(--ink); color: #fff; border-color: var(--ink); }

/* ---------- 상품 카드 (ADR-022) — 호버 이미지가 있으면 동전처럼 회전, 없으면 줌 ---------- */
.pcard-media { position: relative; display: block; aspect-ratio: 1; border-radius: 14px; perspective: 1200px; }
.pcard-media:not(.has-flip) { overflow: hidden; background: #f1f5f9; }
.pcard-zoom { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.pcard:hover .pcard-zoom { transform: scale(1.07); }
.flip-inner { position: absolute; inset: 0; transform-style: preserve-3d; transition: transform .8s var(--bounce); }
.pcard:hover .flip-inner, .pcard-media.has-flip:focus-visible .flip-inner { transform: rotateY(180deg); }
.flip-face { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 14px; background: #f1f5f9;
    -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.flip-back { transform: rotateY(180deg); }
.pcard-media.has-flip::after { content: ''; position: absolute; inset: 0; border-radius: 14px; pointer-events: none;
    box-shadow: 0 0 0 0 rgba(15,23,42,0); transition: box-shadow .5s var(--ease); }
.pcard:hover .pcard-media.has-flip::after { box-shadow: 0 22px 34px -18px rgba(15,23,42,.45); }
.pcard-pick { position: absolute; left: 12px; top: 12px; z-index: 2; padding: 4px 8px; border-radius: 5px; background: var(--accent); color: #fff;
    font-size: 10px; font-weight: 700; letter-spacing: .08em; transition: transform .3s var(--bounce); }
.pcard:hover .pcard-pick { transform: rotate(-6deg) scale(1.08); }
.pcard-name { transition: color .2s; }
.pcard:hover .pcard-name { color: var(--accent); }

/* ---------- 상품 상세 갤러리 ---------- */
.gallery-main { border-radius: 18px; overflow: hidden; background: #f1f5f9; aspect-ratio: 1; perspective: 1200px; }
.gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.gallery-main img.is-swap { animation: galleryFlip .55s var(--bounce); }
@keyframes galleryFlip { 0% { transform: rotateY(90deg) scale(.96); opacity: .4; } 100% { transform: none; opacity: 1; } }
.gallery-thumb { width: 84px; height: 84px; border-radius: 12px; overflow: hidden; background: #f1f5f9; box-shadow: 0 0 0 2px transparent;
    transition: box-shadow .2s, transform .25s var(--bounce); }
.gallery-thumb img { width: 100%; height: 100%; object-fit: cover; }
.gallery-thumb:hover { transform: translateY(-3px); }
.gallery-thumb.is-on { box-shadow: 0 0 0 2.5px var(--accent); }

/* ---------- 등장 · 눌림 ---------- */
/* AOS 커스텀 'pop' — 아래에서 통통 튀며 올라온다. 같은 줄 카드는 site.js 가 0·100·200·300ms 지연 */
[data-aos="pop"] { opacity: 0; transform: translateY(36px) scale(.94); transition-property: opacity, transform; }
body[data-aos-easing] [data-aos="pop"], [data-aos="pop"] { transition-timing-function: var(--bounce) !important; }
[data-aos="pop"].aos-animate { opacity: 1; transform: none; }
.btn-press, .hero-btn, .sort-chip, .head-search-go, .gallery-thumb { -webkit-tap-highlight-color: transparent; }
.btn-press { transition: transform .2s var(--bounce), background .2s, color .2s; }
.btn-press:active, .hero-btn:active, .sort-chip:active, .gallery-thumb:active { transform: scale(.94); }

/* ---------- 로그인 · 주문 · 마이페이지 (ADR-023) ---------- */
.head-icon.is-me { color: var(--accent); background: #fff4f0; }
.login-card { max-width: 420px; margin: 0 auto; padding: 44px 32px; border-radius: 24px; background: #fff; text-align: center;
    box-shadow: 0 30px 60px -30px rgba(15,23,42,.25), 0 0 0 1px #f1f5f9; }
.login-logo { width: 56px; height: 56px; margin: 0 auto; border-radius: 14px; animation: coinSpin 1.1s var(--ease) .3s both; }
.login-error { margin-top: 16px; padding: 10px 14px; border-radius: 12px; background: #fff1ee; color: #c2410c; font-size: 13px; }
.login-btn { display: flex; align-items: center; justify-content: center; gap: 10px; height: 52px; border-radius: 14px; font-weight: 600; font-size: 15px;
    transition: transform .25s var(--bounce), box-shadow .25s, filter .2s; }
.login-btn svg { width: 20px; height: 20px; }
.login-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 20px -12px rgba(15,23,42,.4); }
.login-kakao { background: #FEE500; color: #191600; }
.login-google { background: #fff; color: #1f2937; box-shadow: inset 0 0 0 1.5px #e2e8f0; }
.login-btn.is-off { opacity: .45; cursor: not-allowed; }
.login-btn.is-off:hover { transform: none; box-shadow: none; }
.buy-btn { height: 56px; border-radius: 14px; background: var(--ink); color: #fff; font-weight: 700; font-size: 16px; display: flex; align-items: center; justify-content: center;
    position: relative; overflow: hidden; }
.buy-btn:hover { background: var(--accent); box-shadow: 0 14px 24px -12px rgba(255,90,54,.8); }
.buy-btn::after { content: ''; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; transform: skewX(-20deg);
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent); transition: left .7s var(--ease); }
.buy-btn:hover::after { left: 130%; }
.order-test-note { margin-bottom: 20px; padding: 12px 16px; border-radius: 14px; background: #fffbea; color: #92400e; font-size: 14px; }
.order-box, .order-summary { padding: 24px; border-radius: 20px; background: #fff; box-shadow: 0 0 0 1px #eef2f6, 0 18px 36px -28px rgba(15,23,42,.3); }
.order-summary { position: sticky; top: 76px; }
.order-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; font-size: 17px; font-weight: 700; color: var(--ink); }
.order-same { font-size: 13px; font-weight: 500; color: #64748b; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.order-same input { accent-color: var(--accent); width: 16px; height: 16px; }
.order-field { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: #64748b; }
.order-field input { height: 46px; padding: 0 14px; border-radius: 12px; border: 1.5px solid #e2e8f0; font-size: 15px; color: #0f172a; outline: none;
    transition: border-color .2s, box-shadow .25s var(--ease); }
.order-field input:focus { border-color: var(--ink); box-shadow: 0 0 0 4px rgba(255,90,54,.14); }
.qty { display: inline-flex; align-items: center; border: 1.5px solid #e2e8f0; border-radius: 9999px; overflow: hidden; flex-shrink: 0; }
.qty-btn { width: 36px; height: 36px; font-size: 18px; color: #334155; }
.qty-btn:hover { background: #f8fafc; color: var(--accent); }
.qty-input { width: 40px; text-align: center; font-weight: 700; outline: none; -moz-appearance: textfield; }
.qty-input::-webkit-outer-spin-button, .qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.order-pay { display: flex; align-items: center; justify-content: center; width: 100%; height: 56px; margin-top: 20px; border-radius: 14px;
    background: var(--accent); color: #fff; font-weight: 700; font-size: 17px; transition: transform .2s var(--bounce), filter .2s, box-shadow .25s; }
.order-pay:hover:not(:disabled) { filter: brightness(1.05); box-shadow: 0 14px 26px -12px rgba(255,90,54,.9); transform: translateY(-2px); }
.order-pay:disabled { background: #cbd5e1; cursor: not-allowed; }
.order-pay.is-busy { pointer-events: none; opacity: .75; }
.order-pay.is-busy::before { content: ''; width: 18px; height: 18px; margin-right: 10px; border-radius: 9999px; border: 2.5px solid rgba(255,255,255,.4);
    border-top-color: #fff; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.order-error { margin-top: 14px; padding: 10px 14px; border-radius: 12px; background: #fff1ee; color: #c2410c; font-size: 13px; }
.order-error.is-shake { animation: shake .4s var(--ease); }
@keyframes shake { 0%, 100% { transform: none; } 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } }
[data-sum-total].is-bump { display: inline-block; animation: bump .45s var(--bounce); }
@keyframes bump { 0% { transform: scale(1); } 40% { transform: scale(1.18); } 100% { transform: scale(1); } }
.order-dl { display: grid; grid-template-columns: 88px 1fr; gap: 10px 12px; font-size: 14px; }
.order-dl dt { color: #94a3b8; }
.order-dl dd { color: #1e293b; word-break: break-all; }
.order-result { max-width: 520px; margin: 0 auto; text-align: center; }
.order-result-ico { width: 72px; height: 72px; margin: 0 auto; border-radius: 9999px; background: var(--accent); color: #fff; font-size: 36px; font-weight: 700;
    display: flex; align-items: center; justify-content: center; animation: coinSpin 1s var(--bounce) .15s both; box-shadow: 0 16px 30px -14px rgba(255,90,54,.9); }
.order-result-ico.is-fail { background: #334155; box-shadow: 0 16px 30px -14px rgba(15,23,42,.6); }
.my-order { display: flex; align-items: center; gap: 18px; padding: 16px; border-radius: 18px; background: #fff;
    box-shadow: 0 0 0 1px #eef2f6; transition: transform .25s var(--bounce), box-shadow .25s; }
.my-order:hover { transform: translateY(-3px); box-shadow: 0 0 0 1px #ffd9cf, 0 18px 30px -20px rgba(255,90,54,.6); }
.my-order-img { width: 84px; height: 84px; border-radius: 14px; object-fit: cover; background: #f1f5f9; flex-shrink: 0; }
.order-status { flex-shrink: 0; padding: 5px 12px; border-radius: 9999px; font-size: 12px; font-weight: 700; background: #f1f5f9; color: #475569; }
.order-status.st-결제완료 { background: #fff1ee; color: #ea580c; }
.order-status.st-배송준비, .order-status.st-배송중 { background: #eef4ff; color: #2563eb; }
.order-status.st-배송완료 { background: #ecfdf5; color: #059669; }
.order-status.st-취소 { background: #f1f5f9; color: #94a3b8; text-decoration: line-through; }

/* 얇은 스크롤(세로 목록) */
.thin-scroll { scrollbar-width: thin; scrollbar-color: rgba(100,116,139,.35) transparent; }

/* 움직임 줄이기 설정을 켠 사용자에게는 회전·튀김을 끈다 */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
