/* DealsSpy contests + rewards (V4 Swipe Stories): /contest, /contest/{id}, /rewards,
   /rewards/{id}. Loads after ds.css and uses its tokens and shared classes (.ss-shero,
   .ss-seg, .ss-chip, .c-masonry, .c-tile/.ss-tile, .c-pricepill, .c-heart, .c-stamp,
   .c-pring, .c-specs, .c-buy, .ss-get, .odo*). Everything here is scoped to .ds-cx
   (pages) or .ds-cx-dlg (the filter dialog). Behaviour: assets/js/ds-contest.js. */

.ds-cx{position:relative;--cx-urgent:#B4233C;--cx-card:var(--surface);--cx-cell:var(--surface-2)}
:root[data-theme="dark"] .ds-cx{--cx-urgent:#FF8FA1}
.ds-cx [hidden],.ds-cx-dlg[hidden]{display:none!important}

/* Breadcrumb: the current page can be a long contest name */
.ds-cx .ss-crumbs [aria-current]{max-width:62vw;overflow:hidden;text-overflow:ellipsis}

/* ---------- Odometer (ds.css .odo*): each cell takes its digit's own width ---------- */
.ds-cx .odo-d{position:relative}
.ds-cx-odow{display:block;height:1em;line-height:1em;visibility:hidden}
.ds-cx .odo-d .odo-col{position:absolute;top:0;left:50%;width:1em;margin-left:-.5em}
.ds-cx .odo-col span{text-align:center}

/* ---------- Listing hero ---------- */
.ds-cx-hero{display:grid;gap:18px}
.ds-cx-hero-txt{position:relative;min-width:0}
.ds-cx-bub{color:#11152E}
.ds-cx-bub .ic{width:34px;height:34px}
.ds-cx-hero h1{max-width:none}
.ds-cx-hero .ss-intro{max-width:600px}
.ds-cx-stats{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}
.ds-cx-stat{display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:8px;min-width:0;padding:14px 14px 12px;border-radius:22px;background:rgba(255,255,255,.74);box-shadow:0 6px 16px rgba(17,21,46,.06)}
.ds-cx-stat dt{font:700 11px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:#4A5070;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-cx-stat dd{margin:0;font:800 30px/1 var(--font);letter-spacing:-.04em;color:#11152E}

/* ---------- Tabs + filter chips ---------- */
.ds-cx-bar{margin-top:18px}
.ds-cx .ds-cx-bar .ss-seg{margin:0 0 12px}
.ds-cx-n{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:3px;padding:0 6px;border-radius:999px;background:var(--surface-2);color:var(--text);font:700 11px/1 var(--font);vertical-align:1px;font-variant-numeric:tabular-nums;transition:background-color .3s,color .3s}
.ds-cx .ss-seg button[aria-selected="true"] .ds-cx-n{background:rgba(255,255,255,.22);color:inherit}
:root[data-theme="dark"] .ds-cx .ss-seg button[aria-selected="true"] .ds-cx-n{background:rgba(17,21,46,.16)}
.ds-cx-tools{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.ds-cx-fbtn.is-on{background:var(--navy);color:var(--on-navy)}
.ds-cx-fcount{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--cta);color:#FFFFFF;font:700 11px/1 var(--font);animation:c-pop .45s var(--spring)}
.ds-cx-active{background:var(--navy);color:var(--on-navy)}
.ds-cx-active:hover{color:var(--on-navy)}
.ds-cx-active .ic{transition:transform .25s var(--spring)}
.ds-cx-active:hover .ic{transform:rotate(90deg)}
/* Four tabs + counts on a 320-419px phone: compact badges; "Unclaimed" drops its count
   (the same number is the hero's "Available" figure) so the label is never cut */
@media (max-width:419.98px){
  .ds-cx .ss-seg button{padding:0 2px;font-size:12px;letter-spacing:-.02em}
  .ds-cx .ds-cx-n{min-width:18px;height:18px;margin-left:2px;padding:0 5px;font-size:10px;letter-spacing:0}
  .ds-cx[data-cx-kind="rewards"] [data-cx-count="unclaimed"]{display:none}
}
@media (max-width:359.98px){
  .ds-cx .ss-seg button{font-size:11px;letter-spacing:-.03em}
}

/* ---------- Tiles (extend .c-tile.ss-tile) ---------- */
.ds-cx-tile{position:relative}
/* Banners of any shape float as a rounded card on the tint, inside the fixed 1:1 well */
.ds-cx-imglink{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:14px 14px 50px}
.ds-cx-imglink img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;border-radius:14px;box-shadow:0 10px 22px rgba(17,21,46,.16);transition:transform .45s var(--spring),filter .3s,opacity .3s}
.ds-cx-tile:hover .ds-cx-imglink img{transform:translateY(-4px) rotate(-1.5deg) scale(1.03)}

/* Status chip: Live / Ending soon / New / Closed / Entered (Hot / Expired / Claimed on rewards) */
.ds-cx-chip{position:absolute;left:8px;top:8px;z-index:2;display:inline-flex;align-items:center;gap:6px;height:28px;max-width:calc(100% - 16px);padding:0 10px;border-radius:999px;background:#11152E;color:#FFFFFF;font:700 12px/1 var(--font);white-space:nowrap}
.ds-cx-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.ds-cx[data-cx-kind="rewards"] .ds-cx-tile .ds-cx-chip{max-width:calc(100% - 66px)}
.ds-cx-dot{flex:none;width:7px;height:7px;border-radius:50%;background:#4ADE80}
.ds-cx-chip.is-live .ds-cx-dot,.ds-cx-chip.is-open .ds-cx-dot,.ds-cx-chip.is-active .ds-cx-dot{animation:cx-ping 1.6s ease-out infinite}
@keyframes cx-ping{0%{box-shadow:0 0 0 0 rgba(74,222,128,.55)}100%{box-shadow:0 0 0 7px rgba(74,222,128,0)}}
.ds-cx-chip .ic{display:none;flex:none}
.ds-cx-chip.is-ending .cx-fl,.ds-cx-chip.is-hot .cx-fl{display:block;color:#FFB36B;transform-origin:50% 90%;animation:ss-flick 1.8s ease-in-out infinite}
.ds-cx-chip.is-ending .ds-cx-dot,.ds-cx-chip.is-hot .ds-cx-dot,.ds-cx-chip.is-played .ds-cx-dot{display:none}
.ds-cx-chip.is-ending{background:#B4233C}
.ds-cx-chip.is-new .ds-cx-dot{background:#8FB8FF}
.ds-cx-chip.is-closed,.ds-cx-chip.is-expired{background:#5A6080}
.ds-cx-chip.is-closed .ds-cx-dot,.ds-cx-chip.is-expired .ds-cx-dot{background:#C9CDE0;animation:none}
.ds-cx-chip.is-played{background:#1F7A45}
.ds-cx-chip.is-played .cx-ok{display:block}

/* Prize / value pill (from the name) */
.ds-cx-prize .ic{flex:none;color:#B4233C}
.ds-cx-tile .ds-cx-prize{gap:5px}

/* "Entered" / "Claimed" stamp (swipe-deck stamp) */
.c-stamp.ds-cx-stamp{display:none;left:50%;right:auto;top:44%;z-index:2;padding:7px 12px;font-size:17px;white-space:nowrap;transform:translate(-50%,-50%) rotate(-12deg)}
.ds-cx-tile.is-played .c-stamp.ds-cx-stamp,.ds-cxd.is-played .c-stamp.ds-cx-stamp,.ds-cxd.is-closed .c-stamp.ds-cx-stamp{display:block}
.c-stamp.ds-cx-stamp.is-pop{animation:cx-stamp .55s var(--spring) both}
@keyframes cx-stamp{from{transform:translate(-50%,-50%) rotate(-32deg) scale(1.9);opacity:0}}
.ds-cxd.is-closed .c-stamp.ds-cx-stamp{color:#5A6080;border-color:#5A6080}
.ds-cx-tile.is-played .ds-cx-imglink img{opacity:.55;filter:saturate(.6)}
.ds-cx-tile.is-closed .ds-cx-imglink img{opacity:.7;filter:grayscale(.8)}

/* Rewards heart (own "savedrewards" list, not the deals drawer) */
.ds-cx-tile .c-heart{cursor:pointer}

/* Meta, countdown row, progress */
.ds-cx-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:8px;background:var(--surface);color:var(--text);font:600 11px/1 var(--font);box-shadow:0 1px 4px rgba(17,21,46,.06)}
.ds-cx-time{display:flex;flex-direction:column;gap:7px;padding:9px 4px 0;font:600 12px/1.2 var(--font);color:var(--muted)}
.ds-cx-time-t{display:inline-flex;align-items:center;gap:5px;min-width:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.ds-cx-time-t>span{overflow:hidden;text-overflow:ellipsis}
.ds-cx-time.is-urgent{color:var(--cx-urgent)}
.ds-cx-tile.is-played .ds-cx-time{color:var(--good)}
:root:not([data-theme="dark"]) .ds-cx-tile.is-played .ds-cx-time{color:#1F7A45}
.ds-cx-prog{display:block;height:5px;border-radius:999px;background:var(--line-strong);overflow:hidden}
.ds-cx-prog i{display:block;height:100%;border-radius:inherit;background:var(--good);transform:scaleX(var(--p,1));transform-origin:left center;transition:transform .6s var(--ease)}
.ds-cx-time.is-urgent .ds-cx-prog i{background:var(--cta)}
.ds-cx-tile.is-played .ds-cx-prog,.ds-cx-tile.is-closed .ds-cx-prog{display:none}

/* CTA row: the link to the contest page (+ "reset claim" on claimed rewards) */
.ds-cx-acts{display:flex;align-items:center;gap:8px;margin:auto 4px 0}
.ds-cx-acts .ss-get{flex:1;width:auto;min-width:0;margin:0}
.ds-cx-acts .ss-get>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-cx-undo{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--surface);color:var(--text);box-shadow:0 4px 12px rgba(17,21,46,.08);cursor:pointer;transition:transform .25s var(--spring)}
.ds-cx-undo:active{transform:scale(.88)}
.ds-cx-undo .ic{transition:transform .35s var(--spring)}
.ds-cx-undo:hover .ic{transform:rotate(-50deg)}

/* Empty states */
.ds-cx-empty{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:8px;padding:36px 20px 32px;border-radius:30px;background:var(--surface);text-align:center;box-shadow:0 8px 24px rgba(17,21,46,.06)}
.ds-cx-empty-ic{display:grid;place-items:center;width:72px;height:72px;margin-bottom:6px;border-radius:50%;background:var(--lilac);color:#11152E}
.ds-cx-empty .ds-cx-empty-h{font:700 17px/1.3 var(--font);color:var(--text)}
.ds-cx-empty p:not(.ds-cx-empty-h){max-width:340px;font:500 13px/1.5 var(--font);color:var(--muted)}
.ds-cx-empty .ss-chip{margin-top:8px;background:var(--navy);color:var(--on-navy)}
.ds-cxd-missing{padding:48px 0;text-align:center}

/* ---------- Filter dialog: bottom sheet on phones, centred card on desktop ---------- */
.ds-cx-dlg{position:fixed;inset:0;z-index:120;font:400 14px/1.5 var(--font);color:var(--text);-webkit-font-smoothing:antialiased}
.ds-cx-scrim{position:absolute;inset:0;background:rgba(10,13,28,.5);opacity:0;transition:opacity .3s ease}
.ds-cx-dlg.is-open .ds-cx-scrim{opacity:1}
.ds-cx-sheet{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;max-width:560px;max-height:86vh;margin:0 auto;padding:8px 0 calc(14px + env(safe-area-inset-bottom,0px));border-radius:30px 30px 0 0;background:var(--surface);box-shadow:0 -18px 40px rgba(10,13,28,.24);transform:translateY(100%);transition:transform .42s var(--ease);outline:0}
.ds-cx-dlg.is-open .ds-cx-sheet{transform:none}
.ds-cx-sheet::before{content:"";flex:none;width:44px;height:5px;margin:4px auto 8px;border-radius:3px;background:var(--line-strong)}
.ds-cx-dhead{display:flex;align-items:center;gap:10px;padding:4px 14px 8px 20px}
.ds-cx-dhead h2{margin:0;font:700 20px/1.2 var(--font);letter-spacing:-.03em;color:var(--text)}
.ds-cx-x{margin-left:auto;background:var(--surface-2);box-shadow:none;cursor:pointer}
.ds-cx-dbody{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 20px 16px}
.ds-cx-fs{min-width:0;margin:0;padding:0;border:0}
.ds-cx-fs+.ds-cx-fs{margin-top:20px}
.ds-cx-fs legend{float:left;width:100%;margin:0 0 10px;padding:0;font:700 12px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ds-cx-opts{clear:both;display:flex;flex-wrap:wrap;gap:8px}
.ds-cx-opt{position:relative;display:inline-flex;margin:0;cursor:pointer}
.ds-cx-opt .ss-chip{background:var(--surface-2);box-shadow:none;transition:background-color .25s,color .25s,transform .25s var(--spring)}
.ds-cx-opt:active .ss-chip{transform:scale(.93)}
.ds-cx-opt input:checked+.ss-chip{background:var(--navy);color:var(--on-navy)}
.ds-cx-opt input:focus-visible+.ss-chip{outline:3px solid var(--focus);outline-offset:2px}
.ds-cx-dfoot{display:flex;gap:10px;padding:14px 20px 0;border-top:1px solid var(--line)}
.ds-cx-dfoot .ss-get{flex:1;width:auto;height:50px;margin:0;font-size:14px}
.ds-cx-dfoot .ss-get.is-ghost{flex:0 0 auto;padding:0 22px}

/* ---------- Detail page (/contest/{id}, /rewards/{id}) ---------- */
.ds-cxd-grid{margin-top:12px}
.ds-cxd-media{position:relative;height:min(330px,46vh);min-height:250px;margin:0;border-radius:30px;background:var(--tint);overflow:hidden;isolation:isolate}
.ds-cxd-imgbox{position:absolute;inset:62px 22px 24px;display:flex;align-items:center;justify-content:center}
.ds-cxd-imgbox img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;border-radius:18px;box-shadow:0 18px 36px rgba(17,21,46,.2);animation:cx-hero-in .9s var(--spring) both}
@keyframes cx-hero-in{from{transform:translateY(30px) scale(.88) rotate(-4deg);opacity:0}}
.ds-cxd-chips{position:absolute;top:14px;left:14px;right:14px;z-index:3;display:flex;align-items:center;gap:8px}
.ds-cxd-chips .ds-cx-chip{position:static;flex:none;height:32px;font-size:13px}
.ds-cxd-prize{display:inline-flex;align-items:center;gap:6px;min-width:0;height:32px;padding:0 12px;border-radius:999px;background:rgba(255,255,255,.9);color:#11152E;font:800 14px/1 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-cxd-chips .c-glass{flex:none;margin-left:auto;color:#11152E;cursor:pointer}
.ds-cxd .c-stamp.ds-cx-stamp{top:54%;padding:9px 16px;font-size:24px}

.ds-cxd-sheet{margin-top:16px;min-width:0}
.ds-cxd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.ds-cxd-tag{display:inline-flex;align-items:center;height:28px;padding:0 11px;border-radius:999px;background:var(--cx-card);color:var(--text);font:600 12px/1 var(--font);box-shadow:0 2px 8px rgba(17,21,46,.06)}
.ds-cxd-id{margin-left:auto;font:600 12px/1 var(--font);color:var(--muted)}
.ds-cxd-title{margin-top:12px;font:700 22px/1.22 var(--font);letter-spacing:-.03em;color:var(--text);overflow-wrap:anywhere}
.ds-cxd-lead{margin-top:8px;font:500 14px/1.55 var(--font);color:var(--muted)}

/* Countdown: ring of time left + rolling DD HH MM SS */
.ds-cxd-cd{margin-top:16px;padding:16px;border-radius:26px;background:var(--cx-card);box-shadow:0 8px 24px rgba(17,21,46,.06)}
.ds-cxd-cdtop{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ds-cxd-cdtxt{min-width:0}
.ds-cxd-cdk{font:800 20px/1.1 var(--font);letter-spacing:-.03em;color:var(--text)}
.ds-cxd-cd.is-urgent .ds-cxd-cdk{color:var(--cx-urgent)}
.ds-cxd-cdd{display:flex;align-items:center;gap:6px;margin-top:7px;font:500 13px/1.3 var(--font);color:var(--muted)}
.ds-cxd-cdd time{font-weight:700;color:var(--text)}
.ds-cxd-ring{width:72px;height:72px;background:conic-gradient(var(--navy) calc(var(--p) * 1%),var(--line-strong) 0)}
.ds-cxd-ring::before{inset:8px;background:var(--cx-card)}
.ds-cxd-ring span{font-size:16px}
.ds-cxd-ring small{font-size:10px}
.ds-cxd-cd.is-urgent .ds-cxd-ring{background:conic-gradient(var(--cta) calc(var(--p) * 1%),var(--line-strong) 0)}
.ds-cxd-clock{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px}
.ds-cxd-cell{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:0;padding:13px 4px 11px;border-radius:18px;background:var(--cx-cell);overflow:hidden}
.ds-cxd-cell b{display:block;font:800 28px/1 var(--font);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.ds-cxd-cell small{font:700 11px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ds-cxd-cell b.is-tick{animation:cx-tick .42s var(--spring)}
@keyframes cx-tick{from{transform:translateY(-60%);opacity:0}}
.ds-cxd-cd.is-urgent .ds-cxd-cell b{color:var(--cx-urgent)}
.ds-cxd-cdmsg{display:flex;align-items:center;gap:10px;margin-top:12px;padding:12px 14px;border-radius:18px;background:var(--mint);color:#11152E;font:600 14px/1.4 var(--font)}
.ds-cxd-cdmsg .ic{flex:none;color:#1F7A45}
.ds-cxd-cdmsg .cx-cl{display:none}
.ds-cxd.is-played .ds-cxd-clock,.ds-cxd.is-played .ds-cxd-ring,.ds-cxd.is-closed .ds-cxd-clock,.ds-cxd.is-closed .ds-cxd-ring{display:none}
.ds-cxd.is-closed .ds-cxd-cdmsg{background:var(--cx-cell);color:var(--text)}
.ds-cxd.is-closed .ds-cxd-cdmsg .cx-ok{display:none}
.ds-cxd.is-closed .ds-cxd-cdmsg .cx-cl{display:block;color:var(--muted)}

/* CTA (redirect-button contract) + save */
.ds-cxd-go{width:100%;height:56px;margin:16px 0 0;font-size:16px}
.ds-cxd-go>span,.ds-cxd-barbtn>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-cx .ss-get[disabled]{background:var(--surface-2);color:var(--muted);cursor:not-allowed;filter:none;transform:none}
.ds-cxd.is-played .ss-get[data-cx-go]:not([disabled]){background:#1F7A45}
.ds-cxd-save{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:50px;margin-top:10px;border-radius:999px;background:var(--cx-card);color:var(--text);font:700 14px/1 var(--font);box-shadow:0 4px 12px rgba(17,21,46,.06);cursor:pointer;transition:transform .25s var(--spring)}
.ds-cxd-save:active{transform:scale(.96)}
.ds-cxd-save .ds-on-t,.ds-cxd-save[aria-pressed="true"] .ds-off-t{display:none}
.ds-cxd-save[aria-pressed="true"] .ds-on-t{display:inline}
.ds-cxd-save[aria-pressed="true"]{color:var(--cta-text)}
.ds-cxd-save[aria-pressed="true"] svg{fill:currentColor}
.ds-cxd-save.pop svg{animation:c-pop .5s var(--spring)}

/* Specs */
.ds-cxd-specs{margin-top:16px}
.ds-cxd-specs .c-spec{min-width:0;background:var(--cx-card)}
.ds-cxd-specs .c-spec dd{overflow-wrap:anywhere}
.ds-cxd-specs .c-spec.is-urgent dd{color:var(--cx-urgent)}
@media (max-width:575.98px){
  .ds-cxd-specs .c-spec:last-child:nth-child(odd){grid-column:1 / -1}
}

/* "How to play" / "How to claim": admin HTML */
.ds-cxd-sheet .c-h2{margin-top:28px;color:var(--text)}
.ds-cx-rich{margin-top:12px;padding:16px 18px;border-radius:22px;background:var(--cx-card);font:400 15px/1.65 var(--font);color:var(--text);overflow-wrap:anywhere}
.ds-cx-rich>:first-child{margin-top:0}
.ds-cx-rich>:last-child{margin-bottom:0}
.ds-cx-rich p,.ds-cx-rich ul,.ds-cx-rich ol,.ds-cx-rich table,.ds-cx-rich blockquote,.ds-cx-rich pre,.ds-cx-rich figure{margin:0 0 .8em}
.ds-cx-rich p:empty{display:none}
.ds-cx-rich ul{list-style:disc;padding-left:1.3em}
.ds-cx-rich ol{list-style:decimal;padding-left:1.4em}
.ds-cx-rich li{margin:.3em 0}
.ds-cx-rich li::marker{color:var(--muted);font-weight:700}
.ds-cx-rich h2,.ds-cx-rich h3,.ds-cx-rich h4,.ds-cx-rich h5,.ds-cx-rich h6{margin:1.1em 0 .45em;font:700 16px/1.3 var(--font);letter-spacing:-.01em}
.ds-cx-rich a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.ds-cx-rich img{display:block;max-width:100%;height:auto;margin:.8em auto;border-radius:16px}
.ds-cx-rich table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-size:14px}
.ds-cx-rich th,.ds-cx-rich td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ds-cx-rich blockquote{padding:10px 14px;border-left:3px solid var(--navy);border-radius:10px;background:var(--cx-cell)}
.ds-cx-rich hr{margin:1em 0;border:0;border-top:1px dashed var(--line-strong)}
.ds-cx-rich iframe,.ds-cx-rich video{max-width:100%}
.ds-cx-rich [style*="font-family"]{font-family:inherit!important}
/* Store links (TextHelper renders them as .btn.redirect-button spans) */
.ds-cx-rich .redirect-button{display:inline-flex;align-items:center;max-width:100%;min-height:36px;margin:2px 0;padding:6px 14px;border:0;border-radius:999px;background:var(--sky);color:#155E8A;font:700 14px/1.3 var(--font);text-align:left;white-space:normal;overflow-wrap:anywhere;vertical-align:middle;box-shadow:none;cursor:pointer;transition:transform .2s var(--spring),filter .2s}
.ds-cx-rich .redirect-button:hover{filter:brightness(.96);color:#155E8A}
.ds-cx-rich .redirect-button:active{transform:scale(.96)}
/* Dark mode: the editor writes literal colours inline; let the theme win */
:root[data-theme="dark"] .ds-cx-rich [style*="color"],:root[data-theme="dark"] .ds-cx-rich font[color]{color:inherit!important}
:root[data-theme="dark"] .ds-cx-rich [style*="background"],:root[data-theme="dark"] .ds-cx-rich [bgcolor]{background:transparent!important}
/* The editor's palette greens/reds/blues (answers are written in #2dc26b) fail AA on
   white: keep the highlight, at a readable shade, in both themes */
.ds-cx-rich [style*="#2dc26b" i],.ds-cx-rich [style*="rgb(45, 194, 107)"]{color:#1F7A45!important}
.ds-cx-rich [style*="#e03e2d" i],.ds-cx-rich [style*="rgb(224, 62, 45)"]{color:#B4233C!important}
.ds-cx-rich [style*="#3598db" i],.ds-cx-rich [style*="rgb(53, 152, 219)"]{color:#1B5F96!important}
:root[data-theme="dark"] .ds-cx-rich [style*="#2dc26b" i],:root[data-theme="dark"] .ds-cx-rich [style*="rgb(45, 194, 107)"]{color:#4ADE80!important}
:root[data-theme="dark"] .ds-cx-rich [style*="#e03e2d" i],:root[data-theme="dark"] .ds-cx-rich [style*="rgb(224, 62, 45)"]{color:#FF8FA1!important}
:root[data-theme="dark"] .ds-cx-rich [style*="#3598db" i],:root[data-theme="dark"] .ds-cx-rich [style*="rgb(53, 152, 219)"]{color:#8FB8FF!important}
.ds-cxd-fine{margin-top:22px;font:500 12px/1.6 var(--font);color:var(--muted)}
.ds-cxd-fine a{color:var(--text);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.ds-cxd-fine a:hover{color:var(--text)}

/* Glass action bar (phones + tablets) - the dock steps aside, as on deal pages */
.ds-cxd-buy .c-round{flex:none;cursor:pointer}
.ds-cxd-buy .c-round[aria-pressed="true"]{color:#D0344F}
.ds-cxd-buy .c-round[aria-pressed="true"] svg{fill:#D0344F}
.ds-cxd-buy .c-round.pop svg{animation:c-pop .5s var(--spring)}
.ds-cxd-buy .ss-get{flex:1;width:auto;min-width:0;height:52px;margin:0;padding:0 18px;font-size:15px}
@media (max-width:991.98px){
  body:has(.ds-cxd) .c-dock{display:none!important}
}

/* ---------- Tablet ---------- */
@media (min-width:576px){
  .ds-cx-stat dd{font-size:34px}
  .ds-cxd-media{height:min(380px,48vh)}
  .ds-cxd-title{font-size:24px}
}
@media (min-width:576px) and (max-width:991.98px){
  .ds-cxd-grid{max-width:720px;margin-left:auto;margin-right:auto}
}

/* Tabs and the filter chips share one row once there is room */
@media (min-width:768px){
  .ds-cx-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin:22px 0 22px}
  .ds-cx .ds-cx-bar .ss-seg{flex:1 1 440px;max-width:580px;margin:0}
  .ds-cx-tools{margin:0}
}

/* ---------- Desktop (>=992) ---------- */
@media (min-width:992px){
  .ds-cx .ss-crumbs [aria-current]{max-width:460px}
  .ds-cx-hero{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px}
  .ds-cx-stats{grid-template-columns:repeat(3,132px);gap:10px}
  .ds-cx-stat{padding:18px 18px 16px;border-radius:26px}
  .ds-cx-stat dd{font-size:40px}
  .ds-cx-bar{margin:26px 0 24px}

  .ds-cxd-grid{display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:32px;align-items:start;margin-top:18px}
  .ds-cxd-media{position:sticky;top:100px;height:clamp(420px,calc(100vh - 140px),580px);border-radius:40px}
  .ds-cxd-imgbox{inset:84px 48px 48px}
  .ds-cxd-chips{top:22px;left:22px;right:22px}
  .ds-cxd .c-stamp.ds-cx-stamp{font-size:30px}
  .ds-cxd-sheet{--cx-card:var(--surface-2);--cx-cell:var(--surface);margin:0;padding:30px;border-radius:36px;background:var(--surface);box-shadow:var(--shadow)}
  .ds-cxd-title{font-size:26px;line-height:1.2}
  .ds-cxd-cd,.ds-cxd-save,.ds-cxd-tag{box-shadow:none}
  .ds-cxd-ring{width:84px;height:84px}
  .ds-cxd-ring::before{inset:9px}
  .ds-cxd-ring span{font-size:18px}
  .ds-cxd-cell b{font-size:32px}
  .ds-cxd-go{height:60px;font-size:17px}
  .ds-cxd-buy{display:none}

  .ds-cx-sheet{top:50%;bottom:auto;left:50%;right:auto;width:500px;max-width:calc(100vw - 48px);max-height:min(640px,calc(100vh - 80px));margin:0;padding:22px 0 20px;border-radius:32px;box-shadow:0 30px 70px rgba(10,13,28,.3);opacity:0;transform:translate(-50%,-46%) scale(.96);transition:transform .45s var(--spring),opacity .25s ease}
  .ds-cx-dlg.is-open .ds-cx-sheet{opacity:1;transform:translate(-50%,-50%)}
  .ds-cx-sheet::before{display:none}
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .ds-cx .ds-cx-dot,.ds-cx .cx-fl,.ds-cxd-imgbox img,.c-stamp.ds-cx-stamp.is-pop,.ds-cxd-cell b.is-tick{animation:none!important}
  .ds-cx-tile:hover .ds-cx-imglink img{transform:none}
}
