{"product_id":"heavyweight-washed-canvas-cargo-shorts","title":"Heavyweight Washed Canvas Cargo Shorts","description":"\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700\u0026family=Inter:wght@400;500;600\u0026display=swap');\n\n.bwc-page{background:#fff;font-family:'Inter',Arial,Helvetica,sans-serif;color:#141414;padding:0;margin:0;-webkit-font-smoothing:antialiased}\n.bwc-page *{box-sizing:border-box}\n.bwc-page .bwc-container{max-width:100%;width:100%;margin:0;padding:0}\n.bwc-page .bwc-card{background:#fff;border:none;padding:0;overflow:hidden}\n\n.bwc-page .bwc-teeth{display:block!important;height:16px!important;width:100%!important;background:\n  linear-gradient(135deg,#141414 25%,transparent 25%) 0 0\/16px 16px,\n  linear-gradient(225deg,#141414 25%,transparent 25%) 0 0\/16px 16px,\n  #fff!important;}\n.bwc-page .bwc-teeth.inv{background:\n  linear-gradient(135deg,#fff 25%,transparent 25%) 0 0\/16px 16px,\n  linear-gradient(225deg,#fff 25%,transparent 25%) 0 0\/16px 16px,\n  #141414!important;}\n\n.bwc-page .bwc-top{padding:26px 26px 0}\n.bwc-page .bwc-eyebrow{font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:#6b6b6b;text-align:center;margin:0 0 8px}\n.bwc-page .bwc-h1{font-family:'Oswald',sans-serif;font-weight:700;font-size:32px;text-align:center;color:#111;margin:0 0 18px;line-height:1.14;letter-spacing:-.2px;text-transform:uppercase}\n\n.bwc-page .bwc-hero{background:#141414;color:#fff;padding:28px 24px;margin:0;position:relative}\n.bwc-page .bwc-hero h2{font-family:'Oswald',sans-serif;margin:0 0 10px;font-size:22px;line-height:1.25;font-weight:600;letter-spacing:.01em;color:#fff!important}\n.bwc-page .bwc-hero p{margin:0;opacity:.88;line-height:1.7;font-size:15px;color:#fff!important}\n.bwc-page .bwc-hero strong{color:#fff!important;border-bottom:2px solid #fff}\n\n.bwc-page .bwc-img-wrap{width:100%;margin:0;overflow:hidden;background:#f4f4f4}\n.bwc-page .bwc-img-wrap img{width:100%;height:auto;display:block;margin:0}\n\n.bwc-page .bwc-body{padding:0 26px}\n\n.bwc-page .bwc-section-title{font-family:'Oswald',sans-serif;font-weight:700;font-size:22px;text-transform:uppercase;letter-spacing:.02em;color:#111;margin:38px 0 6px;padding-bottom:12px;border-bottom:3px solid #141414;line-height:1.2}\n.bwc-page .bwc-lead{font-size:15px;line-height:1.75;color:#3d3d3d;margin:0 0 18px}\n\n.bwc-page .bwc-carousel{position:relative;margin:22px 0 30px}\n.bwc-page .bwc-carousel-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 4px 14px;scrollbar-width:none;-ms-overflow-style:none}\n.bwc-page .bwc-carousel-track::-webkit-scrollbar{display:none}\n.bwc-page .bwc-carousel-slide{flex:0 0 100%;max-width:100%;scroll-snap-align:start;background:#fff;display:flex;flex-direction:column}\n.bwc-page .bwc-carousel-imgs{display:flex}\n.bwc-page .bwc-carousel-imgs img{flex:1 1 0;width:100%;height:auto;display:block;aspect-ratio:1\/1;object-fit:cover;min-width:0}\n.bwc-page .bwc-carousel-text{padding:18px;flex:1}\n.bwc-page .bwc-carousel-num{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:#141414;color:#fff;font-family:'Oswald',sans-serif;font-size:12px;font-weight:600;margin-bottom:10px}\n.bwc-page .bwc-carousel-text h3{margin:0 0 6px;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.01em;font-size:15px;color:#111;font-weight:600;line-height:1.3}\n.bwc-page .bwc-carousel-text p{margin:0;color:#4a4a4a;font-size:13px;line-height:1.6}\n.bwc-page .bwc-carousel-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:12px}\n.bwc-page .bwc-carousel-arrow{width:36px;height:36px;border:2px solid #141414;background:#fff;color:#141414;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:17px;flex-shrink:0;padding:0;line-height:1;transition:0.2s ease;}\n.bwc-page .bwc-carousel-arrow:hover{background:#141414;color:#fff}\n.bwc-page .bwc-carousel-dots{display:flex;gap:8px}\n.bwc-page .bwc-carousel-dot{width:8px;height:8px;border-radius:50%;background:#d4d4d4;cursor:pointer;transition:background .2s;padding:0;border:0}\n.bwc-page .bwc-carousel-dot.active{background:#141414}\n\n.bwc-page .bwc-review-title{font-family:'Oswald',sans-serif;font-size:14.5px;font-weight:600;text-transform:uppercase;letter-spacing:.01em;color:#111;margin:0 0 6px}\n.bwc-page .bwc-review-quote{font-size:13px;line-height:1.6;color:#4a4a4a;margin:0 0 8px;font-style:italic}\n.bwc-page .bwc-review-name{font-family:'Oswald',sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#111;font-weight:600}\n\n.bwc-page .bwc-review-carousel-slide{flex:0 0 100%;max-width:100%;scroll-snap-align:start;display:grid;grid-template-columns:1fr 1fr;gap:14px}\n.bwc-page .bwc-review-mini{padding:14px;background:#fff;border:1px solid #eee;transition:0.2s;}\n.bwc-page .bwc-review-mini:hover{box-shadow:0 3px 10px #0000000c;}\n.bwc-page .bwc-review-mini .bwc-review-quote{font-size:12.5px;line-height:1.55;margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}\n.bwc-page .bwc-review-mini .bwc-review-name{font-size:11px}\n\n.bwc-page .bwc-media-block{margin:22px 0 6px;overflow:hidden;background:#f4f4f4}\n.bwc-page .bwc-media-block img,.bwc-page .bwc-media-block video{width:100%;height:auto;display:block}\n.bwc-page .bwc-media-caption{padding:11px 16px;font-size:12px;color:#6b6b6b;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.05em;background:#fff}\n\n.bwc-page .bwc-spec{margin-top:36px;background:#141414;padding:0}\n.bwc-page .bwc-spec h2{color:#fff;margin:0;padding:20px 24px;font-size:19px;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid #3a3a3a}\n.bwc-page .bwc-table{width:100%;border-collapse:collapse;background:#fff}\n.bwc-page .bwc-table td{padding:14px 20px;border-bottom:1px solid #e4e4e4;vertical-align:top;line-height:1.5;font-size:14.5px;color:#222}\n.bwc-page .bwc-table tr:last-child td{border-bottom:0}\n.bwc-page .bwc-table td:first-child{font-family:'Oswald',sans-serif;font-weight:600;text-transform:uppercase;letter-spacing:.02em;color:#111;width:34%;background:#f5f5f5;font-size:12.5px}\n\n.bwc-page .bwc-faq{margin-top:36px}\n.bwc-page .bwc-faq-item{border-bottom:1px solid #e4e4e4;padding:16px 2px}\n.bwc-page .bwc-faq-item:first-child{padding-top:0}\n.bwc-page .bwc-faq-q{font-family:'Oswald',sans-serif;font-size:14.5px;text-transform:uppercase;letter-spacing:.01em;color:#111;font-weight:600;margin:0;display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;padding:0;cursor:pointer;text-align:left}\n.bwc-page .bwc-faq-q .qmark{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:#141414;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-family:'Oswald',sans-serif}\n.bwc-page .bwc-faq-q .qtext{flex:1}\n.bwc-page .bwc-faq-q .bwc-faq-toggle{flex:0 0 auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:#141414;transition:transform .2s}\n.bwc-page .bwc-faq-item.open .bwc-faq-q .bwc-faq-toggle{transform:rotate(45deg)}\n.bwc-page .bwc-faq-a{font-size:14px;line-height:1.65;color:#4a4a4a;margin:8px 0 0;padding-left:32px;display:none}\n.bwc-page .bwc-faq-item.open .bwc-faq-a{display:block}\n\n.bwc-page .bwc-cta{margin-top:36px;background:#141414;color:#fff;padding:40px 24px;text-align:center}\n.bwc-page .bwc-cta h2{margin:0 0 12px;font-size:24px;line-height:1.25;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.02em;font-weight:700;color:#fff!important}\n.bwc-page .bwc-cta p{margin:0 auto 22px;line-height:1.65;max-width:560px;opacity:.85;font-size:14.5px;color:#fff!important}\n.bwc-page .bwc-btn{display:inline-block;background:#fff;color:#111!important;padding:15px 40px;font-family:'Oswald',sans-serif;font-size:15px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;border:2px solid #fff;cursor:pointer;transition:0.2s ease;}\n.bwc-page .bwc-btn:hover{background:transparent;color:#fff;}\n.bwc-page .bwc-cta-form{margin:0;display:inline-block}\n\n.bwc-page .bwc-bottom-pad{height:26px}\n\n@media(max-width:768px){\n.bwc-page .bwc-container{padding:0}\n.bwc-page .bwc-top{padding:20px 16px 0}\n.bwc-page .bwc-body{padding:0 16px}\n.bwc-page .bwc-h1{font-size:24px}\n.bwc-page .bwc-hero{padding:20px 16px}\n.bwc-page .bwc-hero h2{font-size:19px}\n.bwc-page .bwc-section-title{font-size:19px;margin-top:30px}\n.bwc-page .bwc-carousel-slide{flex:0 0 100%;max-width:100%}\n.bwc-page .bwc-carousel-track{gap:0}\n.bwc-page .bwc-table td{display:block;width:100%;padding:10px 16px}\n.bwc-page .bwc-table td:first-child{width:100%;border-bottom:0;padding-bottom:2px}\n.bwc-page .bwc-faq-a{padding-left:0;margin-top:6px}\n.bwc-page .bwc-btn{display:block;width:100%;text-align:center}\n.bwc-page .bwc-review-carousel-slide{grid-template-columns:1fr;}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"bwc-page\"\u003e\n\u003cdiv class=\"bwc-container\"\u003e\n\u003cdiv class=\"bwc-card\"\u003e\n\u003cdiv class=\"bwc-top\"\u003e\n\u003cp class=\"bwc-eyebrow\"\u003eHeavyweight Canvas • Functional Streetwear\u003c\/p\u003e\n\u003ch1 class=\"bwc-h1\"\u003eTell Your Story 380GSM Washed Canvas Cargo Shorts\u003c\/h1\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-hero\"\u003e\n\u003ch2\u003eBuilt to Carry More. Designed to Reveal More.\u003c\/h2\u003e\n\u003cp\u003eCut from substantial \u003cstrong\u003e380gsm washed 100% cotton canvas\u003c\/strong\u003e, these olive khaki cargo shorts combine rugged structure, everyday storage and expressive detailing. Button up the three statement pocket flaps to reveal the hidden phrase: \u003cstrong\u003e“Tell Your Story.”\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-teeth\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-img-wrap\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/17857486001475.png?v=1785748607\" alt=\"Olive canvas cargo shorts front view\" loading=\"lazy\"\u003e\n\u003c\/div\u003e\n\n\u003ch2 class=\"bwc-section-title\" style=\"margin-left: 26px; margin-right: 26px;\"\u003eWhy This Pair Stands Apart\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\" style=\"margin-left: 26px; margin-right: 26px;\"\u003eMore than basic utility shorts. Every pocket, flap, zip and embroidered detail has been developed to add function, dimension and identity to your everyday rotation.\u003c\/p\u003e\n\n\u003cp class=\"bwc-lead\" style=\"margin-left: 26px; margin-right: 26px;\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/1_52697b32-1733-4fd8-8952-b2c3da4a535b.jpg?v=1785748308\" alt=\"Pocket closeup detail\" loading=\"lazy\"\u003e\n\u003c\/p\u003e\n\n\u003c!-- Feature Carousel 【修复属性】 --\u003e\n\u003cdiv class=\"bwc-carousel\" data-carousel\u003e\n\u003cdiv class=\"bwc-carousel-track\" data-track\u003e\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e1\u003c\/span\u003e\n\u003ch3\u003e380GSM Washed Cotton Canvas\u003c\/h3\u003e\n\u003cp\u003eMade from heavyweight 100% cotton canvas with a substantial hand feel. The washed finish softens the fabric while preserving the structured, workwear-inspired silhouette.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e2\u003c\/span\u003e\n\u003ch3\u003eReworked-Inspired 3D Cargo Pocket\u003c\/h3\u003e\n\u003cp\u003eThe oversized dimensional cargo pocket draws inspiration from reconstructed denim, creating extra depth, visual character and practical space for daily essentials.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e3\u003c\/span\u003e\n\u003ch3\u003ePurpose-Built Multi-Pocket Storage\u003c\/h3\u003e\n\u003cp\u003eMultiple smaller compartments help separate your phone, wallet, keys, cards and accessories instead of letting everything collect inside one oversized pocket.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e4\u003c\/span\u003e\n\u003ch3\u003eHidden “Tell Your Story” Message\u003c\/h3\u003e\n\u003cp\u003eThree larger pocket flaps can be buttoned upward to reveal the phrase “Tell Your Story,” transforming a functional detail into a personal design statement.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e5\u003c\/span\u003e\n\u003ch3\u003eAdjustable Tabs \u0026amp; Statement Hardware\u003c\/h3\u003e\n\u003cp\u003eAdjustable tabs help refine the fit, while chunky plastic-tooth zips, buttoned flaps and embroidery bring bold texture to the clean olive canvas base.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-nav\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-prev aria-label=\"Previous slide\"\u003e‹\u003c\/button\u003e\n\u003cdiv class=\"bwc-carousel-dots\" data-dots\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-next aria-label=\"Next slide\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-teeth\" style=\"margin-top: 8px;\"\u003e\u003c\/div\u003e\n\n\u003ch2 class=\"bwc-section-title\"\u003eFit \u0026amp; Silhouette\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\"\u003eDesigned with a structured, utility-led profile that gives the pockets room to hold their shape. Use the size chart and compare the listed outseam measurement with a pair of shorts you already own. The adjustable tabs allow small fit refinements at the waist.\u003c\/p\u003e\n\n\u003cdiv class=\"bwc-media-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/1_6c5ccd28-8a57-4fbd-913c-a31f99762235.png?v=1785747958\" alt=\"Shorts fit silhouette front \u0026amp; back\" loading=\"lazy\"\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-body\"\u003e\n\u003ch2 class=\"bwc-section-title\"\u003eMade for Everyday Movement\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\"\u003eOne Statement Pair. Multiple Ways to Wear It.\u003c\/p\u003e\n\u003cp class=\"bwc-lead\" style=\"margin-top: -6px;\"\u003ePair them with an oversized tee and sneakers for relaxed streetwear, add a fitted tank for a cleaner silhouette, or layer with a utility jacket for a fully developed workwear look. Built for everyday wear, city travel, festivals, creative spaces and off-duty weekends.\u003c\/p\u003e\n\n\u003cdiv class=\"bwc-media-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/t56112-st71011-i0.jpg?v=1785748308\" alt=\"Lifestyle streetwear outfit\" loading=\"lazy\"\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-spec\"\u003e\n\u003ch2\u003eProduct Specifications\u003c\/h2\u003e\n\u003ctable class=\"bwc-table\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eProduct Name\u003c\/td\u003e\n\u003ctd\u003eTell Your Story 380GSM Washed Canvas Cargo Shorts\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eVersion\u003c\/td\u003e\n\u003ctd\u003eKhaki Shorts 4.0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProduct Type\u003c\/td\u003e\n\u003ctd\u003eHeavyweight Multi-Pocket Cargo Shorts\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStyle\u003c\/td\u003e\n\u003ctd\u003eUtility Streetwear, Reworked-Inspired Design and Everyday Workwear\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFabric\u003c\/td\u003e\n\u003ctd\u003e100% Cotton Canvas\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFabric Weight\u003c\/td\u003e\n\u003ctd\u003e380gsm Heavyweight Construction\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eColor\u003c\/td\u003e\n\u003ctd\u003eWashed Olive Green Khaki\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMain Pocket\u003c\/td\u003e\n\u003ctd\u003eLarge Dimensional 3D Cargo Pocket Inspired by Reworked Jeans\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStorage\u003c\/td\u003e\n\u003ctd\u003eMultiple Large and Small Compartments for Everyday Carry\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStatement Detail\u003c\/td\u003e\n\u003ctd\u003eThree Large Pocket Flaps Button Up to Reveal “Tell Your Story”\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWaist Detail\u003c\/td\u003e\n\u003ctd\u003eAdjustable Tabs for Minor Fit Refinement\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eZip Detail\u003c\/td\u003e\n\u003ctd\u003eChunky Plastic-Tooth Zips\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDecoration\u003c\/td\u003e\n\u003ctd\u003ePocket Flap Embroidery and Layered Utility Construction\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMeasurement Method\u003c\/td\u003e\n\u003ctd\u003eAll Shorts-Length Measurements Are Listed in Outseam\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFit Reference\u003c\/td\u003e\n\u003ctd\u003eCompare the Size Chart with the Outseam and Waist of Shorts You Already Own\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eBest For\u003c\/td\u003e\n\u003ctd\u003eStreetwear, Daily Carry, Travel, Festivals, Creative Work and Weekend Styling\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eColor Note\u003c\/td\u003e\n\u003ctd\u003eThe Washed Olive Tone May Look Lighter or Deeper Under Different Indoor and Outdoor Lighting\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCare Instructions\u003c\/td\u003e\n\u003ctd\u003eWash Cold Inside Out with Similar Colors. Fasten Buttons and Zips Before Washing. Do Not Bleach. Hang Dry.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\n\u003ch2 class=\"bwc-section-title\"\u003eDesign Details At A Glance\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\"\u003eUse the arrows or dots to explore the construction and styling details.\u003c\/p\u003e\n\u003c!-- Detail Quote Carousel --\u003e\n\u003cdiv class=\"bwc-carousel\" data-carousel\u003e\n\u003cdiv class=\"bwc-carousel-track\" data-track\u003e\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eHeavyweight Structure\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e“The 380gsm canvas gives the shorts a substantial silhouette, helping the layered pockets maintain their shape instead of collapsing against the leg.”\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eOrganized Everyday Carry\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e“Smaller compartments make it easier to separate frequently used essentials without searching through one deep, unstructured cargo pocket.”\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eInteractive Statement Detail\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e“The button-up flaps let you choose between a cleaner utility look and the revealed ‘Tell Your Story’ message.”\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eBuilt from Every Angle\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e“Chunky zip teeth, flap embroidery, adjustable tabs and layered pocket construction create detail without relying on an oversized front graphic.”\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-nav\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-prev aria-label=\"Previous slide\"\u003e‹\u003c\/button\u003e\n\u003cdiv class=\"bwc-carousel-dots\" data-dots\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-next aria-label=\"Next slide\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- ========== 新增客户评论区域 ========== --\u003e\n\u003cdiv class=\"bwc-teeth\"\u003e\u003c\/div\u003e\n\u003ch2 class=\"bwc-section-title\"\u003eCustomer Reviews\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\"\u003eReal feedback from streetwear and workwear buyers.\u003c\/p\u003e\n\u003cdiv class=\"bwc-carousel\" data-carousel\u003e\n\u003cdiv class=\"bwc-carousel-track\" data-track\u003e\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eGreat build quality\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e380gsm canvas feels really solid, not thin cheap fabric. Love the hidden message under the pocket flaps, lots of compliments. Pockets fit my phone and keys perfectly.\u003c\/p\u003e\n\u003cp class=\"bwc-review-name\"\u003eJake M. | Size L\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003ePerfect streetwear shorts\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003eStructured fit holds shape all day. Adjustable waist tabs are super useful. Olive colour looks amazing with white and black tees. Will order another colour if available.\u003c\/p\u003e\n\u003cp class=\"bwc-review-name\"\u003eTyler R. | Size M\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eUnique design detail\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003eNo other cargo shorts have this hidden \"Tell Your Story\" detail. Fabric washes well, minimal fading. Multiple small pockets solve the messy single pocket problem.\u003c\/p\u003e\n\u003cp class=\"bwc-review-name\"\u003eMarcus L. | Size XL\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eDaily wear winner\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003eI wear these for city trips and weekend festivals. Comfortable, tough canvas, hardware feels premium. Highly recommend for anyone into utility streetwear.\u003c\/p\u003e\n\u003cp class=\"bwc-review-name\"\u003eEthan S. | Size L\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-nav\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-prev aria-label=\"Previous slide\"\u003e‹\u003c\/button\u003e\n\u003cdiv class=\"bwc-carousel-dots\" data-dots\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-next aria-label=\"Next slide\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ========== 评论区结束 ========== --\u003e\n\n\u003cdiv class=\"bwc-faq\" data-accordion\u003e\n\u003ch2 class=\"bwc-section-title\"\u003eFrequently Asked Questions\u003c\/h2\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eHow heavy is the fabric?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eThe shorts are made from 380gsm cotton canvas. This gives them a noticeably more substantial, structured feel than lightweight summer shorts while the washed finish helps reduce excessive stiffness.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eHow should I choose my size?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eReview the size chart above and compare the listed waist and outseam measurements with a similar pair of shorts you already own. All shorts-length measurements are taken using the outseam.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eWhat does outseam measurement mean?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eOutseam is measured from the top edge of the waistband down the outside of the shorts to the bottom hem. It helps you understand the overall length and where the shorts may sit on your leg.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eIs the olive color always identical?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eThe fabric has a washed olive green khaki finish. Its tone can appear lighter, darker, warmer or cooler depending on indoor lighting, outdoor sunlight and your screen settings.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eHow is the hidden phrase revealed?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eThree of the larger pocket flaps can be folded and buttoned upward, revealing the phrase “Tell Your Story.” Wear the flaps down for a cleaner look or button them up when you want the message visible.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eAre the pockets functional?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eYes. The design combines a large dimensional cargo pocket with multiple smaller compartments intended to organize everyday items such as a phone, wallet, keys, cards and accessories.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\n \u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e \u003cspan class=\"qtext\"\u003eHow should I wash the shorts?\u003c\/span\u003e \u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\n\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eTurn the shorts inside out, close the buttons and zips, and wash cold with similar colors. Avoid bleach and harsh detergents. Hang drying is recommended to help preserve the washed finish, embroidery and structured shape.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-teeth inv\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"bwc-bottom-pad\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-cta\"\u003e\n\u003ch2\u003eWear What You’ve Lived. Tell Your Story.\u003c\/h2\u003e\n\u003cp\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/1_6c5ccd28-8a57-4fbd-913c-a31f99762235.png?v=1785747958\" alt=\"Hidden text pocket flap detail\" loading=\"lazy\"\u003e\n\u003c\/p\u003e\n\u003cp\u003eHeavyweight washed canvas, organized everyday storage and details that change with the way you wear them.\u003cbr\u003eSelect your size and make the story yours.\u003c\/p\u003e\n\u003cbutton type=\"button\" class=\"bwc-btn bwc-add-to-cart\"\u003e Shop The Cargo Shorts \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  var carousels = document.querySelectorAll('.bwc-page [data-carousel]');\n\n  carousels.forEach(function(carousel){\n    if (carousel.getAttribute('data-bwc-initialized') === 'true') return;\n    carousel.setAttribute('data-bwc-initialized', 'true');\n\n    var track = carousel.querySelector('[data-track]');\n    var slides = track ? track.querySelectorAll('.bwc-carousel-slide') : [];\n    var dotsWrap = carousel.querySelector('[data-dots]');\n    var prevBtn = carousel.querySelector('[data-prev]');\n    var nextBtn = carousel.querySelector('[data-next]');\n\n    if (!track || !slides.length || !dotsWrap || !prevBtn || !nextBtn) return;\n\n    var activeIndex = 0;\n    var delay = parseInt(carousel.getAttribute('data-autoplay'), 10) || 0;\n    var autoplayTimer = null;\n    var carouselInView = false;\n\n    dotsWrap.innerHTML = '';\n\n    slides.forEach(function(slide, index){\n      var dot = document.createElement('button');\n      dot.type = 'button';\n      dot.className = 'bwc-carousel-dot' + (index === 0 ? ' active' : '');\n      dot.setAttribute('aria-label', 'Go to slide ' + (index + 1));\n      dot.setAttribute('aria-current', index === 0 ? 'true' : 'false');\n      dot.addEventListener('click', function(){\n        goToSlide(index);\n        restartAutoplay();\n      });\n      dotsWrap.appendChild(dot);\n    });\n\n    var dots = dotsWrap.querySelectorAll('.bwc-carousel-dot');\n\n    function goToSlide(index){\n      if (index \u003c 0) index = slides.length - 1;\n      if (index \u003e= slides.length) index = 0;\n\n      activeIndex = index;\n      var left = slides[index].offsetLeft;\n\n      if (typeof track.scrollTo === 'function') {\n        track.scrollTo({ left: left, behavior: 'smooth' });\n      } else {\n        track.scrollLeft = left;\n      }\n\n      updateDots(index);\n    }\n\n    function updateDots(index){\n      dots.forEach(function(dot, dotIndex){\n        var active = dotIndex === index;\n        dot.classList.toggle('active', active);\n        dot.setAttribute('aria-current', active ? 'true' : 'false');\n      });\n    }\n\n    function updateActiveFromScroll(){\n      var trackLeft = track.getBoundingClientRect().left;\n      var closestIndex = 0;\n      var closestDistance = Infinity;\n\n      slides.forEach(function(slide, index){\n        var distance = Math.abs(slide.getBoundingClientRect().left - trackLeft);\n        if (distance \u003c closestDistance) {\n          closestDistance = distance;\n          closestIndex = index;\n        }\n      });\n\n      activeIndex = closestIndex;\n      updateDots(activeIndex);\n    }\n\n    var scrollTimer;\n    track.addEventListener('scroll', function(){\n      clearTimeout(scrollTimer);\n      scrollTimer = setTimeout(updateActiveFromScroll, 80);\n    }, { passive: true });\n\n    prevBtn.addEventListener('click', function(){\n      goToSlide(activeIndex - 1);\n      restartAutoplay();\n    });\n\n    nextBtn.addEventListener('click', function(){\n      goToSlide(activeIndex + 1);\n      restartAutoplay();\n    });\n\n    function stopAutoplay(){\n      if (autoplayTimer) {\n        clearInterval(autoplayTimer);\n        autoplayTimer = null;\n      }\n    }\n\n    function startAutoplay(){\n      stopAutoplay();\n      if (delay \u003c= 0 || !carouselInView || slides.length \u003c 2) return;\n      autoplayTimer = setInterval(function(){\n        goToSlide(activeIndex + 1);\n      }, delay);\n    }\n\n    function restartAutoplay(){\n      stopAutoplay();\n      startAutoplay();\n    }\n\n    track.addEventListener('pointerdown', stopAutoplay);\n    track.addEventListener('touchstart', stopAutoplay, { passive: true });\n    track.addEventListener('pointerup', restartAutoplay);\n    track.addEventListener('touchend', restartAutoplay, { passive: true });\n    carousel.addEventListener('mouseenter', stopAutoplay);\n    carousel.addEventListener('mouseleave', restartAutoplay);\n\n    if ('IntersectionObserver' in window) {\n      var observer = new IntersectionObserver(function(entries){\n        entries.forEach(function(entry){\n          carouselInView = entry.isIntersecting;\n          if (carouselInView) startAutoplay();\n          else stopAutoplay();\n        });\n      }, { threshold: 0.35 });\n\n      observer.observe(carousel);\n    } else {\n      carouselInView = true;\n      startAutoplay();\n    }\n\n    updateDots(0);\n  });\n})();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n(function(){\n  var accordions = document.querySelectorAll('.bwc-page [data-accordion]');\n\n  accordions.forEach(function(accordion){\n    if (accordion.getAttribute('data-bwc-initialized') === 'true') return;\n    accordion.setAttribute('data-bwc-initialized', 'true');\n\n    accordion.querySelectorAll('.bwc-faq-q').forEach(function(button){\n      button.addEventListener('click', function(){\n        var item = button.closest('.bwc-faq-item');\n        if (!item) return;\n\n        var shouldOpen = !item.classList.contains('open');\n        item.classList.toggle('open', shouldOpen);\n        button.setAttribute('aria-expanded', shouldOpen ? 'true' : 'false');\n      });\n    });\n  });\n})();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n(function(){\n  function isUsableButton(button){\n    if (!button) return false;\n    if (button.disabled) return false;\n    if (button.getAttribute('aria-disabled') === 'true') return false;\n    return true;\n  }\n\n  function findProductForm(){\n    var forms = document.querySelectorAll('form[action*=\"\/cart\/add\"]');\n    return forms.length ? forms[0] : null;\n  }\n\n  function findThemeAddButton(form){\n    var shrineButton = document.querySelector('button.main-product-atc[name=\"add\"]');\n    if (shrineButton \u0026\u0026 !shrineButton.classList.contains('bwc-add-to-cart')) {\n      return shrineButton;\n    }\n\n    if (form) {\n      var formButton = form.querySelector(\n        'button[name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]'\n      );\n      if (formButton \u0026\u0026 !formButton.classList.contains('bwc-add-to-cart')) {\n        return formButton;\n      }\n    }\n\n    var buttons = document.querySelectorAll(\n      'button[name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]'\n    );\n\n    for (var i = 0; i \u003c buttons.length; i++) {\n      if (buttons[i].classList.contains('bwc-add-to-cart')) continue;\n\n      var text = (buttons[i].textContent || buttons[i].value || '')\n        .trim()\n        .toLowerCase();\n\n      if (\n        text === 'add to cart' ||\n        text === 'add to bag' ||\n        text.indexOf('add to cart') !== -1\n      ) {\n        return buttons[i];\n      }\n    }\n\n    return null;\n  }\n\n  function getVariantId(form, fallbackId){\n    if (form) {\n      var checked = form.querySelector('input[name=\"id\"]:checked');\n      if (checked \u0026\u0026 checked.value) return checked.value;\n\n      var select = form.querySelector('select[name=\"id\"]');\n      if (select \u0026\u0026 select.value) return select.value;\n\n      var input = form.querySelector('input[name=\"id\"]');\n      if (input \u0026\u0026 input.value) return input.value;\n    }\n\n    if (fallbackId \u0026\u0026 fallbackId !== 'VARIANT_ID') return fallbackId;\n    return '';\n  }\n\n  function addVariantDirectly(variantId, button){\n    button.disabled = true;\n    button.setAttribute('aria-busy', 'true');\n\n    var originalText = button.textContent;\n    button.textContent = 'Adding...';\n\n    fetch('\/cart\/add.js', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application\/json',\n        'Accept': 'application\/json'\n      },\n      body: JSON.stringify({\n        id: variantId,\n        quantity: 1\n      })\n    })\n    .then(function(response){\n      if (!response.ok) {\n        return response.json().catch(function(){ return {}; }).then(function(data){\n          throw new Error(data.description || data.message || 'Unable to add this item.');\n        });\n      }\n      return response.json();\n    })\n    .then(function(){\n      window.location.href = '\/cart';\n    })\n    .catch(function(error){\n      alert(error.message || 'Unable to add this item. Please select an available size above.');\n      button.disabled = false;\n      button.removeAttribute('aria-busy');\n      button.textContent = originalText;\n    });\n  }\n\n  document.addEventListener('click', function(event){\n    var button = event.target.closest('.bwc-add-to-cart');\n    if (!button) return;\n\n    event.preventDefault();\n\n    var form = findProductForm();\n    var themeButton = findThemeAddButton(form);\n\n    if (themeButton) {\n      if (!isUsableButton(themeButton)) {\n        alert('Please select an available size above before adding this item.');\n        if (form \u0026\u0026 typeof form.scrollIntoView === 'function') {\n          form.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        }\n        return;\n      }\n      themeButton.click();\n      return;\n    }\n\n    var variantId = getVariantId(\n      form,\n      button.getAttribute('data-fallback-variant')\n    );\n\n    if (!variantId) {\n      alert('Please select an available size above before adding this item.');\n      if (form \u0026\u0026 typeof form.scrollIntoView === 'function') {\n        form.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n      return;\n    }\n\n    addVariantDirectly(variantId, button);\n  });\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"tjx","offers":[{"title":"Khaki \/ S","offer_id":43778847998042,"sku":"NC02292608034527-印花牛仔长裤-Khaki-S","price":58.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ M","offer_id":43778848030810,"sku":"NC02292608034527-印花牛仔长裤-Khaki-M","price":58.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ L","offer_id":43778848063578,"sku":"NC02292608034527-印花牛仔长裤-Khaki-L","price":58.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ XL","offer_id":43778848096346,"sku":"NC02292608034527-印花牛仔长裤-Khaki-XL","price":58.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ 2XL","offer_id":43778848129114,"sku":"NC02292608034527-印花牛仔长裤-Khaki-XXL","price":58.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0731\/4633\/5322\/files\/1_6c5ccd28-8a57-4fbd-913c-a31f99762235.png?v=1785747958","url":"https:\/\/sthael.com\/products\/heavyweight-washed-canvas-cargo-shorts","provider":"Sthael","version":"1.0","type":"link"}