| @@ -69,21 +69,41 @@ | ||
| 69 | 69 | .email-blocker { |
| 70 | 70 | display: flex; |
| 71 | 71 | flex-direction: column; |
| 72 | 72 | align-items: center; |
| 73 | - justify-content: center; | |
| 73 | + /* No justify-content: center here — on an overflowing flex container it | |
| 74 | + pushes content past BOTH edges, making the top unreachable by scroll. | |
| 75 | + The auto margins on the first/last children below center the content | |
| 76 | + when there is room and collapse to flex-start when there is not. */ | |
| 74 | 77 | border-radius: 12px; |
| 75 | 78 | padding: 30px 20px; |
| 76 | 79 | max-width: 100%; |
| 80 | + max-height: 100%; | |
| 81 | + overflow-y: auto; | |
| 82 | + scrollbar-width: thin; | |
| 77 | 83 | margin: auto; |
| 78 | 84 | text-align: center; |
| 79 | 85 | animation: fadeIn 0.5s ease-in-out; |
| 80 | 86 | } |
| 81 | 87 | |
| 88 | +.email-blocker::-webkit-scrollbar { | |
| 89 | + width: 5px; | |
| 90 | +} | |
| 91 | + | |
| 92 | +.email-blocker::-webkit-scrollbar-thumb { | |
| 93 | + background-color: #212121; | |
| 94 | + border-radius: 20px; | |
| 95 | +} | |
| 96 | + | |
| 82 | 97 | .email-blocker-header { |
| 98 | + margin-top: auto; | |
| 83 | 99 | margin-bottom: 20px; |
| 84 | 100 | } |
| 85 | 101 | |
| 102 | +.email-blocker .email-collection-form { | |
| 103 | + margin-bottom: auto; | |
| 104 | +} | |
| 105 | + | |
| 86 | 106 | .email-blocker-logo { |
| 87 | 107 | max-width: 80px; |
| 88 | 108 | margin-bottom: 10px; |
| 89 | 109 | } |
| @@ -120,8 +140,40 @@ | ||
| 120 | 140 | box-shadow: 0 0 8px rgba(0, 115, 170, 0.3); |
| 121 | 141 | outline: none; |
| 122 | 142 | } |
| 123 | 143 | |
| 144 | +/* Consent checkbox row (b062c4). Left-aligned inside the centered form so a | |
| 145 | + multi-line label reads naturally; sized to stay compact on 320-390px. */ | |
| 146 | +.email-blocker .mxchat-consent-row { | |
| 147 | + display: flex; | |
| 148 | + align-items: flex-start; | |
| 149 | + gap: 8px; | |
| 150 | + width: 100%; | |
| 151 | + margin-bottom: 15px; | |
| 152 | + text-align: left; | |
| 153 | +} | |
| 154 | + | |
| 155 | +.email-blocker .mxchat-consent-checkbox { | |
| 156 | + flex-shrink: 0; | |
| 157 | + width: 16px; | |
| 158 | + height: 16px; | |
| 159 | + margin: 2px 0 0; | |
| 160 | + accent-color: #0073aa; | |
| 161 | + cursor: pointer; | |
| 162 | +} | |
| 163 | + | |
| 164 | +.email-blocker .mxchat-consent-label { | |
| 165 | + font-size: 13px; | |
| 166 | + line-height: 1.45; | |
| 167 | + color: #555555; | |
| 168 | + cursor: pointer; | |
| 169 | +} | |
| 170 | + | |
| 171 | +.email-blocker .mxchat-consent-label a { | |
| 172 | + color: #0073aa; | |
| 173 | + text-decoration: underline; | |
| 174 | +} | |
| 175 | + | |
| 124 | 176 | .email-blocker button { |
| 125 | 177 | background-color: #0073aa; |
| 126 | 178 | color: #ffffff; |
| 127 | 179 | padding: 12px 20px; |
| @@ -731,9 +783,13 @@ | ||
| 731 | 783 | |
| 732 | 784 | /* ======================================== |
| 733 | 785 | CORE CHATBOT UI |
| 734 | 786 | ======================================== */ |
| 735 | -.invisible { | |
| 787 | +/* This stylesheet loads on every page where the widget shows, so generic class names must | |
| 788 | + stay inside MxChat's own containers: a bare .invisible hit the site's own elements (and | |
| 789 | + Bootstrap / Tailwind give that class the opposite meaning, visibility hidden with the layout | |
| 790 | + kept). :where() keeps the specificity of the bare class. */ | |
| 791 | +:where(.floating-chatbot, .mxchat-chatbot-wrapper) .invisible { | |
| 736 | 792 | display: none; |
| 737 | 793 | opacity: 0; |
| 738 | 794 | pointer-events: none; |
| 739 | 795 | } |
| @@ -1152,9 +1208,12 @@ | ||
| 1152 | 1208 | |
| 1153 | 1209 | .chatbot-top-bar button.exit-chat:hover { |
| 1154 | 1210 | background: rgba(255, 255, 255, 0.12); |
| 1155 | 1211 | } |
| 1156 | -.visible { | |
| 1212 | +/* The floating window is the only element MxChat toggles .visible on (core, the Trigger | |
| 1213 | + and Multi-Bot add-ons and MxChat Anywhere all use .floating-chatbot). Unscoped, this turned | |
| 1214 | + any site element with class "visible" into a flex container. */ | |
| 1215 | +:where(.floating-chatbot).visible { | |
| 1157 | 1216 | display: flex; |
| 1158 | 1217 | } |
| 1159 | 1218 | |
| 1160 | 1219 | .floating-chatbot-button { |
| @@ -1551,9 +1610,12 @@ | ||
| 1551 | 1610 | } |
| 1552 | 1611 | |
| 1553 | 1612 | |
| 1554 | 1613 | |
| 1555 | -pre { | |
| 1614 | +/* Code blocks inside the chat only (a bare pre turned every code sample on the site black with | |
| 1615 | + white text). :where() keeps the specificity of the bare element selector, so .mxchat-code-block | |
| 1616 | + still wins where it sets a property and the look inside the chat is unchanged. */ | |
| 1617 | +:where(.mxchat-chatbot-wrapper) pre { | |
| 1556 | 1618 | background-color: #000; |
| 1557 | 1619 | border: 1px solid #ddd; |
| 1558 | 1620 | border-radius: 20px; |
| 1559 | 1621 | border-left: 3px solid #9e7aff; |
| @@ -1567,25 +1629,8 @@ | ||
| 1567 | 1629 | overflow: auto; |
| 1568 | 1630 | padding: 1em 1.5em; |
| 1569 | 1631 | display: block; |
| 1570 | 1632 | word-wrap: break-word; |
| 1571 | -} | |
| 1572 | - | |
| 1573 | -.copy-btn { | |
| 1574 | - padding: 10px 20px; | |
| 1575 | - border: none; | |
| 1576 | - border-radius: 4px; | |
| 1577 | - background-color: #9e7aff; | |
| 1578 | - transition: background-color 0.3s; | |
| 1579 | - color: #fff; | |
| 1580 | - font-size: 1rem; | |
| 1581 | - cursor: pointer; | |
| 1582 | - font-weight: 700; | |
| 1583 | - margin-bottom: 10px; | |
| 1584 | -} | |
| 1585 | - | |
| 1586 | -.copy-btn:hover { | |
| 1587 | - opacity: 0.8; | |
| 1588 | 1633 | } |
| 1589 | 1634 | |
| 1590 | 1635 | .mxchat-product-card { |
| 1591 | 1636 | display: flex; |