/* Functional/mechanical styles only — visual skin lives in the theme. */
.opsale-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;z-index:9999;padding:20px;}
.opsale-modal-overlay.is-open{display:flex;}
.opsale-modal{background:#fff;max-width:720px;width:100%;max-height:90vh;overflow-y:auto;border-radius:12px;position:relative;}
.opsale-modal-close:not(.opsale-btn){position:absolute;top:12px;right:12px;background:none;border:none;font-size:24px;cursor:pointer;line-height:1;}
body.opsale-modal-open{overflow:hidden;}

.opsale-sticky-bar{position:fixed;left:0;right:0;bottom:0;z-index:900;transform:translateY(110%);transition:transform .25s ease;}
.opsale-sticky-bar.is-visible{transform:translateY(0);}

.opsale-toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;transition:all .25s ease;z-index:9998;}
.opsale-toast.is-visible{opacity:1;transform:translateX(-50%) translateY(0);}

.opsale-hidden{display:none !important;}

/* ---------- Content protection (see initContentProtection() in opsale-public.js) ---------- */
body.opsale-protected{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
body.opsale-protected input,body.opsale-protected textarea,body.opsale-protected select,
body.opsale-protected [contenteditable="true"]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;}
body.opsale-protected img{-webkit-user-drag:none;user-drag:none;pointer-events:none;}
@media print{body.opsale-protected{display:none !important;}}
