/* The exact pointer is the little dot. All artwork lets clicks pass through. */
.odt-companion{--portrait-width:78px;position:fixed;left:0;top:0;z-index:99980;pointer-events:none!important;user-select:none;isolation:isolate}
.odt-companion[hidden],.companion-toggle[hidden]{display:none!important}
.odt-companion *{pointer-events:none!important}
.companion-point{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border:1px solid white;border-radius:50%;background:#234c40;box-shadow:0 0 0 1px #234c40}
.companion-body{position:relative;width:max-content;transform-origin:50% 80%;filter:drop-shadow(0 4px 4px #152d2624)}
.companion-portraits{display:flex;align-items:end}
.companion-portrait{display:block;width:var(--portrait-width);height:calc(var(--portrait-width)*1.25);background-size:400% 100%;background-position:0 0;background-repeat:no-repeat}
.odt-companion[data-character="together"]{--portrait-width:62px}
.odt-companion[data-character="together"] .companion-portrait+.companion-portrait{margin-left:-12px}
.odt-companion[data-mood="think"] .companion-portrait{background-position:33.333333% 0}
.odt-companion[data-mood="wow"] .companion-portrait{background-position:66.666667% 0}
.odt-companion[data-mood="love"] .companion-portrait{background-position:100% 0}
.companion-caption{display:none;position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);width:max-content;max-width:180px;padding:6px 11px;border:1px solid #eadbcc;border-radius:16px;background:#fffbf1;color:#294b3d;font:600 11px/1.3 system-ui,sans-serif;text-align:center;box-shadow:0 3px 9px #28392f0d}
.odt-companion[data-mood="love"] .companion-caption,.odt-companion[data-mode="dock"] .companion-caption{display:block}
.companion-hearts{position:absolute;inset:0;opacity:0;transition:opacity .18s ease}
.odt-companion[data-mood="love"] .companion-hearts{opacity:1}
.companion-hearts i{position:absolute;left:-3px;top:35%;font:normal 19px/1 system-ui;color:#c44260;animation:odt-affection 1.8s ease-in-out infinite;animation-play-state:paused;text-shadow:0 1px 0 white}
.companion-hearts i:nth-child(2){left:auto;right:-3px;top:12%;font-size:14px;animation-delay:-.6s}
.companion-hearts i:nth-child(3){left:42%;top:-5%;font-size:11px;animation-delay:-1.2s}
.odt-companion[data-mood="love"] .companion-hearts i{animation-play-state:running}
.odt-companion[data-mode="dock"] .companion-point{display:none}
.odt-companion[data-mode="dock"] .companion-caption{left:auto;right:-6px;transform:none}
.odt-companion[data-interactive="true"] .companion-point{box-shadow:0 0 0 4px #ffffffbc,0 0 0 5px #234c40}
.companion-toggle{position:fixed;left:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:99981;min-height:44px;max-width:180px;padding:8px 13px;border:1px solid #c9d3c6;border-radius:24px;background:#fffdf5;color:#254b3e;font:600 11px/1.3 system-ui,sans-serif;box-shadow:0 3px 12px #263c3214}
.companion-toggle:focus-visible{outline:3px solid #994623;outline-offset:3px}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 html.odt-person-cursor,html.odt-person-cursor body,html.odt-person-cursor body *{cursor:none!important}
}
@media(max-width:760px){.odt-companion{--portrait-width:49px}.odt-companion[data-character="together"]{--portrait-width:42px}.companion-caption{font-size:10px;max-width:138px;padding:4px 8px}.companion-toggle{left:8px;bottom:max(8px,env(safe-area-inset-bottom));font-size:10px;max-width:125px}.companion-hearts i{font-size:15px}}
@media(prefers-reduced-motion:reduce){.companion-hearts{transition:none}.companion-hearts i{animation:none}}
@media print{.odt-companion,.companion-toggle{display:none!important}}
@keyframes odt-affection{0%,100%{transform:translateY(2px) rotate(-8deg) scale(.92)}50%{transform:translateY(-5px) rotate(6deg) scale(1.08)}}

/* A brief party on the closing affiliate link; no audio or navigation delay. */
.odt-companion[data-celebrating="true"]{--portrait-width:106px}
.odt-companion[data-celebrating="true"] .companion-caption{display:block}
.odt-companion[data-celebrating="true"] .companion-portrait{background-position:100% 0}
.odt-companion[data-celebrating="true"] .companion-portrait[data-party-ready="true"]{background-image:var(--party-image)!important;background-size:contain;background-position:center}
.odt-companion[data-celebrating="true"] .companion-portraits{animation:odt-toot .55s ease-in-out 2;transform-origin:50% 80%}
.companion-confetti{position:fixed;inset:0;overflow:hidden;contain:strict;z-index:99982;pointer-events:none!important}
.companion-confetti[hidden]{display:none!important}
.companion-confetti i{position:absolute;display:block;width:6px;height:10px;border-radius:1px;opacity:0;animation:odt-confetti 1.15s cubic-bezier(.12,.65,.4,1) both;pointer-events:none!important}
.companion-confetti i:nth-child(3n){width:7px;height:7px;border-radius:50%}
@keyframes odt-confetti{0%{opacity:1;transform:translate(0,0) rotate(0) scale(.5)}70%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.9)}}
@keyframes odt-toot{0%,100%{transform:rotate(0) scale(1)}35%{transform:rotate(-4deg) scale(1.05)}70%{transform:rotate(2deg) scale(1.02)}}
@media(max-width:760px){.odt-companion[data-celebrating="true"]{--portrait-width:74px}.odt-companion[data-celebrating="true"][data-character="together"]{--portrait-width:54px}}
@media(prefers-reduced-motion:reduce){.odt-companion[data-celebrating="true"] .companion-portraits{animation:none}.companion-confetti{display:none!important}}
@media print{.companion-confetti{display:none!important}}
