/* DIVSA OS v7.30.0 — shared campaigns, forms and popup presentation. */
.tap-engagement,.tap-form-card,.tap-popup{--te-brand:var(--tap-purple);--te-accent:var(--tap-gold,var(--tap-accent));--te-ink:var(--tap-ink);--te-muted:var(--tap-muted);--te-line:var(--tap-line);--te-card:var(--tap-surface);font-family:var(--tap-font-body);box-sizing:border-box}.tap-engagement *,.tap-form-card *,.tap-popup *{box-sizing:border-box}
.tap-promo{position:relative;width:100%;margin:18px 0}.tap-promo__viewport{overflow:hidden;border-radius:var(--tap-card-radius,18px)}.tap-promo__track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none}.tap-promo__track::-webkit-scrollbar{display:none}.tap-promo__item{position:relative;scroll-snap-align:start;flex:0 0 100%;min-height:220px;border:1px solid var(--te-line);border-radius:var(--tap-card-radius,18px);overflow:hidden;background:linear-gradient(125deg,color-mix(in srgb,var(--te-brand) 78%,#000),var(--te-brand));color:#fff;isolation:isolate}.tap-promo__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.tap-promo__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(20,7,29,.76),rgba(20,7,29,.18) 72%,rgba(20,7,29,.06))}.tap-promo__body{height:100%;min-height:220px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(22px,5vw,48px);max-width:720px}.tap-promo__eyebrow{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;opacity:.9;margin-bottom:8px}.tap-promo__body h3{font-family:var(--tap-font-heading);font-size:clamp(22px,4vw,38px);line-height:1.08;margin:0 0 16px;color:inherit}.tap-promo__cta,.tap-popup__cta{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:999px;background:#fff;color:var(--te-brand);font:inherit;font-weight:800;text-decoration:none;padding:10px 17px;cursor:pointer;min-height:42px}.tap-promo__controls{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:10px}.tap-promo__nav,.tap-promo__pause{border:1px solid var(--te-line);background:var(--te-card);color:var(--te-ink);border-radius:999px;min-width:36px;height:36px;padding:0 11px;font:inherit;font-weight:700;cursor:pointer}.tap-promo__nav{font-size:24px;line-height:1}.tap-promo__dots{display:flex;gap:5px}.tap-promo__dots span{width:7px;height:7px;border-radius:999px;background:color-mix(in srgb,var(--te-muted) 30%,transparent);transition:width .2s,background .2s}.tap-promo__dots span.is-active{width:20px;background:var(--te-brand)}
.tap-promo--rail .tap-promo__item{flex-basis:min(82vw,420px);min-height:240px}.tap-promo--rail .tap-promo__body{min-height:240px;padding:24px}.tap-promo--rail .tap-promo__body h3{font-size:24px}.tap-promo--card .tap-promo__item{flex-basis:min(76vw,330px);min-height:360px}.tap-promo--card .tap-promo__shade{background:linear-gradient(180deg,rgba(20,7,29,.05) 18%,rgba(20,7,29,.84) 86%)}.tap-promo--card .tap-promo__body{min-height:360px;justify-content:flex-end;padding:22px}.tap-promo--card .tap-promo__body h3{font-size:22px}
.tap-form-card{width:100%;max-width:760px;margin:0 auto;padding:clamp(18px,4vw,28px);background:var(--te-card);border:1px solid var(--te-line);border-radius:var(--tap-card-radius,18px);color:var(--te-ink);box-shadow:0 10px 32px color-mix(in srgb,var(--tap-ink,#000) 7%,transparent)}.tap-form-card--compact{padding:0;border:0;box-shadow:none}.tap-form-card :is(h1,h2){margin:0 0 6px;font-family:var(--tap-font-heading);font-size:clamp(24px,4vw,32px)}.tap-form-card__intro{margin:0 0 18px;color:var(--te-muted)}.tap-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.tap-form-field{display:flex;flex-direction:column;gap:6px;min-width:0}.tap-form-field--textarea,.tap-form-field--radio,.tap-form-field--checkbox{grid-column:1/-1}.tap-form-field>label{font-size:13px;font-weight:750;color:var(--te-ink)}.tap-form-field input:not([type=radio]):not([type=checkbox]),.tap-form-field textarea,.tap-form-field select{width:100%;border:1px solid var(--te-line);border-radius:12px;background:var(--te-card);color:var(--te-ink);padding:11px 12px;font:inherit;min-height:44px;outline:none}.tap-form-field textarea{resize:vertical}.tap-form-field input:focus,.tap-form-field textarea:focus,.tap-form-field select:focus{border-color:var(--te-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--te-brand) 13%,transparent)}.tap-form-choices{display:flex;gap:10px;flex-wrap:wrap}.tap-form-choices label,.tap-form-check{display:flex;align-items:center;gap:7px;font-weight:600}.tap-form-error{min-height:15px;color:var(--tap-err,#6109BE);font-size:12px}.tap-form-field.is-error input,.tap-form-field.is-error textarea,.tap-form-field.is-error select{border-color:var(--tap-err,#6109BE)}.tap-form-status{margin:12px 0 0;min-height:20px;font-size:13px;font-weight:650}.tap-form-status.is-success{color:var(--tap-ok,#42D674)}.tap-form-status.is-error{color:var(--tap-err,#6109BE)}.tap-form-submit{margin-top:12px;min-height:46px;border:0;border-radius:999px;background:var(--te-brand);color:#fff;padding:11px 20px;font:inherit;font-weight:800;cursor:pointer}.tap-form-submit[disabled]{opacity:.55;cursor:wait}.tap-form-hp{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;opacity:0!important}
.tap-popup[hidden]{display:none!important}.tap-popup{display:none}
.tap-engagement-dialog{--te-brand:var(--tap-purple);--te-accent:var(--tap-gold,var(--tap-accent));--te-ink:var(--tap-ink);--te-muted:var(--tap-muted);--te-line:var(--tap-line);--te-card:var(--tap-surface)}
.tap-engagement-dialog .tap-dialog-body{padding:0}.tap-engagement-dialog .tap-popup__panel{position:static;width:100%;max-width:none;max-height:none;overflow:visible;background:transparent;border-radius:0;box-shadow:none;color:var(--te-ink)}.tap-engagement-dialog .tap-popup__image{display:block;width:100%;max-height:260px;object-fit:cover}.tap-engagement-dialog .tap-popup__content{padding:clamp(20px,5vw,32px)}.tap-engagement-dialog .tap-popup__eyebrow{font-size:12px;font-weight:800;color:var(--te-brand);text-transform:uppercase;letter-spacing:.07em;margin-bottom:7px}.tap-engagement-dialog .tap-popup__content>h2:first-child{display:none}.tap-engagement-dialog .tap-popup__content>p{color:var(--te-muted);margin:0 0 18px}.tap-engagement-dialog .tap-popup__cta{background:var(--te-brand);color:#fff}.tap-engagement-dialog .tap-form-grid{grid-template-columns:1fr}.tap-engagement-dialog .tap-form-field{grid-column:auto}
@media(max-width:767.98px){.tap-promo__item{min-height:190px}.tap-promo__body{min-height:190px;padding:20px}.tap-promo__body h3{font-size:24px}.tap-promo__controls{justify-content:space-between;padding-inline:4px}.tap-promo__dots{flex:1;justify-content:center}.tap-form-grid{grid-template-columns:1fr}.tap-form-field{grid-column:auto}.tap-engagement-dialog .tap-popup__image{max-height:210px}}
@media(max-width:767.98px){.tap-device-desktop{display:none!important}}@media(min-width:768px){.tap-device-mobile{display:none!important}}
@media(prefers-reduced-motion:reduce){.tap-promo__track{scroll-behavior:auto}}

/* Campaign geometry is operator-controlled in Engagement Studio. */
.tap-promo__picture{display:block}.tap-promo__image{object-fit:var(--tap-promo-fit,cover);object-position:var(--tap-promo-position,center center)}.tap-promo__item,.tap-promo__body,.tap-promo--rail .tap-promo__item,.tap-promo--rail .tap-promo__body,.tap-promo--card .tap-promo__item,.tap-promo--card .tap-promo__body{min-height:var(--tap-promo-height-desktop,220px)}
@media(max-width:767.98px){.tap-promo__item,.tap-promo__body,.tap-promo--rail .tap-promo__item,.tap-promo--rail .tap-promo__body,.tap-promo--card .tap-promo__item,.tap-promo--card .tap-promo__body{min-height:var(--tap-promo-height-mobile,190px)}.tap-promo__controls{padding-inline:4px;margin-bottom:18px}}

/* On phones the operator-selected height is the actual creative frame, not
   only a minimum. Compact spacing keeps the campaign copy and CTA readable. */
@media(max-width:767.98px){.tap-promo__item,.tap-promo--rail .tap-promo__item,.tap-promo--card .tap-promo__item{height:var(--tap-promo-height-mobile,190px);min-height:var(--tap-promo-height-mobile,190px)}.tap-promo__body,.tap-promo--rail .tap-promo__body,.tap-promo--card .tap-promo__body{height:100%;min-height:0;padding:14px 16px}.tap-promo__body h3{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin-bottom:10px;line-height:1.08}.tap-promo__cta{min-height:40px;padding:8px 15px}}

.tap-form-card :where(a,button,input,select,textarea,[tabindex]):focus-visible { outline:2px solid var(--te-brand,#6109BE) !important; outline-offset:2px; }
.tap-form-field input:not([type=radio]):not([type=checkbox]),.tap-form-field textarea,.tap-form-field select{border-color:var(--tap-control-border,color-mix(in srgb,#000000 52%,#FFFFFF))}
/* Phase 2 Forms Builder: responsive field widths + conditional/help states. */
.tap-form-field--w25{grid-column:span 1}.tap-form-field--w33{grid-column:span 1}.tap-form-field--w50{grid-column:span 1}.tap-form-field--w66,.tap-form-field--w100{grid-column:1/-1}.tap-form-helptext{font-size:12px;color:var(--te-muted);line-height:1.4}.tap-form-field[hidden]{display:none!important}
@media(min-width:768px){.tap-form-grid{grid-template-columns:repeat(12,minmax(0,1fr))}.tap-form-field--w25{grid-column:span 3}.tap-form-field--w33{grid-column:span 4}.tap-form-field--w50{grid-column:span 6}.tap-form-field--w66{grid-column:span 8}.tap-form-field--w100,.tap-form-field--textarea,.tap-form-field--radio,.tap-form-field--checkbox,.tap-form-field--consent{grid-column:1/-1}}
@media(max-width:767.98px){.tap-form-field--w25,.tap-form-field--w33,.tap-form-field--w50,.tap-form-field--w66,.tap-form-field--w100{grid-column:1/-1}}

/* Premium DIVSA-native lead forms; form copy and fields remain admin-owned. */
.tap-form-card:not(.tap-form-card--compact){position:relative;margin:clamp(18px,4vw,44px) auto;padding:clamp(20px,4vw,34px);border:1px solid color-mix(in srgb,var(--te-brand) 16%,var(--te-card));border-radius:clamp(18px,3vw,24px);box-shadow:0 18px 54px color-mix(in srgb,var(--te-ink) 9%,transparent);overflow:hidden}
.tap-form-card:not(.tap-form-card--compact)::before{content:"";position:absolute;inset:0 0 auto;height:4px;background:var(--grad-sacred)}
.tap-form-card :is(h1,h2){color:var(--tap-ink);letter-spacing:-.025em}.tap-form-card__intro{max-width:62ch;line-height:1.65}
.tap-form-field input[type=file]{width:100%;min-height:52px;padding:8px;border:1px dashed color-mix(in srgb,var(--te-brand) 34%,var(--te-line));border-radius:14px;background:color-mix(in srgb,var(--te-brand) 4%,var(--te-card));color:var(--te-ink)}
.tap-form-field input[type=file]::file-selector-button{min-height:34px;margin-inline-end:10px;padding:7px 13px;border:0;border-radius:999px;background:var(--tap-primary);color:var(--tap-on-dark);font:700 12px/1 var(--tap-font-body);cursor:pointer}
.tap-form-error,.tap-form-status.is-error{color:var(--tap-primary)}.tap-form-field.is-error input,.tap-form-field.is-error textarea,.tap-form-field.is-error select{border-color:var(--tap-primary)}.tap-form-status.is-success{color:color-mix(in srgb,var(--tap-ok) 70%,var(--tap-ink))}
.tap-form-submit{min-height:48px;padding:12px 24px;background:var(--grad-sacred);color:var(--tap-on-dark);box-shadow:0 10px 26px color-mix(in srgb,var(--te-brand) 22%,transparent)}.tap-form-submit:hover:not([disabled]){transform:translateY(-1px);box-shadow:0 14px 30px color-mix(in srgb,var(--te-brand) 28%,transparent)}
@media(max-width:767.98px){.tap-form-card:not(.tap-form-card--compact){width:auto;max-width:calc(100% - 32px);margin:16px auto;padding:20px 16px;border-radius:18px}.tap-form-submit{width:100%}}

/*
 * v8.6.26 — dots are buttons now (the slider's only navigation after the
 * prev/next pills and Pause were removed). The visible dot stays 7px, but the
 * button carries transparent padding so the tap target clears the 44px
 * minimum; the pill itself is drawn with ::before so `.is-active` keeps
 * working exactly as it did on the old spans.
 */
.tap-promo__dots button{-webkit-appearance:none;appearance:none;border:0;background:none;margin:0;padding:19px 6px;line-height:0;display:block;cursor:pointer}
.tap-promo__dots button::before{content:"";display:block;width:7px;height:7px;border-radius:999px;background:color-mix(in srgb,var(--te-muted) 30%,transparent);transition:width .2s,background .2s}
.tap-promo__dots button.is-active::before{width:20px;background:var(--te-brand)}
.tap-promo__dots button:focus-visible{outline:2px solid var(--te-brand);outline-offset:2px;border-radius:999px}
.tap-promo__dots{gap:0}
