/* Shared base for all Swiftools Suite variants. Variants own their visual design. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }
img, svg, video { display: block; max-width: 100%; height: auto; }
button, input, select { font: inherit; color: inherit; }
a { color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
h1, h2, h3 { text-wrap: balance; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
template { display: none !important; }

.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 1rem; top: -100px; z-index: 1000; padding: .6rem 1rem; background: #000; color: #fff; border-radius: 8px; }
.skip-link:focus { top: 1rem; }
:focus-visible { outline: 3px solid #4f8cff; outline-offset: 3px; }

/* Scroll reveal */
.sw-ready [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .7s cubic-bezier(.2,.7,.2,1) var(--d, 0ms), transform .7s cubic-bezier(.2,.7,.2,1) var(--d, 0ms); }
.sw-ready [data-reveal].is-visible { opacity: 1; transform: none; }

/* Sticky CTA bar mechanics (variants style the look) */
[data-sw-sticky] { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; transform: translateY(110%); transition: transform .35s cubic-bezier(.2,.7,.2,1); }
[data-sw-sticky].is-shown { transform: none; }

/* Marquee helper */
.sw-marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.sw-marquee__track { display: flex; width: max-content; animation: sw-marquee var(--marquee-speed, 60s) linear infinite; }
.sw-marquee:hover .sw-marquee__track { animation-play-state: paused; }
@keyframes sw-marquee { to { transform: translateX(-50%); } }

/* Exit-intent dialog mechanics */
dialog[data-sw-exit] { border: 0; padding: 0; max-width: min(520px, calc(100vw - 2rem)); }
dialog[data-sw-exit]::backdrop { background: rgba(5, 8, 20, .65); backdrop-filter: blur(4px); }

/* "Designed for Adobe Express" badge slot. Adobe's rules: never smaller than 36px tall, clear space around it equal
   to the height of the Adobe Express logo in the badge, shown alone (no other text or graphics touching it), secondary
   to our own brand, and never inside body text. --sw-badge-h controls the height. */
.sw-badge { --sw-badge-h: 40px; display: block; margin-block: var(--sw-badge-h); line-height: 0; }
.sw-badge[hidden] { display: none !important; }
.sw-badge img { height: max(36px, var(--sw-badge-h)); width: auto; max-width: none; }
.sw-badge--center { display: flex; justify-content: center; }
.sw-badge__placeholder { display: inline-flex; align-items: center; height: max(36px, var(--sw-badge-h)); padding: 0 14px; border: 1.5px dashed currentColor; border-radius: 8px; font: 600 12px/1.2 system-ui, sans-serif; opacity: .6; }
@media (max-width: 640px) { .sw-badge { --sw-badge-h: 36px; } }

/* Countdown expiry: hide urgency elements honestly once the deadline passes */
.sw-offer-expired [data-hide-when-expired] { display: none !important; }
[data-sw-if][hidden], [data-sw-unless][hidden] { display: none !important; }
.sw-draft-note { position: fixed; left: 12px; bottom: 12px; z-index: 200; max-width: 340px; padding: 10px 14px; border-radius: 10px; background: #fff7d6; color: #5a4300; border: 1px solid #f0d77a; font: 500 12.5px/1.4 system-ui, sans-serif; box-shadow: 0 8px 24px rgba(0,0,0,.12); pointer-events: none; }

/* Device-specific content. Phones (<= 640px) get a shorter, focused page; desktop is unchanged.
   .d-only = desktop/tablet only, .m-only = phone only. Pair them for short mobile copy:
   <span class="d-only">long version</span><span class="m-only">short version</span> */
@media (min-width: 641px) { .m-only { display: none !important; } }
@media (max-width: 640px) { .d-only { display: none !important; } }

/* Horizontal swipe rail for phones (scroll-snap, no JS needed) */
.sw-rail { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 20px; padding: 4px 20px 14px; margin-inline: -20px; scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.sw-rail::-webkit-scrollbar { display: none; }
.sw-rail > * { flex: 0 0 var(--rail-item, 78%); scroll-snap-align: start; min-width: 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .sw-ready [data-reveal] { opacity: 1; transform: none; }
}
