:root {
    --sh-sav-ink: #17372f;
    --sh-sav-muted: #6e7d77;
    --sh-sav-cream: #fffaf4;
    --sh-sav-card: #ffffff;
    --sh-sav-line: rgba(31, 66, 56, .13);
    --sh-sav-green: #2e6758;
    --sh-sav-green-soft: #edf5f1;
    --sh-sav-red: #ef5a5d;
    --sh-sav-red-dark: #d9484d;
    --sh-sav-shadow: 0 24px 70px rgba(27, 55, 48, .22);
}

.sh-savorito[hidden] { display: none !important; }
.sh-savorito { position: fixed; right: 24px; bottom: 24px; z-index: 99990; font-family: "Sniglet", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--sh-sav-ink); }
.sh-savorito * { box-sizing: border-box; }

.sh-savorito-launcher {
    width: 156px; min-height: 62px; display: flex; align-items: center; gap: 10px;
    border: 1px solid var(--sh-sav-line); border-radius: 22px; background: rgba(255,255,255,.96);
    box-shadow: 0 16px 44px rgba(27,55,48,.19); padding: 8px 13px 8px 8px; cursor: pointer;
    color: var(--sh-sav-ink); transform: translateY(0) scale(1); opacity: 1; pointer-events: auto;
    transition: transform .38s cubic-bezier(.2,.85,.25,1), opacity .28s ease, box-shadow .2s ease;
}
.sh-savorito.is-ready .sh-savorito-launcher { transform: translateY(0) scale(1); opacity: 1; pointer-events: auto; }
.sh-savorito.is-open .sh-savorito-launcher { opacity: 0; pointer-events: none; transform: translateY(16px) scale(.94); }
.sh-savorito-launcher:hover { box-shadow: 0 18px 52px rgba(27,55,48,.26); }
.sh-savorito-launcher-avatar { display: grid; place-items: center; width: 46px; height: 46px; flex: 0 0 46px; border-radius: 17px; background: #fff2ef; }
.sh-savorito-launcher-avatar svg { width: 38px; height: 42px; }
.sh-savorito-launcher-copy { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.12; }
.sh-savorito-launcher-copy strong { font-size: 14px; }
.sh-savorito-launcher-copy span { margin-top: 4px; font-size: 12px; color: var(--sh-sav-muted); }

.sh-savorito-panel {
    position: absolute; right: 0; bottom: 0; width: min(386px, calc(100vw - 28px)); max-height: min(610px, calc(100vh - 32px));
    display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--sh-sav-line); border-radius: 28px;
    background: var(--sh-sav-card); box-shadow: var(--sh-sav-shadow); transform-origin: 90% 100%;
    transform: translateY(26px) scale(.94); opacity: 0; visibility: hidden; pointer-events: none;
    transition: transform .42s cubic-bezier(.2,.88,.25,1), opacity .26s ease, visibility .26s;
}
.sh-savorito.is-open .sh-savorito-panel { transform: translateY(0) scale(1); opacity: 1; visibility: visible; pointer-events: auto; }

.sh-savorito-header { display: grid; grid-template-columns: 52px 1fr 34px; align-items: center; gap: 11px; padding: 16px 16px 14px; background: linear-gradient(145deg,#fff7f2 0%,#f5faf7 100%); border-bottom: 1px solid var(--sh-sav-line); }
.sh-savorito-header-avatar { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 19px; background: white; box-shadow: 0 8px 22px rgba(52,80,69,.11); }
.sh-savorito-header-avatar svg { width: 43px; height: 48px; }
.sh-savorito-header strong { display: block; font-size: 16px; letter-spacing: -.01em; }
.sh-savorito-header span { display: flex; align-items: center; gap: 6px; margin-top: 4px; color: var(--sh-sav-muted); font-size: 12px; }
.sh-savorito-header span i { width: 7px; height: 7px; border-radius: 50%; background: #4ba97f; box-shadow: 0 0 0 3px rgba(75,169,127,.14); }
.sh-savorito-close { border: 0; width: 34px; height: 34px; border-radius: 12px; background: rgba(255,255,255,.72); color: var(--sh-sav-muted); cursor: pointer; font-size: 24px; line-height: 1; }

.sh-savorito-messages { min-height: 178px; max-height: 320px; overflow-y: auto; padding: 19px 17px 8px; background: var(--sh-sav-cream); }
.sh-savorito-message { max-width: 88%; margin-bottom: 10px; padding: 12px 14px; border-radius: 17px; font-size: 13px; line-height: 1.48; animation: sh-sav-message-in .25s ease both; }
.sh-savorito-message p { margin: 0; }
.sh-savorito-message p + p { margin-top: 7px; }
.sh-savorito-message-bot { margin-right: auto; background: #fff; border: 1px solid rgba(31,66,56,.1); border-bottom-left-radius: 6px; box-shadow: 0 8px 20px rgba(27,55,48,.06); }
.sh-savorito-message-user { margin-left: auto; background: var(--sh-sav-green); color: #fff; border-bottom-right-radius: 6px; }
.sh-savorito-message ul { margin: 8px 0 0; padding-left: 18px; }
.sh-savorito-message li + li { margin-top: 4px; }
.sh-savorito-inline-cta { display: inline-flex; margin-top: 10px; border-radius: 12px; background: var(--sh-sav-green); color: #fff !important; text-decoration: none !important; padding: 9px 12px; font-weight: 700; }

.sh-savorito-quick { display: flex; gap: 7px; flex-wrap: wrap; padding: 12px 15px 8px; background: #fff; }
.sh-savorito-quick:empty{display:none}
.sh-savorito-quick button { border: 1px solid var(--sh-sav-line); border-radius: 999px; background: #fff; color: var(--sh-sav-ink); padding: 8px 11px; font: inherit; font-size: 12px; cursor: pointer; transition: background .18s ease, border-color .18s ease, transform .18s ease; }
.sh-savorito-quick button:hover { background: var(--sh-sav-green-soft); border-color: rgba(46,103,88,.24); transform: translateY(-1px); }

.sh-savorito-compose { display: grid; grid-template-columns: 1fr 42px; gap: 8px; padding: 8px 15px 5px; }
.sh-savorito-compose input { width: 100%; border: 1px solid var(--sh-sav-line); border-radius: 14px; background: #f7f7f5; padding: 11px 12px; font: inherit; font-size: 11px; color: #89918e; }
.sh-savorito-compose button { border: 0; border-radius: 13px; background: #dfe6e3; color: #96a09c; font-size: 17px; }
.sh-savorito-prototype-note { margin: 4px 15px 13px; color: #98a09c; font-size: 10px; text-align: center; }

.sh-sav-body { fill: var(--sh-sav-red); stroke: var(--sh-sav-red-dark); stroke-width: 2.2; }
.sh-sav-leaf { fill: #4f8e63; stroke: #39724f; stroke-width: 1.6; }
.sh-sav-seed { fill: #ffe3aa; transform-box: fill-box; transform-origin: center; }
.sh-sav-eye { fill: #253b34; }
.sh-sav-mouth { fill: none; stroke: #253b34; stroke-width: 2.7; stroke-linecap: round; }
.sh-sav-cheek { fill: rgba(255,202,194,.64); }
.sh-savorito.is-open .sh-sav-leaf-2 { animation: sh-sav-leaf-wave 2.8s ease-in-out infinite; transform-box: fill-box; transform-origin: 50% 100%; }

@keyframes sh-sav-message-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@keyframes sh-sav-leaf-wave { 0%,100% { transform: rotate(0deg); } 45% { transform: rotate(6deg); } 65% { transform: rotate(-3deg); } }

@media (max-width: 600px) {
    .sh-savorito { right: 14px; bottom: 14px; }
    .sh-savorito-panel { width: calc(100vw - 28px); max-height: min(620px, calc(100vh - 28px)); border-radius: 24px; }
    .sh-savorito-launcher { width: 146px; }
}

/* Savorito 0.11.4 — entrada más visible + conversación pausada */

.sh-savorito-greeter {
    position: fixed;
    right: 22px;
    bottom: 18px;
    width: 190px;
    height: 188px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(380px,0,0);
    z-index: 100005;
    will-change: transform, opacity;
}
.sh-savorito-greeter-character {
    position: absolute;
    right: 18px;
    bottom: 0;
    width: 112px;
    height: 142px;
    display: grid;
    place-items: end center;
    transform-origin: 50% 100%;
    will-change: transform;
}
.sh-savorito-greeter-character svg { width: 104px; height: 132px; overflow: visible; filter: drop-shadow(0 12px 16px rgba(27,55,48,.14)); }
.sh-savorito-greeter-bubble {
    position: absolute;
    right: 84px;
    top: 3px;
    min-width: 76px;
    padding: 9px 12px;
    border: 1px solid var(--sh-sav-line);
    border-radius: 17px 17px 5px 17px;
    background: rgba(255,255,255,.99);
    box-shadow: 0 10px 26px rgba(27,55,48,.16);
    font-size: 13px;
    font-weight: 800;
    color: var(--sh-sav-ink);
    opacity: 0;
    transform: translateY(10px) scale(.9);
}
.sh-savorito.has-js:not(.is-ready):not(.is-open) .sh-savorito-launcher { opacity: 0; pointer-events: none; transform: translateY(18px) scale(.94); }
.sh-savorito.has-js.is-sequence-started .sh-savorito-launcher { opacity: 0; pointer-events: none; transform: translateY(18px) scale(.94); }
.sh-savorito.is-greeting .sh-savorito-greeter {
    opacity: 1;
    visibility: visible;
    animation: sh-sav-walk-in 3.35s cubic-bezier(.15,.72,.22,1) both;
}
.sh-savorito.is-greeting .sh-savorito-greeter-character {
    animation: sh-sav-body-walk .42s ease-in-out 8;
}
.sh-savorito.is-greeting .sh-sav-leg-left,
.sh-savorito.is-greeting .sh-sav-leg-right,
.sh-savorito.is-greeting .sh-sav-arm-left,
.sh-savorito.is-greeting .sh-sav-arm-right {
    transform-box: fill-box;
}
.sh-savorito.is-greeting .sh-sav-leg-left { animation: sh-sav-leg-left .42s ease-in-out 8; transform-origin: 50% 5%; }
.sh-savorito.is-greeting .sh-sav-leg-right { animation: sh-sav-leg-right .42s ease-in-out 8; transform-origin: 50% 5%; }
.sh-savorito.is-greeting .sh-sav-arm-left { animation: sh-sav-arm-left-walk .42s ease-in-out 8; transform-origin: 90% 50%; }
.sh-savorito.is-greeting .sh-sav-arm-right { animation: sh-sav-arm-right-walk .42s ease-in-out 8; transform-origin: 10% 50%; }
.sh-savorito.is-waving .sh-savorito-greeter-bubble {
    animation: sh-sav-bubble-pop .4s cubic-bezier(.2,.9,.3,1.25) forwards;
}
.sh-savorito.is-waving .sh-sav-arm-right {
    animation: sh-sav-arm-wave .34s ease-in-out 5;
    transform-box: fill-box;
    transform-origin: 10% 90%;
}
.sh-savorito.is-waving .sh-savorito-greeter-character {
    animation: sh-sav-friendly-bob .85s ease-in-out 2;
}
.sh-savorito.is-greeting-finished .sh-savorito-greeter {
    animation: none;
    opacity: 0;
    transform: translate3d(0,10px,0) scale(.92);
    transition: opacity .38s ease, transform .38s ease;
}

.sh-sav-limbs { fill: none; stroke: #253b34; stroke-width: 3.1; stroke-linecap: round; }
.sh-savorito-launcher .sh-sav-limbs,
.sh-savorito-header .sh-sav-limbs { display: none; }

.sh-savorito-welcome[hidden] { display: none !important; }
.sh-savorito-welcome.is-revealed { animation: sh-sav-message-in .32s ease both; }
.sh-savorito.is-intro-typing .sh-savorito-quick,
.sh-savorito.is-reply-typing .sh-savorito-quick { opacity: .48; pointer-events: none; }

.sh-savorito-typing {
    width: fit-content;
    min-width: 68px;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 13px 15px;
}
.sh-savorito-typing > span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #6f837b;
    animation: sh-sav-typing-dot .9s ease-in-out infinite;
}
.sh-savorito-typing > span:nth-child(2) { animation-delay: .14s; }
.sh-savorito-typing > span:nth-child(3) { animation-delay: .28s; }
.sh-savorito-typing em {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

@keyframes sh-sav-walk-in {
    0%   { transform: translate3d(380px,0,0); opacity: 0; }
    8%   { opacity: 1; }
    22%  { transform: translate3d(290px,-2px,0); }
    44%  { transform: translate3d(200px,0,0); }
    66%  { transform: translate3d(110px,-2px,0); }
    88%  { transform: translate3d(18px,0,0); }
    100% { transform: translate3d(0,0,0); opacity: 1; }
}
@keyframes sh-sav-body-walk {
    0%,100% { transform: translateY(0) rotate(0deg); }
    25% { transform: translateY(-8px) rotate(-4deg); }
    50% { transform: translateY(0) rotate(0deg); }
    75% { transform: translateY(-7px) rotate(4deg); }
}
@keyframes sh-sav-leg-left {
    0%,100% { transform: rotate(-8deg) translateY(0); }
    50% { transform: rotate(30deg) translate(3px,-1px); }
}
@keyframes sh-sav-leg-right {
    0%,100% { transform: rotate(8deg) translateY(0); }
    50% { transform: rotate(-30deg) translate(-3px,-1px); }
}
@keyframes sh-sav-arm-left-walk {
    0%,100% { transform: rotate(9deg); }
    50% { transform: rotate(-18deg); }
}
@keyframes sh-sav-arm-right-walk {
    0%,100% { transform: rotate(-9deg); }
    50% { transform: rotate(18deg); }
}
@keyframes sh-sav-arm-wave {
    0%,100% { transform: rotate(-4deg); }
    50% { transform: rotate(-42deg) translateY(-3px); }
}
@keyframes sh-sav-friendly-bob {
    0%,100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-5px) rotate(-2deg); }
}
@keyframes sh-sav-bubble-pop {
    from { opacity: 0; transform: translateY(10px) scale(.9); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes sh-sav-typing-dot {
    0%,60%,100% { transform: translateY(0); opacity: .45; }
    30% { transform: translateY(-5px); opacity: 1; }
}

@media (max-width: 600px) {
    .sh-savorito-greeter { right: 4px; bottom: 12px; width: 170px; }
    .sh-savorito-greeter-character svg { width: 94px; height: 120px; }
}

/* Public pages respect the visitor's reduced-motion preference. The explicit
   Savorito Lab adds .sh-savorito-force-motion so the animation can be reviewed
   even when Windows/browser motion effects are disabled. */
@media (prefers-reduced-motion: reduce) {
    .sh-savorito:not(.sh-savorito-force-motion) .sh-savorito-launcher,
    .sh-savorito:not(.sh-savorito-force-motion) .sh-savorito-panel,
    .sh-savorito:not(.sh-savorito-force-motion) .sh-savorito-message,
    .sh-savorito:not(.sh-savorito-force-motion) * {
        animation: none !important;
        transition: none !important;
    }
    .sh-savorito:not(.sh-savorito-force-motion) .sh-savorito-greeter { display: none !important; }
    .sh-savorito:not(.sh-savorito-force-motion) .sh-savorito-typing > span { animation: none !important; opacity: .7; }
}

/* Savorito 0.11.5 — motion fiable por Web Animations API + responsive */
.sh-savorito.is-greeting .sh-savorito-greeter {
    visibility: visible;
    opacity: 1;
    animation: none;
}
.sh-savorito.is-greeting .sh-savorito-greeter-character,
.sh-savorito.is-greeting .sh-sav-leg-left,
.sh-savorito.is-greeting .sh-sav-leg-right,
.sh-savorito.is-greeting .sh-sav-arm-left,
.sh-savorito.is-greeting .sh-sav-arm-right {
    animation: none;
}
.sh-savorito.is-waving .sh-savorito-greeter-bubble,
.sh-savorito.is-waving .sh-sav-arm-right,
.sh-savorito.is-waving .sh-savorito-greeter-character {
    animation: none;
}
.sh-savorito.is-greeting-finished .sh-savorito-greeter {
    transition: none;
}

/* CSS-only fallback for browsers without Element.animate(). */
.sh-savorito.is-greeting.is-css-greeting .sh-savorito-greeter {
    animation: sh-sav-walk-in-visible 3.4s linear both;
}
.sh-savorito.is-greeting.is-css-greeting .sh-savorito-greeter-character {
    animation: sh-sav-body-walk .42s ease-in-out 8;
}
.sh-savorito.is-greeting.is-css-greeting .sh-sav-leg-left { animation: sh-sav-leg-left .42s ease-in-out 8; }
.sh-savorito.is-greeting.is-css-greeting .sh-sav-leg-right { animation: sh-sav-leg-right .42s ease-in-out 8; }
.sh-savorito.is-greeting.is-css-greeting .sh-sav-arm-left { animation: sh-sav-arm-left-walk .42s ease-in-out 8; }
.sh-savorito.is-greeting.is-css-greeting .sh-sav-arm-right { animation: sh-sav-arm-right-walk .42s ease-in-out 8; }
.sh-savorito.is-greeting.is-css-greeting.is-waving .sh-savorito-greeter-bubble { animation: sh-sav-bubble-pop .4s cubic-bezier(.2,.9,.3,1.25) forwards; }
.sh-savorito.is-greeting.is-css-greeting.is-waving .sh-sav-arm-right { animation: sh-sav-arm-wave .34s ease-in-out 5; }

@keyframes sh-sav-walk-in-visible {
    0%   { transform: translate3d(175px,0,0); opacity: .35; }
    15%  { transform: translate3d(92px,-2px,0); opacity: 1; }
    42%  { transform: translate3d(-30px,0,0); opacity: 1; }
    70%  { transform: translate3d(-118px,-2px,0); opacity: 1; }
    100% { transform: translate3d(-220px,0,0); opacity: 1; }
}

.sh-savorito-replay {
    align-self: center;
    margin: 0 auto 14px;
    border: 1px solid var(--sh-sav-line);
    border-radius: 999px;
    background: #fff;
    color: var(--sh-sav-green);
    padding: 7px 12px;
    font: inherit;
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
}
.sh-savorito-replay:hover { background: var(--sh-sav-green-soft); }

@media (max-width: 900px) {
    .sh-savorito { right: 18px; bottom: 18px; }
    .sh-savorito-panel { width: min(376px, calc(100vw - 32px)); }
    .sh-savorito-greeter { right: 8px; bottom: 14px; }
}

@media (max-width: 600px) {
    .sh-savorito { right: 12px; bottom: 12px; }
    .sh-savorito-panel {
        width: calc(100vw - 24px);
        max-height: calc(100dvh - 24px);
        border-radius: 22px;
    }
    .sh-savorito-header { grid-template-columns: 46px 1fr 34px; padding: 13px 13px 12px; }
    .sh-savorito-header-avatar { width: 46px; height: 46px; border-radius: 17px; }
    .sh-savorito-header-avatar svg { width: 38px; height: 43px; }
    .sh-savorito-messages { min-height: 160px; max-height: min(330px, 46dvh); padding: 15px 14px 7px; }
    .sh-savorito-message { max-width: 91%; font-size: 13px; }
    .sh-savorito-quick { padding: 10px 12px 7px; }
    .sh-savorito-quick button { padding: 8px 10px; }
    .sh-savorito-compose { padding-inline: 12px; }
    .sh-savorito-greeter { right: 0; bottom: 8px; width: 162px; height: 172px; }
    .sh-savorito-greeter-character { right: 12px; width: 96px; height: 126px; }
    .sh-savorito-greeter-character svg { width: 88px; height: 112px; }
    .sh-savorito-greeter-bubble { right: 72px; top: 9px; font-size: 12px; padding: 8px 10px; }
}


/* =========================================================
   0.19.0 · SAVORITO V1 · ASISTENTE DE VENTAS
========================================================= */
.sh-savorito-launcher-copy strong,.sh-savorito-header strong,.sh-savorito-message strong{font-weight:400}
.sh-savorito-inline-cta{font-family:"Sniglet",system-ui,sans-serif;font-weight:400}
.sh-savorito-quick{padding-bottom:13px}
.sh-savorito-quick button{font-family:"Sniglet",system-ui,sans-serif;font-weight:400}
.sh-savorito-message{font-size:13px;line-height:1.46}
.sh-savorito-message ul{padding-left:17px}
.sh-savorito-message li+li{margin-top:3px}
.sh-savorito-prototype-note,.sh-savorito-compose{display:none!important}

[data-savorito-buy-target].is-savorito-highlighted{outline:3px solid rgba(239,136,71,.25)!important;outline-offset:5px;animation:sh-sav-target-pulse .75s ease 2}
@keyframes sh-sav-target-pulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}

.sh-savorito-preview-modal[hidden]{display:none!important}
.sh-savorito-preview-modal{position:fixed;inset:0;z-index:100120;display:grid;place-items:center;padding:22px;font-family:"Sniglet",system-ui,sans-serif}
.sh-savorito-preview-backdrop{position:absolute;inset:0;border:0;background:rgba(17,42,35,.62);backdrop-filter:blur(5px);cursor:pointer}
.sh-savorito-preview-dialog{position:relative;z-index:1;width:min(760px,calc(100vw - 28px));max-height:calc(100dvh - 34px);overflow:auto;border:1px solid rgba(255,255,255,.38);border-radius:26px;background:#fffdf8;box-shadow:0 30px 90px rgba(14,38,31,.34)}
.sh-savorito-preview-dialog>header{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border-bottom:1px solid rgba(31,66,56,.1);background:rgba(255,253,248,.96);backdrop-filter:blur(10px)}
.sh-savorito-preview-dialog>header>div{display:grid;gap:2px}.sh-savorito-preview-dialog>header span{font-size:11px;color:#8d6a54;text-transform:uppercase;letter-spacing:.07em}.sh-savorito-preview-dialog>header strong{font-size:18px;font-weight:400;color:#17372f}
.sh-savorito-preview-dialog>header button{width:38px;height:38px;border:1px solid rgba(31,66,56,.12);border-radius:50%;background:#fff;color:#53655f;font:400 26px/1 "Sniglet",sans-serif;cursor:pointer}
.sh-savorito-preview-content{padding:22px;display:grid;place-items:center}.sh-savorito-preview-content .sh-sales-book{width:100%;margin-inline:auto}.sh-savorito-preview-content .sh-sales-book-controls{margin-top:14px}
html.sh-savorito-modal-open,html.sh-savorito-modal-open body{overflow:hidden}
@media(max-width:600px){.sh-savorito-preview-modal{padding:10px}.sh-savorito-preview-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:20px}.sh-savorito-preview-dialog>header{padding:13px 14px}.sh-savorito-preview-dialog>header strong{font-size:15px}.sh-savorito-preview-content{padding:14px 0 18px;overflow:hidden}}


/* =========================================================
   0.19.1 · SAVORITO MÁS HUMANO + CHECKOUT SIN SOLAPAMIENTOS
========================================================= */
/* Stripe/Link puede mostrar un control flotante propio en el extremo inferior.
   Savorito conserva su lugar, pero en el paso de tarjeta sube lo suficiente
   para que ambos controles sean utilizables. */
.sh-savorito-checkout.sh-savorito-stage-payment { bottom: 96px; }
.sh-savorito-checkout.sh-savorito-stage-payment .sh-savorito-greeter { bottom: 92px; }
.sh-savorito-greeter-bubble { font-weight: 400; }
.sh-savorito-message strong { font-weight: 400; }
@media (max-width: 600px) {
    .sh-savorito-checkout.sh-savorito-stage-payment { bottom: 88px; }
    .sh-savorito-checkout.sh-savorito-stage-payment .sh-savorito-greeter { bottom: 82px; }
}

/* =========================================================
   0.19.2 · SAVORITO POR ETAPAS + ORDER BUMP CONTEXTUAL
========================================================= */
.sh-savorito-quick .sh-savorito-quick-bundle {
    border-color: rgba(176, 128, 35, .28);
    background: linear-gradient(180deg, #fff7d8 0%, #f6e5ac 100%);
    color: #6d4b12;
    box-shadow: 0 5px 14px rgba(151, 108, 30, .10);
}
.sh-savorito-quick .sh-savorito-quick-bundle:hover {
    border-color: rgba(176, 128, 35, .42);
    background: #f7e7b2;
    color: #5f410f;
}

/* Checkout: entrada corta y distinta. No repite la caminata/presentación
   completa del Recetario Premium. */
.sh-savorito.is-checkout-arrival .sh-savorito-greeter,
.sh-savorito.is-bump-celebrating .sh-savorito-greeter {
    visibility: visible;
    opacity: 1;
}
.sh-savorito.is-checkout-arrival .sh-savorito-greeter-bubble,
.sh-savorito.is-bump-celebrating .sh-savorito-greeter-bubble {
    font-weight: 400;
}

/* CSS fallback cuando Web Animations API no está disponible. */
.sh-savorito.is-checkout-arrival.is-css-context-pop .sh-savorito-greeter {
    animation: sh-sav-checkout-pop 1.35s cubic-bezier(.18,.86,.24,1.1) both;
}
.sh-savorito.is-bump-celebrating.is-css-context-pop .sh-savorito-greeter {
    animation: sh-sav-bump-pop 1.15s cubic-bezier(.16,.9,.26,1.2) both;
}
@keyframes sh-sav-checkout-pop {
    0% { transform: translate3d(0,110px,0) scale(.8); opacity: 0; }
    54% { transform: translate3d(0,-8px,0) scale(1.04); opacity: 1; }
    78% { transform: translate3d(0,0,0) scale(1); opacity: 1; }
    100% { transform: translate3d(0,28px,0) scale(.92); opacity: 0; }
}
@keyframes sh-sav-bump-pop {
    0% { transform: translate3d(0,105px,0) scale(.76); opacity: 0; }
    52% { transform: translate3d(0,-15px,0) scale(1.08); opacity: 1; }
    78% { transform: translate3d(0,0,0) scale(1); opacity: 1; }
    100% { transform: translate3d(0,22px,0) scale(.91); opacity: 0; }
}

/* =========================================================
   0.19.3 · COLECCIÓN SAVORIA PREMIUM
   Momento visual exclusivo al activar el Order Bump.
========================================================= */
.sh-savorito-quick .sh-savorito-quick-bundle {
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(171, 123, 33, .48);
    background: linear-gradient(135deg, #fff9e9 0%, #f4df9f 46%, #e9c86f 100%);
    color: #5a3d0c;
    box-shadow: 0 8px 22px rgba(137, 94, 19, .18), inset 0 1px 0 rgba(255,255,255,.78);
    font-weight: 400;
}
.sh-savorito-quick .sh-savorito-quick-bundle::after {
    content: "";
    position: absolute;
    top: -55%;
    left: -35%;
    width: 28%;
    height: 210%;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.72), transparent);
    transform: rotate(18deg);
    animation: sh-sav-premium-shine 2.8s ease-in-out 1 .35s;
}
.sh-savorito-quick .sh-savorito-quick-bundle:hover {
    border-color: rgba(150, 103, 21, .62);
    background: linear-gradient(135deg, #fff8df 0%, #f1d98f 48%, #e5c15e 100%);
    color: #4d340a;
    transform: translateY(-2px);
    box-shadow: 0 11px 26px rgba(137, 94, 19, .23), inset 0 1px 0 rgba(255,255,255,.82);
}
.sh-savorito.is-bump-celebrating .sh-savorito-greeter::before,
.sh-savorito.is-bump-celebrating .sh-savorito-greeter::after {
    position: absolute;
    z-index: 4;
    color: #d7ad43;
    text-shadow: 0 3px 12px rgba(158, 111, 25, .28);
    opacity: 0;
    pointer-events: none;
}
.sh-savorito.is-bump-celebrating .sh-savorito-greeter::before {
    content: "✦";
    right: 6px;
    top: 30px;
    font-size: 27px;
    animation: sh-sav-premium-spark 1.05s ease-out .12s both;
}
.sh-savorito.is-bump-celebrating .sh-savorito-greeter::after {
    content: "✧";
    right: 70px;
    bottom: 28px;
    font-size: 22px;
    animation: sh-sav-premium-spark 1.05s ease-out .32s both;
}
.sh-savorito.is-bump-celebrating .sh-savorito-greeter-character {
    filter: drop-shadow(0 0 13px rgba(216, 174, 65, .28));
}
@keyframes sh-sav-premium-shine {
    0% { left: -35%; opacity: 0; }
    18% { opacity: 1; }
    62% { opacity: .9; }
    100% { left: 120%; opacity: 0; }
}
@keyframes sh-sav-premium-spark {
    0% { opacity: 0; transform: translateY(8px) scale(.55) rotate(-16deg); }
    42% { opacity: 1; transform: translateY(-4px) scale(1.18) rotate(7deg); }
    100% { opacity: 0; transform: translateY(-14px) scale(.86) rotate(14deg); }
}
.sh-savorito-quick .sh-savorito-quick-bundle {
    flex: 1 0 100%;
    justify-content: center;
    text-align: center;
    padding: 10px 14px;
    font-size: 12.5px;
}


/* =========================================================
   0.19.4 · COMPRA MÁS CLARA + CTA DIRECTO EN SAVORITO
========================================================= */
.sh-savorito-purchase-checklist {
    list-style: none !important;
    margin: 9px 0 0 !important;
    padding: 0 !important;
    display: grid;
    gap: 6px;
}
.sh-savorito-purchase-checklist li {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr);
    align-items: start;
    gap: 7px;
    margin: 0 !important;
}
.sh-savorito-purchase-check {
    display: inline-block;
    line-height: 1.3;
    font-size: 14px;
}
.sh-savorito-inline-cta {
    margin-top: 11px;
}
.sh-savorito-inline-cta a {
    width: 100%;
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 14px;
    border-radius: 999px;
    background: #ef8647;
    color: #fff !important;
    font-family: "Sniglet", system-ui, sans-serif;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.2;
    text-align: center;
    text-decoration: none !important;
    box-shadow: 0 7px 18px rgba(212, 101, 48, .20);
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.sh-savorito-inline-cta a:hover,
.sh-savorito-inline-cta a:focus-visible {
    background: #e8783c;
    transform: translateY(-1px);
    box-shadow: 0 9px 22px rgba(212, 101, 48, .25);
}


/* =========================================================
   0.19.5 · CTA NARANJA LIMPIO + AGRADECIMIENTO POST-COMPRA
========================================================= */
.sh-savorito-inline-cta {
    display: flex;
    justify-content: flex-start;
    margin-top: 11px;
    padding: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: inherit !important;
}
.sh-savorito-inline-cta a {
    width: auto;
    min-width: 0;
    padding-inline: 17px;
}

/* En compra confirmada no existe chat ni launcher: sólo un agradecimiento. */
.sh-savorito-checkout.sh-savorito-stage-success {
    right: 22px;
    bottom: 22px;
    width: min(430px, calc(100vw - 28px));
    z-index: 100115;
    pointer-events: none;
}
.sh-savorito-success-thanks {
    position: relative;
    display: grid;
    grid-template-columns: 88px minmax(0,1fr);
    gap: 12px;
    align-items: end;
    opacity: 0;
    transform: translateY(22px) scale(.97);
    pointer-events: auto;
}
.sh-savorito.is-success-thanking .sh-savorito-success-thanks {
    animation: sh-sav-success-thanks-in .52s ease-out both;
}
.sh-savorito.is-success-thanks-leaving .sh-savorito-success-thanks {
    animation: sh-sav-success-thanks-out .32s ease-in both;
}
.sh-savorito-success-character {
    display: grid;
    place-items: end center;
    width: 88px;
    filter: drop-shadow(0 10px 18px rgba(29,64,54,.16));
}
.sh-savorito-success-character svg { width: 76px; height: auto; overflow: visible; }
.sh-savorito-success-bubble {
    position: relative;
    padding: 15px 39px 15px 16px;
    border: 1px solid rgba(31,66,56,.12);
    border-radius: 18px 18px 18px 7px;
    background: #fffdf8;
    color: var(--sh-sav-ink);
    box-shadow: 0 14px 36px rgba(26,55,47,.13);
    font-family: "Sniglet",system-ui,sans-serif;
    font-size: 13px;
    line-height: 1.46;
}
.sh-savorito-success-bubble strong { display:block; margin-bottom:6px; font-weight:400; font-size:15px; }
.sh-savorito-success-bubble p { margin:0; }
.sh-savorito-success-bubble p + p { margin-top:6px; color:var(--sh-sav-muted); }
.sh-savorito-success-close {
    position: absolute;
    z-index: 3;
    right: 8px;
    top: 8px;
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 50%;
    background: rgba(244,241,234,.92);
    color: #6e7773;
    font: 400 20px/1 "Sniglet",system-ui,sans-serif;
    cursor: pointer;
}
.sh-savorito-success-thanks .sh-sav-arm-right {
    transform-box: fill-box;
    transform-origin: left center;
    animation: sh-sav-success-wave .72s ease-in-out 3 .48s;
}
@keyframes sh-sav-success-thanks-in { from { opacity:0; transform:translateY(22px) scale(.97); } to { opacity:1; transform:translateY(0) scale(1); } }
@keyframes sh-sav-success-thanks-out { from { opacity:1; transform:translateY(0) scale(1); } to { opacity:0; transform:translateY(16px) scale(.97); } }
@keyframes sh-sav-success-wave { 0%,100% { transform:rotate(0deg); } 45% { transform:rotate(-24deg); } 70% { transform:rotate(12deg); } }
@media(max-width:600px){
    .sh-savorito-checkout.sh-savorito-stage-success{right:14px;bottom:14px;width:calc(100vw - 28px)}
    .sh-savorito-success-thanks{grid-template-columns:66px minmax(0,1fr);gap:8px}
    .sh-savorito-success-character{width:66px}.sh-savorito-success-character svg{width:60px}
    .sh-savorito-success-bubble{padding:13px 36px 13px 14px;font-size:12.5px}
    .sh-savorito-success-bubble strong{font-size:14px}
}
@media(prefers-reduced-motion:reduce){
    .sh-savorito.is-success-thanking .sh-savorito-success-thanks,.sh-savorito.is-success-thanks-leaving .sh-savorito-success-thanks,.sh-savorito-success-thanks .sh-sav-arm-right{animation:none!important}
    .sh-savorito.is-success-thanking .sh-savorito-success-thanks{opacity:1;transform:none}
}


/* =========================================================
   0.19.6 · LANZAMIENTO PÚBLICO + RESPONSIVE MÓVIL/TABLET
========================================================= */
/* Progressive fallback: if JavaScript is blocked or an old cached script fails,
   the launcher remains usable instead of disappearing completely. Once JS adds
   .has-js, the normal animation/state machine takes control. */
.sh-savorito:not([hidden]) {
    display: block !important;
    visibility: visible !important;
    isolation: isolate;
    overflow: visible !important;
    max-width: calc(100vw - 16px);
    right: 12px;
    bottom: 12px;
    right: max(12px, env(safe-area-inset-right, 0px));
    bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(12px, env(safe-area-inset-bottom, 0px)));
    z-index: 2147482000;
}
.sh-savorito.has-js:not(.is-ready):not(.is-open):not(.is-sequence-started) .sh-savorito-launcher {
    opacity: 0;
    pointer-events: none;
    transform: translateY(18px) scale(.94);
}
.sh-savorito-panel {
    max-width: calc(100vw - 16px);
    max-height: min(610px, calc(var(--sh-sav-visible-height, 100dvh) - 24px));
}

/* Payment keeps a clear lane above Stripe/Link and mobile browser chrome. */
.sh-savorito-checkout.sh-savorito-stage-payment {
    bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(88px, calc(env(safe-area-inset-bottom, 0px) + 76px)));
}
.sh-savorito-checkout.sh-savorito-stage-payment .sh-savorito-greeter {
    bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(82px, calc(env(safe-area-inset-bottom, 0px) + 70px)));
}

/* Tablet: avoid edge collisions and keep the panel completely inside the visual viewport. */
@media (min-width: 601px) and (max-width: 1024px) {
    .sh-savorito:not([hidden]) {
        right: max(18px, env(safe-area-inset-right, 0px));
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(18px, env(safe-area-inset-bottom, 0px)));
    }
    .sh-savorito-panel {
        width: min(390px, calc(100vw - 36px));
        max-height: min(640px, calc(var(--sh-sav-visible-height, 100dvh) - 36px));
    }
    .sh-savorito-greeter { right: 4px; }
    .sh-savorito-checkout.sh-savorito-stage-payment {
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(94px, calc(env(safe-area-inset-bottom, 0px) + 82px)));
    }
}

/* Phone: larger touch target, full usable width, safe-area aware and never below browser chrome. */
@media (max-width: 600px) {
    .sh-savorito:not([hidden]) {
        right: max(8px, env(safe-area-inset-right, 0px));
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(10px, env(safe-area-inset-bottom, 0px)));
        max-width: calc(100vw - 16px);
    }
    .sh-savorito-launcher {
        width: 148px;
        min-height: 58px;
        touch-action: manipulation;
    }
    .sh-savorito-panel {
        right: 0;
        bottom: 0;
        width: calc(100vw - 16px);
        max-width: calc(100vw - 16px);
        max-height: calc(var(--sh-sav-visible-height, 100dvh) - 16px);
        border-radius: 20px;
    }
    .sh-savorito-messages {
        max-height: min(330px, calc(var(--sh-sav-visible-height, 100dvh) * .46));
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    .sh-savorito-greeter {
        right: -2px;
        bottom: max(6px, env(safe-area-inset-bottom, 0px));
        max-width: calc(100vw - 12px);
    }
    .sh-savorito-checkout.sh-savorito-stage-payment {
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(88px, calc(env(safe-area-inset-bottom, 0px) + 76px)));
    }
    .sh-savorito-checkout.sh-savorito-stage-payment .sh-savorito-greeter {
        bottom: max(76px, calc(env(safe-area-inset-bottom, 0px) + 66px));
    }
}

/* Purchase success stays on screen until the buyer closes it manually. */
.sh-savorito-checkout.sh-savorito-stage-success:not([hidden]) {
    right: max(12px, env(safe-area-inset-right, 0px));
    bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(12px, env(safe-area-inset-bottom, 0px)));
    width: min(430px, calc(100vw - 24px));
}
@media (max-width: 600px) {
    .sh-savorito-checkout.sh-savorito-stage-success:not([hidden]) {
        right: max(8px, env(safe-area-inset-right, 0px));
        width: calc(100vw - 16px);
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(10px, env(safe-area-inset-bottom, 0px)));
    }
    .sh-savorito-success-thanks {
        grid-template-columns: 58px minmax(0,1fr);
        gap: 7px;
        align-items: end;
    }
    .sh-savorito-success-character { width: 58px; }
    .sh-savorito-success-character svg { width: 54px; }
    .sh-savorito-success-bubble {
        padding: 12px 34px 12px 13px;
        font-size: 12px;
        line-height: 1.42;
    }
}

/* =========================================================
   0.19.7 · SAVORITO MOBILE COMPACT MODE
   The phone experience stays readable without covering the CTA
   or behaving like a desktop panel squeezed into a small screen.
========================================================= */
@media (max-width: 600px) {
    .sh-savorito:not([hidden]) {
        right: max(10px, env(safe-area-inset-right, 0px));
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(10px, env(safe-area-inset-bottom, 0px)));
        max-width: calc(100vw - 20px);
    }

    /* Compact launcher: still recognizable, but it doesn't own the page. */
    .sh-savorito-launcher {
        width: 116px;
        min-height: 50px;
        gap: 7px;
        padding: 6px 10px 6px 6px;
        border-radius: 18px;
    }
    .sh-savorito-launcher-avatar {
        width: 38px;
        height: 38px;
        flex-basis: 38px;
        border-radius: 14px;
    }
    .sh-savorito-launcher-avatar svg { width: 31px; height: 35px; }
    .sh-savorito-launcher-copy strong { font-size: 12.5px; font-weight: 400; }
    .sh-savorito-launcher-copy span { margin-top: 2px; font-size: 9.5px; }

    /* A right-side chat card rather than a nearly full-screen sheet. */
    .sh-savorito-panel {
        right: 0;
        bottom: 0;
        width: min(332px, calc(100vw - 52px));
        max-width: min(332px, calc(100vw - 52px));
        max-height: min(430px, calc(var(--sh-sav-visible-height, 100dvh) * .52));
        border-radius: 19px;
        transform-origin: 100% 100%;
    }

    .sh-savorito-header {
        grid-template-columns: 42px minmax(0,1fr) 30px;
        gap: 8px;
        padding: 10px 10px 9px;
    }
    .sh-savorito-header-avatar {
        width: 42px;
        height: 42px;
        border-radius: 15px;
    }
    .sh-savorito-header-avatar svg { width: 34px; height: 38px; }
    .sh-savorito-header strong { font-size: 14px; font-weight: 400; }
    .sh-savorito-header span { margin-top: 2px; gap: 5px; font-size: 10px; }
    .sh-savorito-close { width: 30px; height: 30px; border-radius: 10px; font-size: 20px; }

    /* The conversation owns the remaining height and scrolls internally. */
    .sh-savorito-messages {
        flex: 1 1 auto;
        min-height: 0;
        max-height: none;
        overflow-y: auto;
        padding: 11px 10px 5px;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    .sh-savorito-message {
        max-width: 94%;
        margin-bottom: 8px;
        padding: 9px 10px;
        border-radius: 14px;
        font-size: 12px;
        line-height: 1.42;
    }
    .sh-savorito-message p + p { margin-top: 5px; }
    .sh-savorito-message ul { margin-top: 6px; padding-left: 16px; }

    /* Quick actions stay reachable without growing the whole panel. */
    .sh-savorito-quick {
        flex: 0 0 auto;
        gap: 5px;
        max-height: 104px;
        overflow-y: auto;
        padding: 7px 9px 9px;
        border-top: 1px solid rgba(31,66,56,.07);
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    .sh-savorito-quick button {
        padding: 6px 8px;
        font-size: 10.5px;
        line-height: 1.2;
    }
    .sh-savorito-quick .sh-savorito-quick-bundle {
        width: 100%;
        flex-basis: 100%;
        justify-content: center;
    }

    /* Prototype composer is not part of the sales assistant experience. */
    .sh-savorito-compose,
    .sh-savorito-prototype-note { display: none !important; }

    /* Payment needs more room above Stripe/Link but keeps the compact card. */
    .sh-savorito-checkout.sh-savorito-stage-payment {
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(78px, calc(env(safe-area-inset-bottom, 0px) + 68px)));
    }

    /* The post-purchase thank-you is a compact, persistent card, not a chat panel. */
    .sh-savorito-checkout.sh-savorito-stage-success:not([hidden]) {
        right: max(10px, env(safe-area-inset-right, 0px));
        width: min(342px, calc(100vw - 34px));
        bottom: calc(var(--sh-sav-viewport-bottom, 0px) + max(10px, env(safe-area-inset-bottom, 0px)));
    }
    .sh-savorito-success-thanks {
        grid-template-columns: 52px minmax(0,1fr);
        gap: 6px;
    }
    .sh-savorito-success-character { width: 52px; }
    .sh-savorito-success-character svg { width: 48px; }
    .sh-savorito-success-bubble {
        padding: 11px 32px 11px 12px;
        font-size: 11.5px;
        line-height: 1.4;
    }
    .sh-savorito-success-bubble strong { font-size: 13.5px; }
}

@media (max-width: 360px) {
    .sh-savorito-panel {
        width: calc(100vw - 34px);
        max-width: calc(100vw - 34px);
        max-height: min(410px, calc(var(--sh-sav-visible-height, 100dvh) * .54));
    }
}

/* CRM 0.20.0 · give the PageFlip sample full priority over Savorito. */
.sh-savorito.is-preview-suspended{opacity:0!important;visibility:hidden!important;pointer-events:none!important}

/* CRM 0.20.1 · PageFlip modal interaction hardening.
 * The modal shell may scroll, but gestures that begin on the book belong to
 * StPageFlip. This prevents Chrome/Android from handing the swipe to the outer
 * dialog and making the page turn feel delayed or stuck. */
.sh-savorito-preview-content .sh-sales-book .sh-book-stage,
.sh-savorito-preview-content .sh-sales-book .stf__parent,
.sh-savorito-preview-content .sh-sales-book .stf__wrapper {
    touch-action: none;
    overscroll-behavior: contain;
}
.sh-savorito-preview-content .sh-sales-book-controls button {
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
}
@media (max-width:600px){
    .sh-savorito-preview-dialog{overscroll-behavior:contain}
    .sh-savorito-preview-content{overscroll-behavior:contain}
}


/* =========================================================
   0.20.4 · SAVORITO PREVIEW GUIDE
   “Quiero verlo por dentro” uses the existing page preview instead of
   rendering a second book inside a modal.
========================================================= */
.sh-savorito-preview-companion[hidden]{display:none!important}
.sh-savorito-preview-companion{
    position:absolute;right:0;bottom:68px;width:238px;min-height:82px;
    display:grid;grid-template-columns:minmax(0,1fr) 62px;align-items:end;gap:4px;
    padding:0;border:0;background:transparent;color:var(--sh-sav-ink);font:inherit;
    cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;
    transform:translateY(10px) scale(.96);transform-origin:100% 100%;
    transition:opacity .24s ease,transform .32s cubic-bezier(.2,.86,.24,1.08),visibility .24s;
}
.sh-savorito-preview-companion.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0) scale(1)}
.sh-savorito-preview-companion-bubble{
    position:relative;align-self:start;margin-top:2px;padding:10px 12px;border:1px solid var(--sh-sav-line);
    border-radius:16px 16px 5px 16px;background:rgba(255,255,255,.98);box-shadow:0 12px 34px rgba(27,55,48,.16);
    text-align:left;line-height:1.28;
}
.sh-savorito-preview-companion-bubble::after{
    content:"";position:absolute;right:-8px;bottom:9px;width:14px;height:14px;background:#fff;
    border-right:1px solid var(--sh-sav-line);border-bottom:1px solid var(--sh-sav-line);transform:rotate(-45deg);
}
.sh-savorito-preview-companion-bubble strong{display:block;font-size:13px;font-weight:400}
.sh-savorito-preview-companion-bubble span{display:block;margin-top:3px;font-size:10.5px;color:var(--sh-sav-muted)}
.sh-savorito-preview-companion-character{position:relative;z-index:1;display:grid;place-items:end center;width:62px;height:78px}
.sh-savorito-preview-companion-character svg{width:56px;height:72px;filter:drop-shadow(0 8px 10px rgba(27,55,48,.12))}

[data-savoria-builder-section="premium-preview"],
[data-savoria-builder-section="landing-preview"]{scroll-margin-top:24px}
[data-savoria-builder-section="premium-preview"].is-savorito-preview-guided,
[data-savoria-builder-section="landing-preview"].is-savorito-preview-guided{
    animation:sh-savorito-preview-guide-pulse 1.55s ease-out 1;
}
@keyframes sh-savorito-preview-guide-pulse{
    0%{box-shadow:0 0 0 0 rgba(46,103,88,0)}
    26%{box-shadow:0 0 0 5px rgba(46,103,88,.10)}
    100%{box-shadow:0 0 0 0 rgba(46,103,88,0)}
}

@media(max-width:600px){
    .sh-savorito-preview-companion{bottom:56px;width:min(218px,calc(100vw - 30px));grid-template-columns:minmax(0,1fr) 54px;gap:2px}
    .sh-savorito-preview-companion-bubble{padding:9px 10px;border-radius:14px 14px 5px 14px}
    .sh-savorito-preview-companion-bubble strong{font-size:12px}
    .sh-savorito-preview-companion-bubble span{font-size:9.5px}
    .sh-savorito-preview-companion-character{width:54px;height:67px}
    .sh-savorito-preview-companion-character svg{width:49px;height:62px}
}
@media(prefers-reduced-motion:reduce){
    .sh-savorito-preview-companion{transition:none}
    [data-savoria-builder-section="premium-preview"].is-savorito-preview-guided,
    [data-savoria-builder-section="landing-preview"].is-savorito-preview-guided{animation:none}
}


/* =========================================================
   0.20.5 · SAVORITO MOBILE PEEK COMPANION
   On phones the preview companion hugs the chat corner instead of
   floating over the book controls. The speech bubble opens to the left,
   while only Savorito's upper body peeks over a small chat ledge.
========================================================= */
@media(max-width:600px){
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher{
        opacity:0!important;visibility:hidden;pointer-events:none!important;
        transform:translateY(8px) scale(.94)!important;
    }
    .sh-savorito-preview-companion{
        right:0;bottom:0;width:min(252px,calc(100vw - 18px));height:72px;min-height:0;
        display:block;overflow:visible;
        transform:translateY(8px) scale(.98);transform-origin:100% 100%;
    }
    .sh-savorito-preview-companion.is-visible{transform:translateY(0) scale(1)}
    .sh-savorito-preview-companion-bubble{
        position:absolute;right:70px;bottom:5px;width:min(174px,calc(100vw - 94px));
        margin:0;padding:8px 10px;border-radius:14px 14px 5px 14px;
        opacity:0;transform:translateX(8px) scale(.96);transform-origin:100% 70%;
        transition:opacity .22s ease .08s,transform .3s cubic-bezier(.2,.86,.24,1.08) .08s;
        box-shadow:0 10px 26px rgba(27,55,48,.14);
    }
    .sh-savorito-preview-companion.is-visible .sh-savorito-preview-companion-bubble{
        opacity:1;transform:translateX(0) scale(1);
    }
    .sh-savorito-preview-companion-bubble::after{right:-7px;bottom:11px;width:12px;height:12px}
    .sh-savorito-preview-companion-bubble strong{font-size:11.5px;line-height:1.15}
    .sh-savorito-preview-companion-bubble span{margin-top:2px;font-size:9px;line-height:1.22}

    .sh-savorito-preview-companion-character{
        position:absolute;right:3px;bottom:0;width:64px;height:69px;display:block;
        overflow:visible;z-index:2;transform:translateY(19px);
        transition:transform .42s cubic-bezier(.18,.9,.22,1.12);
    }
    .sh-savorito-preview-companion.is-visible .sh-savorito-preview-companion-character{
        transform:translateY(0);
    }
    .sh-savorito-preview-companion-character svg{
        position:absolute;left:5px;top:-1px;width:53px;height:66px;
        clip-path:inset(0 0 21% 0);overflow:visible;
        filter:drop-shadow(0 5px 7px rgba(27,55,48,.11));
        animation:sh-sav-preview-peek-bob 2.8s ease-in-out .55s infinite;
    }
    /* A tiny neutral edge suggests the chat box Savorito is holding onto;
       it is intentionally not a literal wall or extra card. */
    .sh-savorito-preview-companion-character::after{
        content:"";position:absolute;z-index:3;left:2px;right:2px;bottom:0;height:15px;
        border:1px solid var(--sh-sav-line);border-radius:10px 10px 7px 7px;
        background:rgba(255,255,255,.98);box-shadow:0 7px 18px rgba(27,55,48,.14);
    }
}
@keyframes sh-sav-preview-peek-bob{
    0%,100%{transform:translateY(0) rotate(0deg)}
    48%{transform:translateY(-2px) rotate(-1.2deg)}
    64%{transform:translateY(-1px) rotate(1deg)}
}
@media(max-width:360px){
    .sh-savorito-preview-companion{width:min(232px,calc(100vw - 14px))}
    .sh-savorito-preview-companion-bubble{right:66px;width:min(158px,calc(100vw - 86px));padding:7px 9px}
    .sh-savorito-preview-companion-bubble strong{font-size:11px}
    .sh-savorito-preview-companion-bubble span{font-size:8.6px}
    .sh-savorito-preview-companion-character{width:61px}
    .sh-savorito-preview-companion-character svg{width:50px}
}
@media(prefers-reduced-motion:reduce){
    .sh-savorito-preview-companion-character svg{animation:none!important}
    .sh-savorito-preview-companion-character,.sh-savorito-preview-companion-bubble{transition:none!important}
}


/* =========================================================
   0.20.6 · SAVORITO PEEK DESDE SU PROPIA VENTANA
   En móvil, el launcher compacto permanece visible. Savorito se levanta
   desde su propio avatar/ventana mostrando sólo cabeza, ojos, boca y brazos,
   mientras el globo "Aquí sigo" se despliega a la izquierda.
========================================================= */
@media(max-width:600px){
    /* 0.20.5 ocultaba el launcher; 0.20.6 lo conserva como base de la animación. */
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher{
        opacity:1!important;
        visibility:visible!important;
        pointer-events:auto!important;
        transform:translateY(0) scale(1)!important;
        overflow:visible;
    }

    /* El propio avatar del launcher es ahora el personaje que se asoma.
       Estos estilos sólo existen durante el gesto para no alterar el launcher normal. */
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar{
        position:relative;
        overflow:visible;
        isolation:isolate;
        background:linear-gradient(180deg,#fff7f4 0%,#fff2ef 100%);
    }
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg{
        position:absolute;
        left:50%;
        top:-23px;
        width:42px;
        height:52px;
        transform:translateX(-50%);
        transform-origin:50% 100%;
        /* Deja visible aproximadamente de la boca hacia arriba. */
        clip-path:inset(0 0 38% 0);
        filter:drop-shadow(0 4px 5px rgba(27,55,48,.12));
        animation:sh-sav-launcher-window-peek .58s cubic-bezier(.18,.9,.22,1.1) both,
                  sh-sav-launcher-window-bob 3.1s ease-in-out .72s infinite;
    }
    /* En el launcher normal los brazos están ocultos; al asomarse sí se muestran. */
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher .sh-sav-limbs{
        display:block;
    }

    /* El launcher conserva texto, fondo, borde y tamaño: es la "ventana" de la que sale. */
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-copy{
        position:relative;
        z-index:2;
    }

    /* En móvil el companion ya no dibuja un segundo Savorito. Sólo contiene el globo. */
    .sh-savorito-preview-companion{
        right:calc(100% + 8px);
        bottom:3px;
        width:min(178px,calc(100vw - 150px));
        height:auto;
        min-height:0;
        display:block;
        overflow:visible;
        transform:translateX(8px) scale(.97);
        transform-origin:100% 70%;
    }
    .sh-savorito-preview-companion.is-visible{
        transform:translateX(0) scale(1);
    }
    .sh-savorito-preview-companion-character{
        display:none!important;
    }
    .sh-savorito-preview-companion-bubble{
        position:relative;
        right:auto;
        bottom:auto;
        width:100%;
        margin:0;
        padding:8px 10px;
        border-radius:14px 14px 5px 14px;
        opacity:0;
        transform:translateX(8px) scale(.96);
        transform-origin:100% 70%;
        transition:opacity .22s ease .08s,transform .3s cubic-bezier(.2,.86,.24,1.08) .08s;
        box-shadow:0 10px 26px rgba(27,55,48,.14);
    }
    .sh-savorito-preview-companion.is-visible .sh-savorito-preview-companion-bubble{
        opacity:1;
        transform:translateX(0) scale(1);
    }
    .sh-savorito-preview-companion-bubble::after{
        right:-7px;
        bottom:12px;
        width:12px;
        height:12px;
    }
    .sh-savorito-preview-companion-bubble strong{
        font-size:11.5px;
        line-height:1.15;
    }
    .sh-savorito-preview-companion-bubble span{
        margin-top:2px;
        font-size:9px;
        line-height:1.22;
    }
}

@keyframes sh-sav-launcher-window-peek{
    0%{transform:translateX(-50%) translateY(18px) scale(.88);opacity:.35}
    68%{transform:translateX(-50%) translateY(-2px) scale(1.02);opacity:1}
    100%{transform:translateX(-50%) translateY(0) scale(1);opacity:1}
}
@keyframes sh-sav-launcher-window-bob{
    0%,100%{transform:translateX(-50%) translateY(0) rotate(0deg)}
    45%{transform:translateX(-50%) translateY(-1.5px) rotate(-.8deg)}
    62%{transform:translateX(-50%) translateY(-.5px) rotate(.7deg)}
}

@media(max-width:360px){
    .sh-savorito-preview-companion{
        right:calc(100% + 6px);
        width:min(158px,calc(100vw - 140px));
    }
    .sh-savorito-preview-companion-bubble{padding:7px 9px}
    .sh-savorito-preview-companion-bubble strong{font-size:11px}
    .sh-savorito-preview-companion-bubble span{font-size:8.6px}
}

@media(prefers-reduced-motion:reduce){
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg{
        animation:none!important;
        transition:none!important;
    }
}


/* =========================================================
   0.20.7 · SAVORITO UNIFIED WINDOW PEEK
   The launcher itself is the visual base on phone, tablet and desktop:
   Savorito rises centered from the launcher top edge, while the "Aquí sigo"
   note sits lower and slightly closer to the launcher as a soft white card.
========================================================= */
.sh-savorito.is-preview-companion-active .sh-savorito-launcher{
    position:relative;
    isolation:isolate;
    overflow:visible;
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
    transform:translateY(0) scale(1)!important;
    justify-content:center;
}

/* Keep the compact window intact, but center its copy while Savorito peeks. */
.sh-savorito.is-preview-companion-active .sh-savorito-launcher-copy{
    position:relative;
    z-index:5;
    width:100%;
    align-items:center;
    text-align:center;
}

/* The launcher avatar becomes the only character used by the peek state. */
.sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar{
    position:absolute;
    z-index:2;
    left:50%;
    top:-47px;
    width:58px;
    height:58px;
    margin:0;
    transform:translateX(-50%);
    overflow:visible;
    background:transparent;
    border-radius:0;
    pointer-events:none;
}
.sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg{
    position:absolute;
    left:50%;
    top:0;
    width:58px;
    height:70px;
    transform:translateX(-50%);
    transform-origin:50% 100%;
    clip-path:inset(0 0 38% 0);
    overflow:visible;
    filter:drop-shadow(0 5px 7px rgba(27,55,48,.12));
    animation:sh-sav-launcher-window-peek .58s cubic-bezier(.18,.9,.22,1.1) both,
              sh-sav-launcher-window-bob 3.1s ease-in-out .72s infinite;
}
.sh-savorito.is-preview-companion-active .sh-savorito-launcher .sh-sav-limbs{
    display:block;
}

/* A small top-edge mask makes the character read as coming from behind the
   same launcher rather than being pasted on top of it. */
.sh-savorito.is-preview-companion-active .sh-savorito-launcher::before{
    content:"";
    position:absolute;
    z-index:3;
    left:13px;
    right:13px;
    top:-1px;
    height:8px;
    border-radius:18px 18px 7px 7px;
    background:rgba(255,255,255,.97);
    border-top:1px solid rgba(31,66,56,.10);
    pointer-events:none;
}

/* No second Savorito is drawn in any viewport. The companion button only
   carries the text card; clicking either surface still restores the chat. */
.sh-savorito-preview-companion-character{
    display:none!important;
}
.sh-savorito-preview-companion{
    position:absolute;
    z-index:6;
    right:calc(100% - 20px);
    bottom:-6px;
    width:min(210px,calc(100vw - 190px));
    height:auto;
    min-height:0;
    display:block;
    overflow:visible;
    padding:0;
    border:0;
    background:transparent;
    transform:translateX(10px) translateY(4px) scale(.97);
    transform-origin:100% 70%;
}
.sh-savorito-preview-companion.is-visible{
    transform:translateX(0) translateY(0) scale(1);
}
.sh-savorito-preview-companion-bubble{
    position:relative;
    right:auto;
    bottom:auto;
    width:100%;
    margin:0;
    padding:10px 12px;
    border:1px solid rgba(31,66,56,.12);
    border-radius:15px;
    background:rgba(255,255,255,.90);
    -webkit-backdrop-filter:blur(7px);
    backdrop-filter:blur(7px);
    box-shadow:0 10px 28px rgba(27,55,48,.13);
    text-align:left;
    line-height:1.24;
    opacity:0;
    transform:translateX(8px) scale(.97);
    transform-origin:100% 70%;
    transition:opacity .22s ease .08s,transform .3s cubic-bezier(.2,.86,.24,1.08) .08s;
}
.sh-savorito-preview-companion.is-visible .sh-savorito-preview-companion-bubble{
    opacity:1;
    transform:translateX(0) scale(1);
}
/* 0.20.4 used a speech-tail; removing it avoids the broken white diamond
   seen over the page and makes this read as a proper soft text card. */
.sh-savorito-preview-companion-bubble::after{
    content:none!important;
    display:none!important;
}
.sh-savorito-preview-companion-bubble strong{
    display:block;
    font-size:12.5px;
    line-height:1.16;
    font-weight:400;
}
.sh-savorito-preview-companion-bubble span{
    display:block;
    margin-top:3px;
    font-size:10px;
    line-height:1.28;
    color:var(--sh-sav-muted);
}

/* Tablet keeps the exact same composition, only slightly tighter. */
@media(min-width:601px) and (max-width:900px){
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar{
        top:-45px;
        width:56px;
        height:56px;
    }
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg{
        width:56px;
        height:68px;
    }
    .sh-savorito-preview-companion{
        right:calc(100% - 22px);
        bottom:-7px;
        width:min(198px,calc(100vw - 190px));
    }
}

/* Phone: place the card lower and a little farther right than 0.20.6 so it
   clears the book arrows and visually hugs the launcher. */
@media(max-width:600px){
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher{
        justify-content:center;
        padding-left:8px;
        padding-right:8px;
    }
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar{
        left:50%;
        top:-40px;
        width:50px;
        height:50px;
        transform:translateX(-50%);
        background:transparent;
    }
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg{
        left:50%;
        top:0;
        width:50px;
        height:61px;
        transform:translateX(-50%);
        clip-path:inset(0 0 38% 0);
    }
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher::before{
        left:10px;
        right:10px;
        height:7px;
        border-radius:15px 15px 6px 6px;
    }
    .sh-savorito-preview-companion{
        right:calc(100% - 26px);
        bottom:-9px;
        width:min(188px,calc(100vw - 142px));
        transform:translateX(9px) translateY(4px) scale(.97);
    }
    .sh-savorito-preview-companion-bubble{
        padding:9px 11px;
        border-radius:14px;
        background:rgba(255,255,255,.91);
        box-shadow:0 9px 24px rgba(27,55,48,.13);
    }
    .sh-savorito-preview-companion-bubble strong{font-size:11.5px}
    .sh-savorito-preview-companion-bubble span{font-size:9px;line-height:1.24}
}

@media(max-width:360px){
    .sh-savorito-preview-companion{
        right:calc(100% - 30px);
        bottom:-9px;
        width:min(168px,calc(100vw - 132px));
    }
    .sh-savorito-preview-companion-bubble{padding:8px 9px}
    .sh-savorito-preview-companion-bubble strong{font-size:11px}
    .sh-savorito-preview-companion-bubble span{font-size:8.6px}
}

@media(prefers-reduced-motion:reduce){
    .sh-savorito.is-preview-companion-active .sh-savorito-launcher-avatar svg,
    .sh-savorito-preview-companion-bubble{
        animation:none!important;
        transition:none!important;
    }
}

/* 0.20.7 hotfix: the bubble span must be a block. As an inline element its
   translucent background fragmented across wrapped lines on narrow screens. */
.sh-savorito-preview-companion-bubble{display:block!important}

/* =========================================================
   0.20.8 · SAVORITO PREVIEW COMPANION · SEPARACIÓN FINAL
   La tarjeta queda completamente a la izquierda del launcher en móvil,
   tablet y desktop. La flecha es un indicador interno, no un speech-tail.
========================================================= */
.sh-savorito-preview-companion{
    right:calc(100% + 10px);
    bottom:-8px;
    width:min(220px,calc(100vw - 190px));
}
.sh-savorito-preview-companion-bubble{
    padding:10px 30px 11px 12px;
    background:rgba(255,255,255,.92);
}
.sh-savorito-preview-companion-bubble::after{
    content:"↘"!important;
    display:block!important;
    position:absolute;
    right:10px;
    bottom:7px;
    width:auto;
    height:auto;
    border:0!important;
    background:transparent!important;
    color:rgba(31,66,56,.62);
    font:400 14px/1 "Sniglet",system-ui,sans-serif;
    transform:none!important;
    pointer-events:none;
}
@media(min-width:601px) and (max-width:900px){
    .sh-savorito-preview-companion{right:calc(100% + 9px);bottom:-8px;width:min(210px,calc(100vw - 190px))}
}
@media(max-width:600px){
    .sh-savorito-preview-companion{right:calc(100% + 8px);bottom:-9px;width:min(190px,calc(100vw - 150px))}
    .sh-savorito-preview-companion-bubble{padding:9px 28px 10px 11px;background:rgba(255,255,255,.93)}
    .sh-savorito-preview-companion-bubble::after{right:9px;bottom:6px;font-size:13px}
}
@media(max-width:360px){
    .sh-savorito-preview-companion{right:calc(100% + 7px);width:min(168px,calc(100vw - 138px))}
    .sh-savorito-preview-companion-bubble{padding-right:26px}
}


/* =========================================================
   0.20.9 · SAVORITO ASISTENTE GLOBAL + FLECHA LATERAL
========================================================= */
.sh-savorito-nav{
    display:block;
    padding:8px 15px 14px;
    background:#fff;
    border-top:1px solid rgba(31,66,56,.07);
}
.sh-savorito-nav>span{
    display:block;
    margin:0 0 7px 2px;
    color:var(--sh-sav-muted);
    font-family:"Sniglet",system-ui,sans-serif;
    font-size:10px;
    font-weight:400;
    letter-spacing:.02em;
}
.sh-savorito-nav>div{
    display:flex;
    gap:7px;
    flex-wrap:wrap;
}
.sh-savorito-nav button{
    border:1px solid rgba(31,66,56,.12);
    border-radius:999px;
    background:var(--sh-sav-green-soft);
    color:var(--sh-sav-ink);
    padding:8px 11px;
    font-family:"Sniglet",system-ui,sans-serif;
    font-size:11.5px;
    font-weight:400;
    cursor:pointer;
    transition:background .18s ease,border-color .18s ease,transform .18s ease;
}
.sh-savorito-nav button:hover{
    background:#e7f3ed;
    border-color:rgba(46,103,88,.24);
    transform:translateY(-1px);
}
.sh-savorito.is-intro-typing .sh-savorito-nav,
.sh-savorito.is-reply-typing .sh-savorito-nav{
    opacity:.48;
    pointer-events:none;
}

/* El mensaje está a la izquierda del launcher; la flecha apunta horizontalmente
   hacia Savorito, nunca hacia abajo. */
.sh-savorito-preview-companion-bubble::after{
    content:"→"!important;
    right:9px;
    top:50%;
    bottom:auto!important;
    transform:translateY(-50%)!important;
    font-size:14px;
    line-height:1;
}

@media(max-width:600px){
    .sh-savorito-nav{padding:7px 12px 12px}
    .sh-savorito-nav>div{gap:6px}
    .sh-savorito-nav button{padding:7px 10px;font-size:10.5px}
    .sh-savorito-preview-companion-bubble::after{
        right:8px;
        top:52%;
        font-size:13px;
    }
}

/* 0.20.19 — saludo breve de Savorito en el Bio Hub de TikTok */
.sh-savorito.sh-savorito-tiktok-bio.is-tiktok-bio-greeting .sh-savorito-greeter {
    right: 14px;
    bottom: max(18px, env(safe-area-inset-bottom));
    width: min(330px, calc(100vw - 24px));
    height: 188px;
}
.sh-savorito.sh-savorito-tiktok-bio.is-tiktok-bio-greeting .sh-savorito-greeter-character {
    right: 2px;
    width: 104px;
    height: 136px;
}
.sh-savorito.sh-savorito-tiktok-bio.is-tiktok-bio-greeting .sh-savorito-greeter-character svg {
    width: 96px;
    height: 124px;
}
.sh-savorito.sh-savorito-tiktok-bio.is-tiktok-bio-greeting .sh-savorito-greeter-bubble {
    top: 18px;
    right: 88px;
    width: min(220px, calc(100vw - 126px));
    min-width: 0;
    padding: 11px 13px;
    border-radius: 17px 17px 6px 17px;
    font-family: "Sniglet", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12.5px;
    font-weight: 400;
    line-height: 1.42;
    text-align: left;
}

/* 0.20.20 — después del saludo queda el launcher compacto disponible. */
.sh-savorito.sh-savorito-tiktok-bio .sh-savorito-launcher,
.sh-savorito.sh-savorito-tiktok-bio .sh-savorito-panel {
    pointer-events: auto;
}
.sh-savorito.sh-savorito-tiktok-bio .sh-savorito-preview-companion {
    display: none !important;
}
