/* Fixed inside the full-viewport site iframe. */
.campaign-widget, .campaign-dialog { --calc-ink: #030a17; --calc-paper: #f4eddf; --calc-yellow: #f5bf00; font-family: var(--font-sans, Arial, sans-serif); }
/* The character appears from the cases chapter; its invitation is opt-in. */
.campaign-widget { position: fixed; right: max(22px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 70; width: 136px; height: 182px; isolation: isolate; pointer-events: none; }
.campaign-widget[hidden], .campaign-speech[hidden] { display: none; }
.campaign-launch { position: absolute; inset: 0; display: block; padding: 0; border: 0; border-radius: 0; background: none; cursor: pointer; pointer-events: auto; -webkit-tap-highlight-color: transparent; transform-origin: 52% 94%; animation: campaign-elvik-invite 7s ease-in-out infinite; }
.campaign-launch img { display: block; width: 100%; height: auto; object-fit: contain; transform: scaleX(-1); filter: drop-shadow(0 6px 9px #030a1725); }
.campaign-speech { position: absolute; right: 98px; bottom: 137px; display: block; width: 306px; padding: 21px 22px 18px; border: 1px solid #f5bf00b3; border-radius: 22px 22px 5px 22px; background: var(--calc-paper); box-shadow: 0 8px 26px #030a1726; color: var(--calc-ink); pointer-events: auto; transform-origin: 90% 100%; animation: campaign-hello .3s cubic-bezier(.2,.7,.25,1) both; }
.campaign-speech::after { content: ''; position: absolute; bottom: -12px; right: 17px; width: 22px; height: 22px; background: var(--calc-paper); border-right: 1px solid #f5bf00b3; border-bottom: 1px solid #f5bf00b3; transform: skewY(32deg); clip-path: polygon(0 0, 100% 0, 100% 100%); }
.campaign-launch-copy { display: block; margin: 0; font-size: 15px; line-height: 1.5; }
.campaign-launch-copy > span { display: block; }
.campaign-text-unit { display: inline-block; white-space: nowrap; }
.campaign-invite { display: block; width: 100%; min-height: 44px; margin-top: 16px; padding: 11px 16px; border: 0; border-radius: 3px; background: var(--calc-yellow); color: var(--calc-ink); font: inherit; font-size: 14px; font-weight: 600; line-height: 1.4; cursor: pointer; text-align: center; }
.campaign-invite:hover { background: #ffcf22; }
.campaign-dismiss { position: absolute; z-index: 2; top: -10px; left: -10px; width: 27px; height: 27px; display: grid; place-items: center; padding: 0; border: 1px solid #f4eddf4d; border-radius: 50%; background: var(--calc-ink); color: var(--calc-paper); cursor: pointer; }
.campaign-dismiss svg, .campaign-dialog-close svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.5; }
@keyframes campaign-hello { from { opacity: 0; transform: translate(7px, 8px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes campaign-elvik-invite { 0%, 18%, 64%, 100% { transform: rotate(0); } 29%, 47% { transform: rotate(2.5deg) translateY(-2px); } 38% { transform: rotate(1deg) translateY(-3px); } 55% { transform: rotate(-.8deg); } }
@media (prefers-reduced-motion: reduce) { .campaign-speech, .campaign-launch { animation: none; } }
.campaign-widget button:focus-visible, .campaign-dialog button:focus-visible, .campaign-dialog input:focus-visible, .campaign-dialog select:focus-visible { outline: 2px solid var(--calc-yellow); outline-offset: 4px; }
.campaign-dialog { width: min(520px, calc(100% - 32px)); max-height: calc(100dvh - 32px); margin: auto; padding: 34px; border: 1px solid #f5bf0066; border-radius: 3px; background: var(--calc-ink); color: var(--calc-paper); box-shadow: 0 32px 110px #0007; overflow: auto; overscroll-behavior: contain; }
.campaign-dialog::backdrop { background: #030a17b8; backdrop-filter: blur(6px); }
.campaign-dialog-close { position: absolute; top: 12px; right: 12px; display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; background: transparent; color: var(--calc-paper); cursor: pointer; }
.campaign-dialog-close:hover { color: var(--calc-yellow); }
.campaign-dialog-kicker { margin: 0 40px 12px 0; color: var(--calc-yellow); font-size: 10px; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; }
.campaign-dialog h2 { margin: 0 22px 28px 0; font-family: var(--font-display, Impact, sans-serif); font-size: clamp(32px, 4.8vw, 40px); font-weight: 400; line-height: 1.12; text-transform: uppercase; }
.campaign-form { display: grid; gap: 22px; }
.campaign-field { display: grid; gap: 9px; margin: 0; padding: 0; border: 0; min-width: 0; }
.campaign-field > span, .campaign-field legend { display: block; padding: 0; color: var(--calc-paper); font-size: 14px; line-height: 1.5; }
.campaign-field legend { margin-bottom: 10px; }
.campaign-field select, .campaign-field input[name="region"], .campaign-field input[type="number"] { width: 100%; min-height: 52px; margin: 0; padding: 13px 15px; border: 1px solid #f4eddf48; border-radius: 2px; background: #f4eddf08; color: var(--calc-paper); font: inherit; font-size: 16px; line-height: 1.4; }
.campaign-field select { cursor: pointer; color-scheme: dark; }
.campaign-field select option { color: var(--calc-paper); background: var(--calc-ink); }
.campaign-field input::placeholder { color: #f4eddf70; }
.campaign-price { position: relative; }
.campaign-price input[type="number"] { padding-right: 64px; }
.campaign-price-unit { position: absolute; top: 50%; right: 16px; transform: translateY(-50%); color: #f4eddfa6; font-size: 12px; letter-spacing: .04em; pointer-events: none; }
.campaign-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.campaign-option { position: relative; min-width: 0; cursor: pointer; }
.campaign-option input { position: absolute; top: 17px; left: 14px; width: 18px; height: 18px; margin: 0; accent-color: var(--calc-yellow); }
.campaign-option span { display: flex; align-items: center; min-height: 52px; padding: 12px 16px 12px 42px; border: 1px solid #f4eddf48; border-radius: 2px; font-size: 15px; line-height: 1.4; }
.campaign-option:has(input:checked) span { border-color: var(--calc-yellow); background: #f5bf0012; }
.campaign-submit { display: block; width: 100%; min-height: 54px; margin-top: 4px; padding: 16px 20px; border: 1px solid var(--calc-yellow); border-radius: 0; background: var(--calc-yellow); color: var(--calc-ink); font: inherit; font-size: 15px; font-weight: 600; line-height: 1.4; cursor: pointer; }
.campaign-submit:hover { background: #ffcf22; }
.campaign-contact-summary { grid-column: 1 / -1; margin: 0 0 18px; padding: 16px 0 16px 18px; border-left: 2px solid var(--yellow, #f5bf00); color: var(--cream, #f0e5cf); font-size: 13px; line-height: 1.65; white-space: pre-line; }
.campaign-contact-summary strong { display: block; margin-bottom: 4px; color: var(--yellow, #f5bf00); font-size: 14px; font-weight: 500; }
.campaign-edit { display: block; margin: 10px 0 0; padding: 0 0 3px; border: 0; border-bottom: 1px solid currentColor; background: none; color: var(--cream, #f0e5cf); font: inherit; font-size: 12px; cursor: pointer; }
.campaign-edit:hover, .campaign-edit:focus-visible { color: var(--yellow, #f5bf00); }
@media (max-width: 720px) {
  .campaign-widget { right: max(12px, env(safe-area-inset-right)); bottom: max(10px, env(safe-area-inset-bottom)); width: 98px; height: 131px; }
  .campaign-speech { right: 62px; bottom: 98px; width: min(296px, calc(100vw - 103px)); padding: 18px 18px 16px; border-radius: 18px 18px 4px 18px; }
  .campaign-launch-copy { font-size: 14px; line-height: 1.5; }
  .campaign-invite { margin-top: 13px; }
  .campaign-widget.is-at-contact { display: none; }
  .campaign-dialog { width: calc(100% - 24px); max-height: calc(100dvh - 24px); padding: 30px 22px 24px; }
  .campaign-dialog h2 { margin-bottom: 24px; }
  .campaign-form { gap: 19px; }
  .campaign-dialog-close { width: 44px; height: 44px; top: 4px; right: 4px; }
  .campaign-dismiss { width: 44px; height: 44px; top: -20px; left: -10px; }
}
