{"product_id":"haven-shirt-dress","title":"Haven Shirt Dress","description":"\u003csection class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [\u0026amp;:has([data-writing-block])\u0026gt;*]:pointer-events-auto [content-visibility:auto] supports-[content-visibility:auto]:[contain-intrinsic-size:auto_100lvh] R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-698e5731-9bcc-832c-a717-0e7ac885e28b-55\" data-testid=\"conversation-turn-346\" data-scroll-anchor=\"false\" data-turn=\"assistant\"\u003e\n\u003cdiv class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\"\u003e\n\u003cdiv class=\"flex max-w-full flex-col gap-4 grow\"\u003e\n\u003cdiv data-message-author-role=\"assistant\" data-message-id=\"28b4fedc-bb3b-4414-acaf-9b9214741ac6\" dir=\"auto\" data-message-model-slug=\"gpt-5-3\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+\u0026amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\"\u003e\n\u003cdiv class=\"flex w-full flex-col gap-1 empty:hidden\"\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\n\u003csection class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [\u0026amp;:has([data-writing-block])\u0026gt;*]:pointer-events-auto [content-visibility:auto] supports-[content-visibility:auto]:[contain-intrinsic-size:auto_100lvh] R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-698e5731-9bcc-832c-a717-0e7ac885e28b-56\" data-testid=\"conversation-turn-348\" data-scroll-anchor=\"false\" data-turn=\"assistant\"\u003e\n\u003cdiv class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\"\u003e\n\u003cdiv class=\"flex max-w-full flex-col gap-4 grow\"\u003e\n\u003cdiv data-message-author-role=\"assistant\" data-message-id=\"b60b8f25-67c8-4e88-b4c2-a161c5981d8e\" dir=\"auto\" data-message-model-slug=\"gpt-5-3\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+\u0026amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\"\u003e\n\u003cdiv class=\"flex w-full flex-col gap-1 empty:hidden\"\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"flex h-svh w-screen flex-col\"\u003e\n\u003cdiv class=\"relative z-0 flex min-h-0 w-full flex-1\"\u003e\n\u003cdiv class=\"relative flex min-h-0 w-full flex-1\"\u003e\n\u003cdiv class=\"@container\/main relative flex min-w-0 flex-1 flex-col -translate-y-[calc(env(safe-area-inset-bottom,0px)\/2)] pt-[calc(env(safe-area-inset-bottom,0px)\/2)]\"\u003e\n\u003cdiv data-scroll-root=\"\" class=\"@w-sm\/main:[scrollbar-gutter:var(--stage-scroll-gutter)] touch:[scrollbar-width:none] group\/scroll-root relative flex min-h-0 min-w-0 flex-1 flex-col [scrollbar-gutter:stable] not-print:overflow-x-clip not-print:overflow-y-auto group-data-stream-active\/scroll-root:[overflow-anchor:none] scroll-pt-(--header-height) [--sticky-padding-top:var(--header-height)] [--sticky-padding-bottom:0px] [--scroll-root-safe-area-inset-top:calc(var(--sticky-padding-top)+env(safe-area-inset-top,0px))] [--scroll-root-safe-area-inset-bottom:calc(var(--sticky-padding-bottom)+var(--screen-keyboard-height,0px)+env(safe-area-inset-bottom,0px))] [--scroll-root-safe-area-height:calc(100lvh-var(--scroll-root-safe-area-inset-top)-var(--scroll-root-safe-area-inset-bottom))] has-data-[fixed-header=less-than-xl]:@w-xl\/main:scroll-pt-0 has-data-[fixed-header=less-than-xl]:@w-xl\/main:[--sticky-padding-top:0px] has-data-[fixed-header=less-than-xxl]:@w-2xl\/main:scroll-pt-0 has-data-[fixed-header=less-than-xxl]:@w-2xl\/main:[--sticky-padding-top:0px]\" data-scroll-from-top=\"\"\u003e\u003cmain class=\"min-h-0 flex-1\" id=\"main\"\u003e\n\u003cdiv id=\"thread\" class=\"group\/thread flex flex-col min-h-full\"\u003e\n\u003cdiv role=\"presentation\" class=\"composer-parent flex flex-1 flex-col focus-visible:outline-0\"\u003e\n\u003cdiv class=\"relative basis-auto flex-col -mb-(--composer-overlap-px) pb-(--composer-overlap-px) [--composer-overlap-px:28px] grow flex\"\u003e\n\u003cdiv class=\"flex flex-col text-sm\"\u003e\n\u003csection class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [\u0026amp;:has([data-writing-block])\u0026gt;*]:pointer-events-auto [content-visibility:auto] supports-[content-visibility:auto]:[contain-intrinsic-size:auto_100lvh] R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-698e5731-9bcc-832c-a717-0e7ac885e28b-57\" data-testid=\"conversation-turn-350\" data-scroll-anchor=\"false\" data-turn=\"assistant\"\u003e\n\u003cdiv class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\"\u003e\n\u003cdiv class=\"flex max-w-full flex-col gap-4 grow\"\u003e\n\u003cdiv data-message-author-role=\"assistant\" data-message-id=\"415ba5ec-a31e-4d3c-9149-486640b64946\" dir=\"auto\" data-message-model-slug=\"gpt-5-3\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+\u0026amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\"\u003e\n\u003cdiv class=\"flex w-full flex-col gap-1 empty:hidden\"\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\n\u003cp data-start=\"41\" data-end=\"273\"\u003eThis is one of those throw-on-and-go pieces that still feels completely put together. Clean lines, a relaxed drape, and that polished collar detail make it an easy win for busy mornings (or when you just don’t want to overthink it).\u003c\/p\u003e\n\u003cp data-start=\"275\" data-end=\"297\"\u003e\u003cstrong data-start=\"275\" data-end=\"295\"\u003eDetails we love:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul data-start=\"298\" data-end=\"572\"\u003e\n\u003cli data-section-id=\"10bb8dg\" data-start=\"298\" data-end=\"351\"\u003eLightweight, breathable fabric with an easy drape\u003c\/li\u003e\n\u003cli data-section-id=\"1bpi3p4\" data-start=\"352\" data-end=\"401\"\u003eModern stand collar with subtle button detail\u003c\/li\u003e\n\u003cli data-section-id=\"hr2oc4\" data-start=\"402\" data-end=\"447\"\u003eShort sleeves with a relaxed, cuffed feel\u003c\/li\u003e\n\u003cli data-section-id=\"13hlo7h\" data-start=\"448\" data-end=\"505\"\u003eStraight, easy silhouette that skims without clinging\u003c\/li\u003e\n\u003cli data-section-id=\"12i36cn\" data-start=\"506\" data-end=\"572\"\u003eAvailable in bold, happy hues that instantly brighten your day\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-start=\"574\" data-end=\"631\"\u003e\u003cstrong data-start=\"574\" data-end=\"588\"\u003eFit Notes:\u003c\/strong\u003e True to size with a relaxed, straight fit.\u003c\/p\u003e\n\u003cp data-start=\"633\" data-end=\"798\" data-is-last-node=\"\" data-is-only-node=\"\"\u003e\u003cstrong data-start=\"633\" data-end=\"647\"\u003eStyle Tip:\u003c\/strong\u003e Pair with a simple sandal and a crossbody for daytime, or add a wedge and gold jewelry to dress it up just a bit. It’s the definition of effortless. ✨\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mt-3 w-full empty:hidden\"\u003e\n\u003cmeta charset=\"utf-8\"\u003eModel is shown in size small. Info: \u003cmeta charset=\"utf-8\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cb id=\"docs-internal-guid-b1e5e92e-7fff-f56a-fe7a-681408cf081b\"\u003e\u003cspan\u003e5’2, normally a size small in tops \u0026amp; dresses, normally a size 25 in pants.\u003c\/span\u003e\u003c\/b\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mt-3 w-full empty:hidden\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/main\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cp data-start=\"564\" data-end=\"684\" data-is-last-node=\"\" data-is-only-node=\"\"\u003eEntro.\u003c\/p\u003e","brand":"Entro","offers":[{"title":"Red \/ Small","offer_id":50699559796983,"sku":null,"price":82.0,"currency_code":"USD","in_stock":false},{"title":"Red \/ Medium","offer_id":50699559829751,"sku":null,"price":82.0,"currency_code":"USD","in_stock":true},{"title":"Red \/ Large","offer_id":50699559862519,"sku":null,"price":82.0,"currency_code":"USD","in_stock":true},{"title":"Green \/ Small","offer_id":50699560288503,"sku":null,"price":82.0,"currency_code":"USD","in_stock":true},{"title":"Green \/ Medium","offer_id":50699560321271,"sku":null,"price":82.0,"currency_code":"USD","in_stock":true},{"title":"Green \/ Large","offer_id":50699560354039,"sku":null,"price":82.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0485\/5191\/9773\/files\/BLACKWILLOW-April26-155.jpg?v=1777994922","url":"https:\/\/www.blackwillowboutique.com\/products\/haven-shirt-dress","provider":"Black Willow Boutique, LLC","version":"1.0","type":"link"}