Free Shipping
Available on popular items. Tracked upgrades at checkout.
🚨 BIG SALE | UP TO -50% OFF + FREE SHIPPING
Washed Warrior
Couldn't load pickup availability
<body> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Product + Size Chart — Minimal</title> <style> :root{ --bg:#ffffff; --ink:#0b0c0f; --muted:#6b7280; --line:#eceef1; --accent:#111827; --radius:18px; --radius-sm:10px; --shadow:0 6px 24px rgba(0,0,0,.05); --shadow-soft:0 3px 12px rgba(0,0,0,.05); } html,body{height:100%} html{color-scheme:light} body{ margin:0; background:var(--bg); color:var(--ink); font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, "Helvetica Neue", Arial, "Noto Sans", sans-serif; -webkit-font-smoothing:antialiased; font-size:15px; line-height:1.75; font-weight:300; letter-spacing:.15px; } /* Narrow, minimal container */ .wrap{ max-width: 640px; margin: 56px auto; padding: 0 18px; position: relative; } /* Minimal card */ .card{ background:#fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 28px 26px; } .title{ margin: 0 0 10px; font-size: clamp(20px, 4.4vw, 26px); font-weight: 700; letter-spacing: -0.015em; } .lead{ margin: 0; color:#1f2937; max-width: 60ch; } .features{ list-style: none; padding: 0; margin: 16px 0 0; display: grid; gap: 10px; } .features li{ font-weight: 400; display: inline-flex; align-items: baseline; gap: 8px; } .features li::before{ content: "—"; color: var(--accent); opacity:.55; font-weight: 600; } /* Ghost trigger button */ .size-chart-button-container{ text-align:center; margin: 16px 0 0; } .size-chart-open-button{ background:#fff; color:var(--ink); padding: 9px 16px; font-size: 12px; font-weight: 700; letter-spacing:.25px; border-radius: 999px; border: 1px solid var(--ink); cursor: pointer; text-transform: uppercase; transition: transform .15s ease, box-shadow .2s ease, background .2s ease; box-shadow: var(--shadow-soft); } .size-chart-open-button:hover, .size-chart-open-button:focus-visible{ transform: translateY(-1px); outline: none; background: #fafafa; box-shadow: 0 10px 26px rgba(0,0,0,.08); } /* Collapse */ .size-chart-collapse{ width: 100%; max-width: 560px; margin: 18px auto 40px; padding: 16px; background:#fff; border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-soft); } .hidden{ display:none; } /* Tabs: minimalist underline */ .size-chart-tabs{ display:flex; justify-content:center; gap: 18px; margin-bottom: 12px; border-bottom: 1px solid var(--line); padding-bottom: 2px; } .tab-button{ appearance:none; background:transparent; color:var(--muted); padding: 6px 2px; font-size:12px; font-weight:700; letter-spacing:.3px; border:none; border-radius:0; cursor:pointer; position:relative; transition: color .2s ease; } .tab-button:hover, .tab-button:focus-visible{ color:var(--ink); outline:none; } .tab-button[aria-selected="true"]{ color:var(--ink); } .tab-button[aria-selected="true"]::after{ content:""; position:absolute; left:0; right:0; bottom:-3px; height: 2px; background: var(--accent); border-radius: 2px; } /* Table: soft row dividers only */ .size-chart-table{ width:100%; border-collapse: collapse; background:#fff; } .size-chart-table th, .size-chart-table td{ text-align:center; padding: 10px 6px; font-size:12px; color:var(--ink); border: none; border-bottom: 1px solid var(--line); } .size-chart-table th{ font-weight: 700; background: #fbfcfd; } .size-chart-table td:first-child, .size-chart-table th:first-child{ text-align:left; padding-left: 6px; font-weight: 600; } .size-chart-table tbody tr:last-child td{ border-bottom: none; } .size-chart-note{ margin-top: 10px; font-size: 11.5px; color: var(--muted); text-align: center; } @media (max-width:660px){ .wrap{ margin:44px auto; padding:0 14px; } .card{ padding: 24px 20px; } .size-chart-collapse{ max-width: 100%; } } </style> <main class="wrap" aria-labelledby="product-heading"> <section class="card" aria-describedby="product-desc"> <h1 class="title" id="product-heading">Built for the Long Term</h1> <p class="lead" id="product-desc"> We make pieces to last. Cut from ultra-smooth 100% polyester mesh for cool comfort and durability, then finished with professional-grade printing that resists cracking and fading. Everyday-ready, season after season. </p> <ul class="features" role="list"> <li>100% Polyester Mesh</li> <li>With pockets</li> <li>High-quality printing</li> </ul> </section> <!-- Trigger --> <div class="size-chart-button-container"> <button id="sizeChartToggle" class="size-chart-open-button" aria-expanded="false" aria-controls="sizeChartPanel"> Size Chart For Shirt </button> </div> <!-- Collapsible size chart --> <section id="sizeChartPanel" class="size-chart-collapse hidden" aria-hidden="true"> <!-- Tabs --> <div class="size-chart-tabs" role="tablist" aria-label="Size chart units"> <button class="tab-button" role="tab" id="tab-btn-cm" aria-selected="true" aria-controls="tab-cm" tabindex="0" data-unit="cm">CM</button> <button class="tab-button" role="tab" id="tab-btn-in" aria-selected="false" aria-controls="tab-in" tabindex="-1" data-unit="in">Inches</button> </div> <!-- CM table --> <div id="tab-cm" role="tabpanel" aria-labelledby="tab-btn-cm"> <table class="size-chart-table" id="table-cm" aria-label="Shirt size chart in centimeters"></table> </div> <!-- Inches table --> <div id="tab-in" role="tabpanel" aria-labelledby="tab-btn-in" hidden> <table class="size-chart-table" id="table-in" aria-label="Shirt size chart in inches"></table> </div> <p class="size-chart-note"> Measurements are garment dimensions. Compare with a tee you own for best fit. </p> </section> <noscript> <p style="text-align:center;font:14px/1.4 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;color:#555;"> Enable JavaScript to view the interactive size chart. </p> </noscript> </main> <script> /* ===== Data (single source of truth in CM) ===== */ const SIZE_DATA_CM = [ { size: "S", length: 72, chest: 112, shoulder: 54, sleeve: 24 }, { size: "M", length: 74, chest: 116, shoulder: 55.5, sleeve: 25 }, { size: "L", length: 76, chest: 120, shoulder: 57, sleeve: 26 }, { size: "XL", length: 78, chest: 124, shoulder: 58.5, sleeve: 27 }, { size: "XXL", length: 80, chest: 128, shoulder: 60, sleeve: 28 }, { size: "XXXL",length: 82, chest: 132, shoulder: 61.5, sleeve: 29 } ]; const COLUMNS = [ { key: "size", label: "Size" }, { key: "length", label: "Length" }, { key: "chest", label: "Chest" }, { key: "shoulder", label: "Shoulder" }, { key: "sleeve", label: "Sleeve" } ]; // CM -> inches (rounded to nearest 0.5") const cmToIn = cm => Math.round((cm / 2.54) * 2) / 2; function renderTable(target, data, unit){ const thead = document.createElement("thead"); const trh = document.createElement("tr"); COLUMNS.forEach(col => { const th = document.createElement("th"); th.scope = "col"; th.textContent = col.key === "size" ? col.label : `${col.label} (${unit === "cm" ? "cm" : "in"})`; trh.appendChild(th); }); thead.appendChild(trh); const tbody = document.createElement("tbody"); data.forEach(row => { const tr = document.createElement("tr"); COLUMNS.forEach(col => { const td = document.createElement("td"); if(col.key === "size"){ td.textContent = row.size; td.style.fontWeight = 600; } else { const val = unit === "cm" ? row[col.key] : cmToIn(row[col.key]); td.textContent = Number.isInteger(val) ? String(val) : val.toFixed(1); } tr.appendChild(td); }); tbody.appendChild(tr); }); target.innerHTML = ""; target.appendChild(thead); target.appendChild(tbody); } // Initial render const tableCM = document.getElementById("table-cm"); const tableIN = document.getElementById("table-in"); renderTable(tableCM, SIZE_DATA_CM, "cm"); renderTable(tableIN, SIZE_DATA_CM, "in"); // Collapsible behavior const toggleBtn = document.getElementById("sizeChartToggle"); const panel = document.getElementById("sizeChartPanel"); function setPanel(open){ panel.classList.toggle("hidden", !open); panel.setAttribute("aria-hidden", String(!open)); toggleBtn.setAttribute("aria-expanded", String(!!open)); if(open){ document.getElementById("tab-btn-cm").focus(); } } toggleBtn.addEventListener("click", () => { const isOpen = toggleBtn.getAttribute("aria-expanded") === "true"; setPanel(!isOpen); }); // Tabs: click + arrow keys + roving tabindex const tabs = Array.from(document.querySelectorAll('[role="tab"]')); const tabMap = { cm: { btn: document.getElementById("tab-btn-cm"), panel: document.getElementById("tab-cm") }, in: { btn: document.getElementById("tab-btn-in"), panel: document.getElementById("tab-in") } }; function activateTab(key){ for(const k in tabMap){ const { btn, panel } = tabMap[k]; const selected = k === key; btn.setAttribute("aria-selected", String(selected)); btn.tabIndex = selected ? 0 : -1; panel.hidden = !selected; } tabMap[key].btn.focus(); } tabs.forEach(btn => { btn.addEventListener("click", () => activateTab(btn.dataset.unit)); btn.addEventListener("keydown", (e) => { const idx = tabs.indexOf(btn); if(e.key === 'ArrowRight' || e.key === 'ArrowDown'){ e.preventDefault(); const next = tabs[(idx + 1) % tabs.length]; activateTab(next.dataset.unit); } else if(e.key === 'ArrowLeft' || e.key === 'ArrowUp'){ e.preventDefault(); const prev = tabs[(idx - 1 + tabs.length) % tabs.length]; activateTab(prev.dataset.unit); } else if(e.key === 'Home'){ e.preventDefault(); activateTab(tabs[0].dataset.unit); } else if(e.key === 'End'){ e.preventDefault(); activateTab(tabs[tabs.length - 1].dataset.unit); } }); }); // Default active tab activateTab('cm'); </script> </body>
Available on popular items. Tracked upgrades at checkout.
Change of mind friendly—prepaid label, easy process.
Most orders ship within 24–48 hours, packed with care.
Encrypted payments. Major cards & PayPal accepted.
Join our email list for exclusive offers and the latest news.