/* ===========================================================================
ZODIA® policy pages — shared stylesheet
Namespace: .zod | Paste this block at the TOP of BOTH pages.
Doubled selectors (.zod .zod__x) score 0,2,0 and beat the theme's
.rte h2 / .rte p / .rte a rules, which score 0,1,1.
=========================================================================== */
.zod{
--zod-ink:#1A1A1A;
--zod-body:#333333;
--zod-mute:#595959;
--zod-line:#E2E2E2;
--zod-wash:#F7F7F7;
--zod-wash2:#F2F2F2;
--zod-lilac:#7C3AAD;
--zod-lilacwash:#F7F0FB;
--zod-pill:40px;
font-family:'Inter',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
color:var(--zod-body);
font-size:16px;
line-height:1.65;
text-align:left;
-webkit-font-smoothing:antialiased;
}
.zod *,.zod *::before,.zod *::after{box-sizing:border-box}
/* Body copy. Re-declared, not inherited, because .rte p sets size AND align. */
.zod .zod p,
.zod p{
margin:0 0 .85em;
color:var(--zod-body);
font-size:16px;
line-height:1.65;
text-align:left;
}
.zod p:last-child{margin-bottom:0}
.zod b,.zod strong{color:var(--zod-ink);font-weight:600}
/* Body links only — components declare their own colour below. */
.zod a:not([class]){
color:var(--zod-lilac);
text-decoration:underline;
text-underline-offset:2px;
text-decoration-thickness:1px;
font-weight:500;
}
.zod a:not([class]):hover{color:#5E2686;text-decoration-thickness:2px}
.zod a:focus-visible,.zod a:not([class]):focus-visible{
outline:2px solid var(--zod-lilac);outline-offset:3px;border-radius:2px;
}
/* ---------- black stat band ---------------------------------------------- */
.zod .zod__band{
background:#000;color:#fff;
border-radius:20px;
padding:clamp(22px,5vw,32px) clamp(18px,4vw,30px);
margin:0 0 clamp(24px,5vw,34px);
}
.zod .zod__bandgrid{
display:grid;
grid-template-columns:1fr;
gap:18px;
}
.zod .zod__stat{
display:flex;align-items:baseline;gap:12px;
padding-bottom:18px;
border-bottom:1px solid rgba(255,255,255,.18);
}
.zod .zod__stat:last-child{border-bottom:0;padding-bottom:0}
.zod .zod__statnum{
color:#fff;font-size:clamp(26px,7vw,32px);line-height:1;
font-weight:600;letter-spacing:-.02em;white-space:nowrap;flex:0 0 auto;
}
.zod .zod__statlab{
color:#CCCCCC;font-size:13px;line-height:1.35;letter-spacing:.02em;
}
.zod .zod__bandnote{
color:#CCCCCC!important;font-size:13.5px!important;line-height:1.55!important;
text-align:left!important;
margin:20px 0 0!important;padding-top:18px;
border-top:1px solid rgba(255,255,255,.18);
}
/* ---------- intro --------------------------------------------------------- */
.zod .zod__intro{
font-size:clamp(17px,4.2vw,19px)!important;
line-height:1.55!important;
color:var(--zod-ink)!important;
text-align:left!important;
text-wrap:balance;
margin:0 0 clamp(20px,4vw,28px)!important;
}
/* ---------- scenario cards ------------------------------------------------ */
.zod .zod__cards{display:flex;flex-direction:column;gap:14px;margin:0 0 clamp(26px,5vw,36px)}
.zod .zod__cards--tight{gap:12px;margin-bottom:0}
.zod .zod__card{
background:#fff;
border:1px solid var(--zod-line);
border-left:3px solid var(--zod-ink);
border-radius:14px;
padding:clamp(18px,4.5vw,24px);
}
.zod .zod__card--flag{
border-left-color:var(--zod-lilac);
background:var(--zod-wash);
}
.zod .zod__card--plain{border-left:1px solid var(--zod-line);background:var(--zod-wash)}
.zod .zod__chip{
display:inline-block;
font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
line-height:1;padding:7px 12px;border-radius:var(--zod-pill);
margin:0 0 12px;
}
.zod .zod__chip--calm{background:var(--zod-wash2);color:#333333}
.zod .zod__chip--check{background:var(--zod-lilac);color:#fff}
.zod .zod__chip--handled{background:#000;color:#fff}
.zod .zod__chip--ours{background:#fff;color:#000;box-shadow:inset 0 0 0 1.5px #000}
.zod .zod__cardtitle{
color:var(--zod-ink)!important;
font-family:inherit;
font-size:clamp(17px,4.3vw,19px)!important;
font-weight:600!important;
line-height:1.35!important;
letter-spacing:-.01em;
text-align:left!important;
text-wrap:balance;
margin:0 0 10px!important;
text-transform:none;
}
.zod .zod__cardtitle--sm{font-size:clamp(16px,4vw,17px)!important}
.zod .zod__do{
margin-top:12px!important;margin-bottom:0!important;
padding-top:12px;border-top:1px solid var(--zod-line);
font-size:15.5px!important;
}
.zod .zod__card--flag .zod__do,.zod .zod__card--flag .zod__aside{border-top-color:#DCD2E4}
.zod .zod__aside{
margin-top:14px!important;margin-bottom:0!important;
padding:14px;border-top:0!important;
background:var(--zod-lilacwash);
border-radius:10px;
font-size:15px!important;
}
.zod .zod__reasons{
margin:12px 0 0;padding:0 0 0 1.15em;
list-style:decimal;
}
.zod .zod__reasons li{
margin:0 0 10px;padding-left:.25em;
font-size:15.5px;line-height:1.6;color:var(--zod-body);
}
.zod .zod__reasons li:last-child{margin-bottom:0}
.zod .zod__reasons li::marker{color:var(--zod-mute);font-weight:600}
/* ---------- tracking CTA -------------------------------------------------- */
.zod .zod__ctawrap{text-align:center!important;margin:0 0 clamp(28px,5vw,38px)!important}
.zod .zod__cta{
display:inline-block;
background:#000!important;color:#fff!important;
text-decoration:none!important;
font-size:15px;font-weight:500;letter-spacing:.04em;
padding:15px 34px;border-radius:var(--zod-pill);
min-height:46px;line-height:1.1;
border:1.5px solid #000;
}
.zod .zod__cta:hover{background:#fff!important;color:#000!important}
/* ---------- sections ------------------------------------------------------ */
.zod .zod__section{margin:0 0 clamp(28px,5.5vw,40px)}
.zod .zod__h2{
color:var(--zod-ink)!important;
font-family:inherit;
font-size:clamp(20px,5vw,24px)!important;
font-weight:600!important;
line-height:1.25!important;
letter-spacing:-.015em;
text-align:left!important;
text-wrap:balance;
text-transform:none;
margin:0 0 6px!important;
padding-bottom:10px;
border-bottom:2px solid var(--zod-ink);
}
.zod .zod__h2 + p,.zod .zod__h2 + .zod__tablewrap,.zod .zod__h2 + .zod__cards{margin-top:16px!important}
/* ---------- table --------------------------------------------------------- */
.zod .zod__tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:16px 0 0}
.zod .zod__table{
width:100%;min-width:288px;
border-collapse:collapse;font-size:14.5px;
table-layout:auto;
}
.zod .zod__table th,.zod .zod__table td{
padding:12px 8px;text-align:left;vertical-align:top;
/* border:0 first — some themes set a full border on .rte th/td, which adds
side borders my border-bottom rule alone would not clear. */
border:0;border-bottom:1px solid var(--zod-line);
}
.zod .zod__table th:first-child,.zod .zod__table td:first-child{padding-left:12px}
.zod .zod__table th:last-child,.zod .zod__table td:last-child{padding-right:12px}
.zod .zod__table thead th{
background:#000;color:#fff;
font-size:11.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
border:0;
}
.zod .zod__table thead th:first-child{border-radius:10px 0 0 0}
.zod .zod__table thead th:last-child{border-radius:0 10px 0 0}
.zod .zod__table tbody th{color:var(--zod-ink);font-weight:600;line-height:1.4}
.zod .zod__table tbody td{color:var(--zod-body);white-space:nowrap}
.zod .zod__table tbody tr:last-child th,.zod .zod__table tbody tr:last-child td{border:0}
.zod .zod__table tbody tr:nth-child(odd){background:var(--zod-wash)}
.zod .zod__tnote{display:block;font-weight:400;font-size:12.5px;color:var(--zod-mute);letter-spacing:.01em}
.zod .zod__tcap{
margin:10px 0 0!important;font-size:13px!important;
color:var(--zod-mute)!important;text-align:left!important;
}
/* ---------- plain lists --------------------------------------------------- */
.zod .zod__list{margin:14px 0 0;padding:0;list-style:none}
.zod .zod__list li{
position:relative;padding:0 0 12px 26px;margin:0 0 12px;
border-bottom:1px solid var(--zod-line);
font-size:15.5px;line-height:1.6;color:var(--zod-body);
}
.zod .zod__list li:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}
.zod .zod__list li::before{
content:"";position:absolute;left:6px;top:.62em;
width:7px;height:7px;border-radius:50%;background:var(--zod-ink);
}
/* ---------- steps (returns page) ------------------------------------------ */
.zod .zod__steps{margin:16px 0 0;padding:0;list-style:none;counter-reset:zodstep}
.zod .zod__step{
position:relative;counter-increment:zodstep;
padding:0 0 20px 52px;margin:0;
}
.zod .zod__step::before{
content:counter(zodstep);
position:absolute;left:0;top:0;
width:34px;height:34px;border-radius:50%;
background:#000;color:#fff;
font-size:14px;font-weight:600;
display:flex;align-items:center;justify-content:center;
}
.zod .zod__step::after{
content:"";position:absolute;left:16.5px;top:40px;bottom:6px;
width:1px;background:var(--zod-line);
}
.zod .zod__step:last-child{padding-bottom:0}
.zod .zod__step:last-child::after{display:none}
.zod .zod__steptitle{
color:var(--zod-ink)!important;font-family:inherit;
font-size:16.5px!important;font-weight:600!important;line-height:1.3!important;
text-align:left!important;text-transform:none;
margin:6px 0 8px!important;
}
/* ---------- yes / no split ------------------------------------------------ */
.zod .zod__split{display:flex;flex-direction:column;gap:14px;margin:16px 0 0}
.zod .zod__pane{
border-radius:14px;padding:clamp(18px,4.5vw,22px);
border:1px solid var(--zod-line);
}
.zod .zod__pane--yes{background:var(--zod-wash);border-left:3px solid var(--zod-ink)}
.zod .zod__pane--no{background:#fff;border-left:3px solid var(--zod-lilac)}
.zod .zod__panetitle{
color:var(--zod-ink)!important;font-family:inherit;
font-size:16px!important;font-weight:600!important;line-height:1.3!important;
letter-spacing:.01em;text-align:left!important;text-transform:none;
margin:0 0 12px!important;
}
.zod .zod__panelist{margin:0;padding:0;list-style:none}
.zod .zod__panelist li{
position:relative;padding:0 0 0 24px;margin:0 0 10px;
font-size:15.5px;line-height:1.55;color:var(--zod-body);
}
.zod .zod__panelist li:last-child{margin-bottom:0}
.zod .zod__panelist li::before{
position:absolute;left:0;top:0;font-weight:700;font-size:15px;
}
.zod .zod__pane--yes .zod__panelist li::before{content:"\2713";color:var(--zod-ink)}
.zod .zod__pane--no .zod__panelist li::before{content:"\2715";color:var(--zod-lilac)}
/* ---------- callout ------------------------------------------------------- */
.zod .zod__callout{
border-radius:14px;background:var(--zod-lilacwash);
border-left:3px solid var(--zod-lilac);
padding:clamp(18px,4.5vw,22px);margin:16px 0 0;
}
.zod .zod__calloutlab{
display:block;font-size:11px;font-weight:600;letter-spacing:.1em;
text-transform:uppercase;color:#5E2686;margin:0 0 8px;
}
/* ---------- closing help card --------------------------------------------
Text-align is re-declared on EVERY element here. The theme's .rte p rule
targets the paragraph directly, so inheriting centre from the parent
silently fails. Learned the hard way.
-------------------------------------------------------------------------- */
.zod .zod__help{
background:#000;border-radius:20px;
padding:clamp(28px,6vw,38px) clamp(20px,5vw,32px);
text-align:center!important;
margin:clamp(30px,6vw,44px) 0 0;
display:flex;flex-direction:column;align-items:center;
}
.zod .zod__helplab{
display:block;width:100%;
color:#CCCCCC!important;font-size:11.5px!important;font-weight:600;
letter-spacing:.12em;text-transform:uppercase;
text-align:center!important;margin:0 0 12px;
}
.zod .zod__helptext{
color:#fff!important;
font-size:clamp(16.5px,4.2vw,18px)!important;
line-height:1.55!important;font-weight:400;
text-align:center!important;text-wrap:balance;
max-width:34ch;margin:0 auto 22px!important;
}
.zod .zod__helpbtn{
display:inline-block;
background:#fff!important;color:#000!important;
text-decoration:none!important;
font-size:15px;font-weight:500;letter-spacing:.04em;
padding:15px 36px;border-radius:var(--zod-pill);
min-height:46px;line-height:1.1;
text-align:center!important;
border:1.5px solid #fff;
}
.zod .zod__helpbtn:hover{background:transparent!important;color:#fff!important}
.zod .zod__helplinks{
margin:22px 0 0!important;
text-align:center!important;
font-size:14.5px!important;line-height:1.9!important;
color:#CCCCCC!important;
}
.zod .zod__helplink{
color:#fff!important;text-decoration:underline!important;
text-underline-offset:3px;font-weight:400;
}
.zod .zod__helplink:hover{color:#CCCCCC!important}
.zod .zod__sep{color:#8A8A8A;padding:0 10px;font-size:13px}
.zod .zod__sign{
margin:20px 0 0!important;
color:#B3B3B3!important;font-size:13px!important;line-height:1.5!important;
text-align:center!important;letter-spacing:.02em;
}
.zod .zod__help a:focus-visible{outline:2px solid #fff;outline-offset:3px}
/* ---------- 560px and up --------------------------------------------------
Note: .zod__bandgrid goes to 3 columns here. Nothing in this file uses
flex:1 1 100% inside a container whose direction flips — that combination
collapsed a card to zero width earlier in this project.
-------------------------------------------------------------------------- */
/* Narrow phones: the reference table has three columns and a 690px theme
column drops to ~312px of usable width at 360px. Tighten it rather than
hand the user a sideways scroll inside the page. */
@media screen and (max-width:420px){
.zod .zod__table{font-size:13.5px}
.zod .zod__table th,.zod .zod__table td{padding:11px 5px;overflow-wrap:anywhere}
.zod .zod__table th:first-child,.zod .zod__table td:first-child{padding-left:8px}
.zod .zod__table th:last-child,.zod .zod__table td:last-child{padding-right:8px}
.zod .zod__table thead th{font-size:10.5px;letter-spacing:.05em}
.zod .zod__tnote{font-size:11.5px}
}
@media screen and (min-width:560px){
.zod .zod__bandgrid{grid-template-columns:repeat(3,1fr);gap:0}
.zod .zod__stat{
flex-direction:column;align-items:flex-start;gap:8px;
padding:0 18px 0 0;margin-right:18px;
border-bottom:0;border-right:1px solid rgba(255,255,255,.18);
}
.zod .zod__stat:last-child{border-right:0;margin-right:0;padding-right:0}
.zod .zod__split{flex-direction:row}
.zod .zod__split > .zod__pane{flex:1 1 0%;min-width:0}
.zod .zod__cards--tight{flex-direction:row}
.zod .zod__cards--tight > .zod__card{flex:1 1 0%;min-width:0}
.zod .zod__table tbody td{white-space:normal}
}
@media screen and (min-width:750px){
.zod{font-size:16.5px}
.zod .zod__card{padding:26px 28px}
.zod .zod__table{font-size:15px}
.zod .zod__table th,.zod .zod__table td{padding:13px 12px}
}
@media (prefers-reduced-motion:no-preference){
.zod a{transition:color .15s ease,background-color .15s ease}
}
0
items you
send back
3
photos we
ask you for
30
days before a
free replacement
Zodia® replaces — we don't refund. Read on for exactly when a replacement is created, and when it isn't.
Find the card that matches your situation. Each one says what happens next and what, if anything, we need from you.
All sales final
You've received it, and it just isn't for you
Our product research team puts real time into choosing what we carry — pieces that reflect what the market is actually asking for, what's trending, and what's proven popular. That work happens before anything reaches the site.
We'd ask for your understanding here: running a small business carries significant costs, so we trust our customers to research a purchase thoroughly and be sure a piece suits them before ordering.
What happens: we acknowledge the disappointment, but the operational expense has already been spent by this point. All sales are final and we're not able to offer refunds.
Replaced free
A completely different product turned up
An incorrect item means exactly that — a totally different item from the one shown on our website. Order the BBL Wide Leg Leggings and open a sports bra; order the Sculpting Tank Top and find leggings inside. That's ours, and we fix it.
What happens: we create a replacement order on the same shipping speed you paid for originally. Send us three photos from different angles of what arrived — it lets us push the replacement through faster. Don't post the wrong item back to us. Once a replacement is created, it's yours to keep or pass on.
Not replaced
It's the right piece, but not what you pictured
This is the line that catches people out, so here it is plainly. Two examples that do not qualify as an incorrect item:
- You ordered the Sculpting Tank Top and feel it doesn't sculpt the way you expected.
- You ordered a size large and feel what arrived is closer to a small.
Why: we work hard to make the product information on our site exhaustive — everything a customer needs to decide whether a piece is right for them, and to hold off if it isn't what they're looking for or doesn't meet their needs. Where the correct item was sent, no replacement is created.
Free replacement
30 days have passed and nothing has arrived
If it's been 30 days from purchase and your order still hasn't reached you, you're entitled to a free replacement — no argument, no photos needed.
What happens: we create a replacement order on the same shipping speed used on your original item. The one exception is below.
Your post office
Tracking says delivered, but you don't have it
Shipments showing as delivered on the carrier's own site — USPS, Canada Post, whichever is carrying it — sit outside the 30-day replacement. Once a carrier records a delivery, the parcel is in their hands, not ours.
What to do: contact your local post office with the tracking number. Parcels marked delivered are very often held at the branch, left with a neighbour, or tucked somewhere at the address. If the post office can't account for it, tell us what they said.
Check your tracking first
Incorrect item, at a glance
Counts — replacement created
- You ordered leggings and received a completely different garment.
- You ordered the Sculpting Tank Top and received a different product altogether.
- What arrived is plainly not the item pictured on its product page.
Doesn't count — no replacement
- The correct piece arrived but the fit or feel wasn't what you expected.
- You believe the size runs different from the one you ordered.
- You've simply changed your mind about the purchase.
Claiming a replacement, step by step
-
Photograph what arrived
Three shots, three different angles. Daylight if you can get it. This is the single thing that speeds a replacement up most, so it's worth the two minutes.
-
Message us
Use the contact page and include your order number, the address you ordered with, and the three photos.
-
We create the replacement
On the same shipping speed you originally paid for. You'll get a fresh confirmation email, and a tracking number once it leaves us.
-
Keep the original
There's nothing to post back. Once a replacement order exists, the item you received is yours.
Worth knowing
The 30-day replacement doesn't need photos — there's nothing to photograph. Just your order number, and confirmation that tracking isn't showing the parcel as delivered.
Before you count to 30
Most orders that feel late aren't. Our standard windows are 7–20 business days in the US and 10–25 business days internationally, counted from the day the parcel ships rather than the day you ordered.
- Business days skip Saturdays and Sundays.
- Quiet tracking inside those windows is normal, not a fault — on some routes the first scan doesn't happen until delivery.
- The 30 days for a free replacement, though, are counted from your purchase date, not from the ship date.
The full breakdown — every window, both regions, free and expedited — is on the shipping info page.