/* Oltre Consenso — stile coerente con design/DESIGN.md (griglia da 8, Barlow Condensed + Inter). */
.oc-root{--oc-ink:#1C1A16;--oc-muted:#5E5A50;--oc-line:#E4E1DA;--oc-olive:#6E7E30;position:fixed;inset:auto 0 0 0;z-index:99999;display:flex;justify-content:center;padding:16px;pointer-events:none;font-family:Inter,system-ui,sans-serif}
.oc-root[hidden]{display:none}
.oc-banner{pointer-events:auto;position:relative;width:100%;max-width:640px;background:#fff;color:var(--oc-ink);border:1px solid var(--oc-ink);padding:32px;box-shadow:0 24px 48px rgba(28,26,22,.12);max-height:calc(100vh - 32px);overflow:auto;opacity:0;transform:translateY(24px);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.2,1)}
.oc-in .oc-banner{opacity:1;transform:none}
.oc-head{display:flex;align-items:center;gap:16px}
.oc-label{font-family:'Barlow Condensed',sans-serif;font-weight:500;font-size:14px;line-height:16px;letter-spacing:.24em;text-transform:uppercase;color:var(--oc-muted)}
.oc-mark{position:relative;display:inline-block;width:26px;height:16px;flex:none}
.oc-mark::before{content:"";position:absolute;left:0;top:0;width:16px;height:16px;border:1.5px solid currentColor;border-radius:50%;box-sizing:border-box}
.oc-mark i{position:absolute;left:5px;top:5px;width:6px;height:6px;border-radius:50%;background:var(--oc-olive,#6E7E30);animation:oc-out 1s .6s cubic-bezier(.3,1.35,.5,1) forwards}
@keyframes oc-out{to{transform:translateX(16px)}}
.oc-title{margin:24px 0 8px;font-family:'Barlow Condensed',sans-serif;font-weight:600;font-size:32px;line-height:32px;text-transform:uppercase}
.oc-text{margin:0;font-size:15px;line-height:24px;color:var(--oc-muted)}
.oc-text a{color:var(--oc-ink);text-decoration:underline;text-underline-offset:3px}
.oc-close{position:absolute;top:16px;right:16px;width:40px;height:40px;border:0;background:none;font-size:24px;line-height:1;color:var(--oc-muted);cursor:pointer}
.oc-close:hover{color:var(--oc-ink)}
.oc-prefs{margin-top:24px;border-top:1px solid var(--oc-line)}
.oc-prefs[hidden]{display:none}
.oc-cat{display:flex;gap:24px;align-items:flex-start;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--oc-line);cursor:pointer}
.oc-cat-text b{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:600;font-size:18px;line-height:24px;text-transform:uppercase}
.oc-cat-text span{display:block;font-size:13px;line-height:20px;color:var(--oc-muted)}
.oc-switch{appearance:none;-webkit-appearance:none;flex:none;width:40px;height:24px;margin-top:2px;border:1px solid var(--oc-ink);border-radius:999px;position:relative;cursor:pointer;background:#fff;transition:background .3s}
.oc-switch::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--oc-ink);transition:transform .3s cubic-bezier(.3,1.35,.5,1)}
.oc-switch:checked{background:var(--oc-olive);border-color:var(--oc-olive)}
.oc-switch:checked::after{transform:translateX(16px);background:#fff}
.oc-switch:disabled{opacity:.45;cursor:not-allowed}
.oc-switch:focus-visible{outline:2px solid var(--oc-olive);outline-offset:3px}
.oc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}
.oc-btn{flex:1 1 140px;min-height:48px;padding:0 16px;border:1px solid var(--oc-ink);background:#fff;color:var(--oc-ink);font-family:'Barlow Condensed',sans-serif;font-weight:500;font-size:15px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:background .3s,color .3s}
.oc-btn[hidden]{display:none}
.oc-btn:hover{background:var(--oc-ink);color:#fff}
.oc-primary{background:var(--oc-ink);color:#fff}
.oc-primary:hover{background:var(--oc-olive);border-color:var(--oc-olive)}
.oc-btn:focus-visible,.oc-close:focus-visible{outline:2px solid var(--oc-olive);outline-offset:3px}
.oc-reopen{position:fixed;left:16px;bottom:16px;z-index:99998;width:48px;height:48px;border:1px solid #1C1A16;border-radius:50%;background:#fff;color:#1C1A16;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0 0 0 10px}
.oc-reopen[hidden]{display:none}
.oc-reopen .oc-mark i{animation:none;transform:translateX(16px)}
.oc-link{border:0;background:none;padding:0;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
@media (max-width:600px){.oc-root{padding:8px}.oc-banner{padding:24px}.oc-title{font-size:24px;line-height:24px;margin-top:16px}.oc-actions{margin-top:24px}.oc-btn{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){.oc-banner,.oc-switch,.oc-switch::after{transition:none}.oc-mark i{animation:none;transform:translateX(16px)}}
