@font-face{font-family:BazaarHouDiHei;src:url('assets/heading-font.woff') format('woff');font-weight:400;font-display:swap}
:root{--rpx:min(.133333333vw,.64px)}*{box-sizing:border-box}html{min-height:100%;background:#bfa27c}body{margin:0 auto;max-width:480px;min-height:100vh;padding:56px 0 calc(76px + env(safe-area-inset-bottom));background-attachment:scroll}button{font-family:inherit;cursor:pointer;border:0}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #99572C;outline-offset:3px}img{display:block;max-width:100%;object-fit:contain}a{color:inherit;text-decoration:none}button.primary{color:#F0DFC1}h1,h2{margin:0;font:inherit}#app .product-name{font-weight:400}#app .add-button{width:100%}.web-header{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;height:56px;z-index:20;background:#D9B88D;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid #99572c55}.web-header button{font-size:30px;width:40px;padding:0;line-height:44px}.web-header span{font-weight:bold}.web-header small{font-size:10px;color:#795039}#navigation{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;z-index:20;display:flex;background:#F0DFC1;border-top:1px solid #99572c66;padding:8px 12px calc(8px + env(safe-area-inset-bottom));gap:12px}#navigation a{flex:1;text-align:center;font-size:13px;min-height:44px}#navigation a[aria-current]{font-weight:bold}#navigation img{height:23px;width:23px;margin:0 auto 2px}#count:not(:empty){display:inline-block;background:#542B1B;border-radius:99px;color:#F0DFC1;font-size:11px;padding:0 5px}.page .fixed{max-width:480px;left:50%;right:auto;width:100%;transform:translateX(-50%);bottom:calc(65px + env(safe-area-inset-bottom));padding-bottom:14px}.page.detail .fixed{bottom:0;padding-bottom:calc(14px + env(safe-area-inset-bottom))}.gallery .swiper{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;height:auto}.gallery .swiper button{flex:0 0 100%;height:auto;scroll-snap-align:start;padding:0;line-height:1}.gallery img{height:auto;width:100%;aspect-ratio:1}.gallery-caption{font-size:11px}.product-link{display:block;line-height:1.5;padding:0;text-align:left;width:100%;min-height:0}.partner-tabs{scroll-margin-top:70px}#catalog{scroll-margin-top:72px}.bag-heading .title{margin:10px 0}.item-top img{cursor:pointer}.quantity{background-color:#F0DFC1}#toast{position:fixed;left:50%;bottom:140px;transform:translateX(-50%);max-width:90vw;width:max-content;border-radius:16px;background:#542B1B;color:#F0DFC1;padding:12px 18px;z-index:50;font-size:14px;box-shadow:0 4px 20px #542b1b33}.fixed .row{flex-wrap:wrap}.detail-actions .bag-button{white-space:nowrap}dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:16px;background:#21170f;color:#F0DFC1;border:0}dialog::backdrop{background:#21170f}dialog p{font-size:12px}dialog button{background:#F0DFC1;line-height:44px}dialog .zoom-scroll{width:100%;height:calc(100% - 110px);overflow:auto}dialog img{width:100%;max-width:none;margin:auto;cursor:zoom-in}dialog img.original{width:1800px;cursor:zoom-out}.page{animation:none}body:has(.detail){padding-bottom:0}.detail{padding-bottom:160px}.muted-note{font-size:12px;text-align:center;color:#795039}.page .bag-total{z-index:19}.partner-tab.active{color:#F0DFC1}.page .cover img{width:100%}#app .empty button{width:100%}[hidden]{display:none!important}

/* Keep persistent controls mounted; animate only opacity and small transforms. */
button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:background-color 180ms ease,color 180ms ease,box-shadow 180ms ease,transform 130ms ease}
button:active:not(:disabled),#navigation a:active{transform:scale(.97)}
#navigation a{border-radius:14px;padding:3px 0}
#navigation a[aria-current]{background:rgba(153,87,44,.10)}
.partner-tabs{position:relative;isolation:isolate}
.partner-tabs::before{content:"";position:absolute;top:calc(var(--rpx)*8);bottom:calc(var(--rpx)*8);left:calc(var(--rpx)*8 + var(--partner-index,0)*(100% - var(--rpx)*4)/3);width:calc((100% - var(--rpx)*40)/3);border-radius:999px;background:#542B1B;box-shadow:inset 0 0 0 2px #542B1B,inset 0 0 0 2.5px #BC8542;transition:left 260ms cubic-bezier(.22,1,.36,1);z-index:-1;pointer-events:none}
.page .partner-tabs .partner-tab.active{background:transparent;box-shadow:none;color:#F0DFC1}
#toast{opacity:0;transform:translate(-50%,8px);transition:opacity 180ms ease,transform 220ms cubic-bezier(.22,1,.36,1);pointer-events:none}
#toast.visible{opacity:1;transform:translate(-50%,0)}
.quantity span,.subtotal .price,.bag-total .price{font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){button,a,.partner-tabs::before,#toast{transition:none!important}.page,.product{animation:none!important}}

/* Reserve catalog space without stretching individual product cards. */
.grid{align-content:start}

/* Three persistent merchant panels move together, like adjacent catalog pages. */
.merchant-viewport{overflow:hidden;position:relative;margin:0 -6px;padding:0 6px 12px;contain:paint}
.merchant-track{display:flex;align-items:flex-start;transition:transform 320ms cubic-bezier(.22,.72,.24,1);will-change:transform}
.merchant-panel{flex:0 0 100%;min-width:0;padding:0 6px;box-sizing:border-box}
.merchant-panel .product{animation:none!important}
.merchant-panel[inert]{pointer-events:none}
.merchant-viewport{touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
.merchant-track.is-dragging{transition:none}
.merchant-viewport img{-webkit-user-drag:none}
@media(prefers-reduced-motion:reduce){.merchant-track{transition:none;will-change:auto}}

/* Shared iOS-inspired timing, with outgoing and incoming views both present. */
:root{--motion-spring:cubic-bezier(.16,1,.3,1)}
html{overflow-x:clip}#app{position:relative;z-index:10;overflow-x:clip}.route-content{position:relative}
.route-ghost{position:fixed;left:50%;top:56px;bottom:0;max-width:480px;width:100%;transform:translateX(-50%);overflow:hidden;pointer-events:none;background-repeat:no-repeat;contain:paint}
.route-ghost .page{animation:none}.route-ghost .product{animation:none!important}
.receipt-ghost{position:fixed;z-index:13;pointer-events:none;background:#f0dfc1;border:1px solid #99572c66;border-radius:18px;padding:0 12px;overflow:hidden}
.web-header,#navigation{z-index:30}
#navigation{transition:transform 320ms var(--motion-spring),opacity 220ms ease}
#navigation.nav-away{transform:translate(-50%,110%);opacity:0;pointer-events:none}
#toast{transition:opacity 200ms ease,transform 320ms var(--motion-spring);transform:translate(-50%,12px) scale(.96);z-index:50}
#toast.visible{transform:translate(-50%,0) scale(1)}
.modal-open{overflow:hidden}.modal-open body{overflow:hidden}
#viewer{padding-top:calc(16px + env(safe-area-inset-top));background:rgba(22,16,12,.97);overflow:hidden}
#viewer::backdrop,.sheet-dialog::backdrop{background:transparent}
#zoom-image{transform-origin:0 0;flex-shrink:0}
#viewer .zoom-scroll{display:flex;align-items:center}
#viewer .zoom-scroll:has(.original){display:block}
#viewer:not([open]),.sheet-dialog:not([open]){display:none}
.sheet-dialog{background:rgba(32,22,13,.35);padding:0;overflow:hidden}
.sheet-panel{position:absolute;bottom:0;left:0;right:0;max-width:480px;margin:auto;background:#F0DFC1;color:#542B1B;border-radius:28px 28px 0 0;padding:12px 24px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -12px 48px #21170f20}
.sheet-panel .title{font-size:24px;margin:16px 0 10px}.sheet-panel p{font-size:14px;line-height:1.7;margin-bottom:22px}.sheet-panel button{display:block;width:100%;margin-top:12px;line-height:48px}.sheet-panel button.primary{background:#542B1B;color:#F0DFC1}.sheet-handle{width:36px;height:4px;border-radius:8px;background:#99572c55;margin:0 auto}.sheet-panel .outline{border:1px solid #99572c66}
@media(prefers-reduced-motion:reduce){#navigation,#toast{transition:none!important}}
