/* Tratto Policy – colore e font si impostano da Impostazioni > Tratto Policy (altrimenti usa quelli del tema) */
.tp-banner, .tp-modal, .tp-float, .tp-embed { --tp-blue: var(--tp-color, var(--e-global-color-primary, #1f2937)); --tp-ink: #111; font-family: var(--tp-font, inherit); }
.tp-banner { position: fixed; left: 20px; bottom: 20px; z-index: 99990; width: min(440px, calc(100% - 40px)); padding: 26px 26px 22px; background: #fff; color: var(--tp-ink); box-shadow: 0 30px 80px -20px rgba(15, 34, 56, 0.45); border-top: 3px solid var(--tp-blue); opacity: 0; transform: translateY(20px); transition: opacity .4s, transform .5s cubic-bezier(.16,1,.3,1); }
.tp-banner.is-visible { opacity: 1; transform: none; }
.tp-banner__title { margin: 0 0 8px; padding-right: 30px; font-family: var(--tp-font-title, inherit); font-size: 20px; font-weight: 600; line-height: 1.2; color: var(--tp-ink); }
.tp-banner__text, .tp-modal__intro { margin: 0 0 10px; font-size: 14px; line-height: 1.55; color: #3b4148; }
.tp-banner__links { margin: 0 0 16px; font-size: 13px; }
.tp-banner__links a { color: var(--tp-blue); text-decoration: underline; }
.tp-banner__btns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
/* Stessa evidenza per Rifiuta e Accetta (linee guida del Garante) */
.tp-btn { padding: 12px 10px; border: 1.5px solid var(--tp-blue); border-radius: 0; background: var(--tp-blue); color: #fff; font-family: inherit; font-size: 14px; font-weight: 700; line-height: 1.2; cursor: pointer; transition: background .25s, color .25s; }
.tp-btn:hover, .tp-btn:focus-visible { background: var(--tp-ink); border-color: var(--tp-ink); color: #fff; }
.tp-x { position: absolute; top: 10px; right: 10px; width: 34px; height: 34px; padding: 0; border: 0; background: transparent; color: #5b6470; font-size: 26px; line-height: 1; cursor: pointer; }
.tp-x:hover { color: var(--tp-ink); }
.tp-modal { position: fixed; inset: 0; z-index: 99995; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(8, 16, 28, .6); }
.tp-modal__box { position: relative; width: min(560px, 100%); max-height: calc(100vh - 32px); overflow-y: auto; padding: 30px 28px 24px; background: #fff; color: var(--tp-ink); border-top: 3px solid var(--tp-blue); }
.tp-cat { padding: 14px 0; border-top: 1px solid #e3e7ec; }
.tp-cat__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 15px; }
.tp-cat p { margin: 6px 0 0; font-size: 13.5px; line-height: 1.5; color: #5b6470; }
.tp-cat__always { font-size: 12px; font-weight: 700; color: var(--tp-blue); }
.tp-switch { position: relative; display: inline-block; width: 46px; height: 26px; flex: none; cursor: pointer; }
.tp-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.tp-switch span { position: absolute; inset: 0; border-radius: 26px; background: #c6ced8; transition: background .25s; pointer-events: none; }
.tp-switch span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .25s; }
.tp-switch input:checked + span { background: var(--tp-blue); }
.tp-switch input:checked + span::after { transform: translateX(20px); }
.tp-switch input:focus-visible + span { outline: 2px solid var(--tp-blue); outline-offset: 2px; }
.tp-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.tp-modal .tp-banner__btns { margin-top: 8px; }
.tp-float { position: fixed; left: 16px; bottom: 16px; z-index: 99980; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: #fff; color: var(--tp-blue); box-shadow: 0 8px 24px -8px rgba(15, 34, 56, .45); cursor: pointer; }
.tp-float[hidden] { display: none; }
.tp-float svg { width: 22px; height: 22px; fill: currentColor; }
.tp-embed { position: relative; }
.tp-embed__blocked { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 24px; background: #eef1f5; text-align: center; }
.tp-embed__blocked p { max-width: 420px; margin: 0; color: #3b4148; font-size: 15px; }
.tp-embed.is-allowed .tp-embed__blocked { display: none; }
.tp-embed .tp-btn { padding: 12px 22px; }
.tp-policy h2 { margin-top: 1.8em; }
.tp-policy table { width: 100%; border-collapse: collapse; margin: 1em 0 1.6em; font-size: 15px; }
.tp-policy th, .tp-policy td { padding: 10px 12px; border: 1px solid #e3e7ec; text-align: left; vertical-align: top; }
.tp-policy th { background: #f3f5f8; }
.tp-policy .tp-todo { padding: 2px 6px; background: #fff3cd; }
@media (max-width: 480px) {
	.tp-banner { left: 10px; right: 10px; bottom: 10px; width: auto; padding: 22px 18px 18px; }
	.tp-banner__btns { grid-template-columns: 1fr 1fr; }
	.tp-banner__btns [data-tp-accept] { grid-column: 1 / -1; order: -1; }
	.tp-policy table { font-size: 13px; }
}
/* Logo dell'azienda */
.tp-logo { display: block; line-height: 0; }
.tp-logo img { display: block; width: auto; max-width: 220px; object-fit: contain; }
.tp-logo--top { margin: 0 0 14px; padding-right: 34px; }
.tp-logo--bottom { display: flex; justify-content: flex-end; margin: 14px 0 -4px; opacity: .75; transition: opacity .2s; }
.tp-logo--bottom:hover { opacity: 1; }
.tp-logo--bottom img { max-width: 140px; }
