/* Add-on modules: announcement bar, popup, cookie banner, captcha box. Colours follow the active template. */
.announce{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 44px 10px 16px;position:relative;font-size:14px;line-height:1.45;text-align:center;font-family:var(--font,system-ui,sans-serif)}
.announce a{color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.announce-info{background:#1d4ed8;color:#fff}
.announce-promo{background:var(--accent,#6d28d9);color:var(--accent-ink,#fff)}
.announce-success{background:#047857;color:#fff}
.announce-warning{background:#b45309;color:#fff}
.announce-close{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:0;color:inherit;font-size:22px;line-height:1;width:32px;height:32px;cursor:pointer;border-radius:6px;opacity:.85}
.announce-close:hover,.announce-close:focus-visible{opacity:1;background:rgba(255,255,255,.15)}
.cookie-bar{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:9999;max-width:560px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:14px 16px;border-radius:14px;background:linear-gradient(var(--surface,#fff),var(--surface,#fff)),var(--bg,#fff);color:var(--ink,#111);border:1px solid var(--line,#ddd);box-shadow:0 12px 32px rgba(0,0,0,.18);font-size:14px;line-height:1.45;font-family:var(--font,system-ui,sans-serif)}
.cookie-bar[hidden]{display:none}
.cookie-bar p{margin:0;flex:1 1 260px;min-width:0}
.cookie-bar a{color:var(--accent,#6d28d9)}
.cookie-actions{display:flex;gap:8px;margin-left:auto}
.captcha-box{min-height:65px;max-width:100%;overflow:hidden}

.popup{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--line,#ddd);border-radius:16px;background:linear-gradient(var(--surface,#fff),var(--surface,#fff)),var(--bg,#fff);color:var(--ink,#111);box-shadow:0 24px 64px rgba(0,0,0,.35);overflow:auto;font-family:var(--font,system-ui,sans-serif)}
.popup[open]{animation:popup-in .22s ease-out}
.popup::backdrop{background:rgba(8,10,16,.6)}
.popup-x{position:absolute;right:10px;top:10px;z-index:1;width:36px;height:36px;border:0;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:22px;line-height:1;cursor:pointer}
.popup-x:hover,.popup-x:focus-visible{background:rgba(0,0,0,.8)}
.popup-img{display:block;width:100%;max-height:min(320px,45dvh);object-fit:cover}
.popup-body{display:flex;flex-direction:column;gap:10px;padding:20px 22px 22px}
.popup-title{margin:0;padding-right:36px;font-size:20px;line-height:1.25;text-wrap:balance}
.popup-img+.popup-body .popup-title,a+.popup-body .popup-title{padding-right:0}
.popup-text{margin:0;font-size:15px;line-height:1.55;opacity:.9;overflow-wrap:anywhere}
.popup-btn{align-self:flex-start;display:inline-block;margin-top:4px;padding:11px 20px;border-radius:10px;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff);font-weight:700;text-decoration:none}
.popup-btn:hover,.popup-btn:focus-visible{filter:brightness(1.08)}
@keyframes popup-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.popup[open]{animation:none}}
/* Built-in chat */
.pc-chat{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:9990;font-family:var(--font,system-ui,sans-serif);font-size:15px;line-height:1.45;color:var(--ink,#111)}
body:has(.s-contact) .pc-chat{bottom:calc(90px + env(safe-area-inset-bottom,0px))}
.pc-chat__bubble{width:58px;height:58px;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff);box-shadow:0 10px 28px -8px rgba(0,0,0,.45);position:relative;margin-left:auto;transition:transform .15s}
.pc-chat__bubble:hover{transform:scale(1.05)}
.pc-chat__bubble:focus-visible{outline:3px solid var(--ink,#111);outline-offset:3px}
.pc-chat.is-open .pc-chat__bubble{display:none}
.pc-chat__badge{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#dc2626;color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.pc-chat__badge[hidden]{display:none}
.pc-chat__panel{width:min(380px,calc(100vw - 32px));height:min(560px,calc(100vh - 110px));height:min(560px,calc(100dvh - 110px));display:flex;flex-direction:column;border-radius:18px;overflow:hidden;
  background:linear-gradient(var(--surface,#fff),var(--surface,#fff)),var(--bg,#fff);border:1px solid var(--line,#ddd);box-shadow:0 18px 50px -12px rgba(0,0,0,.4)}
.pc-chat__panel[hidden]{display:none}
.pc-chat__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 12px 12px 16px;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff)}
.pc-chat__who{display:flex;align-items:baseline;gap:8px;min-width:0}
.pc-chat__who strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-chat__sub{font-size:12px;opacity:.85}
.pc-chat__x{background:none;border:0;color:inherit;width:36px;height:36px;border-radius:8px;display:grid;place-items:center;cursor:pointer}
.pc-chat__x:hover,.pc-chat__x:focus-visible{background:rgba(255,255,255,.18)}
.pc-chat__list{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px;overscroll-behavior:contain}
.pc-chat__msg{max-width:85%;padding:9px 12px;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere}
.pc-chat__msg--visitor{align-self:flex-end;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff);border-bottom-right-radius:4px}
.pc-chat__msg--ai,.pc-chat__msg--staff{align-self:flex-start;background:var(--accent-soft,rgba(0,0,0,.06));color:var(--ink,#111);border-bottom-left-radius:4px}
.pc-chat__msg--system{align-self:center;max-width:95%;background:none;color:var(--muted,#666);font-size:13px;text-align:center;padding:2px 6px}
.pc-chat__msg a{color:inherit;text-decoration:underline}
.pc-chat__label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin-bottom:2px}
.pc-chat__typing{display:flex;gap:4px;padding:12px 14px}
.pc-chat__typing[hidden]{display:none}
.pc-chat__typing span{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.4;animation:pc-dot 1s infinite}
.pc-chat__typing span:nth-child(2){animation-delay:.15s}.pc-chat__typing span:nth-child(3){animation-delay:.3s}
@keyframes pc-dot{0%,80%,100%{opacity:.25}40%{opacity:.9}}
@media (prefers-reduced-motion:reduce){.pc-chat__typing span{animation:none}.pc-chat__bubble{transition:none}}
.pc-chat__foot{border-top:1px solid var(--line,#ddd);padding:10px;display:flex;flex-direction:column;gap:8px}
.pc-chat__human{align-self:flex-start;background:none;border:1px solid var(--line,#ddd);color:var(--ink,#111);border-radius:999px;padding:5px 12px;font:inherit;font-size:13px;cursor:pointer}
.pc-chat__human[hidden]{display:none}
.pc-chat__human:hover,.pc-chat__human.is-hint{border-color:var(--accent,#6d28d9);color:var(--accent,#6d28d9);font-weight:600}
.pc-chat__email,.pc-chat__form{display:flex;gap:8px;align-items:flex-end}
.pc-chat__email[hidden]{display:none}
.pc-chat__email input,.pc-chat__form textarea{flex:1;min-width:0;font:inherit;font-size:16px;color:var(--ink,#111);background:var(--bg,#fff);border:1px solid var(--line,#ddd);border-radius:12px;padding:9px 12px;resize:none;max-height:120px}
.pc-chat__form textarea{min-height:42px;height:42px;line-height:1.4}
.pc-chat__email{flex-wrap:wrap}
.pc-chat__hint{flex:1 0 100%;margin:0;font-size:12px;color:var(--muted,#666)}
.pc-chat__email button{font:inherit;font-size:14px;font-weight:600;border:0;border-radius:10px;padding:9px 12px;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff);cursor:pointer}
.pc-chat__send{width:42px;height:42px;flex:0 0 42px;border:0;border-radius:12px;display:grid;place-items:center;background:var(--accent,#6d28d9);color:var(--accent-ink,#fff);cursor:pointer}
.pc-chat__send:disabled{opacity:.5;cursor:wait}
.pc-chat__send svg{width:20px;height:20px}
@media (max-width:520px){
  .pc-chat{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px))}
  body:has(.s-contact) .pc-chat{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  .pc-chat.is-open,body:has(.s-contact) .pc-chat.is-open{inset:0}
  .pc-chat.is-open .pc-chat__head{padding-top:calc(12px + env(safe-area-inset-top,0px))}
  .pc-chat.is-open .pc-chat__panel{width:100%;height:100%;border-radius:0;border:0;padding-bottom:env(safe-area-inset-bottom,0px)}
}
