:root {
    --wagi-ink: #160d3d;
    --wagi-violet: #7554d6;
    --wagi-soft: #eee8ff;
    --wagi-coral: #ff686c;
}

.wagi-pet,
.wagi-pet * {
    box-sizing: border-box;
}

.wagi-pet {
    position: fixed;
    z-index: 2147483000;
    width: max-content;
    touch-action: none;
    user-select: none;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.wagi-pet__sprite {
    background-repeat: no-repeat;
    image-rendering: pixelated;
    image-rendering: crisp-edges;
    cursor: grab;
    outline: none;
    filter: drop-shadow(0 10px 11px rgba(22, 13, 61, .18));
    transition: filter .18s ease;
}

.wagi-pet__sprite:active {
    cursor: grabbing;
}

.wagi-pet__sprite:focus-visible {
    filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0)) drop-shadow(0 0 0 4px var(--wagi-coral));
}

.wagi-pet__controls {
    position: absolute;
    display: flex;
    gap: 6px;
    bottom: -13px;
    left: 50%;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, 8px);
    transition: opacity .18s ease, transform .18s ease;
}

.wagi-pet:hover .wagi-pet__controls,
.wagi-pet:focus-within .wagi-pet__controls {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, 0);
}

.wagi-pet__controls button,
.wagi-pet__composer button {
    border: 2px solid var(--wagi-ink);
    background: var(--wagi-soft);
    box-shadow: 3px 3px 0 var(--wagi-ink);
    color: var(--wagi-ink);
    cursor: pointer;
    font: inherit;
    font-size: 10px;
    letter-spacing: .04em;
    padding: 5px 8px;
}

.wagi-pet__controls button:hover,
.wagi-pet__composer button:hover {
    background: var(--wagi-coral);
    color: #fff;
}

.wagi-pet__bubble {
    position: absolute;
    bottom: calc(100% + 18px);
    right: 0;
    width: min(280px, 68vw);
    border: 3px solid var(--wagi-ink);
    border-radius: 16px 16px 4px 16px;
    background: rgba(255, 253, 248, .97);
    box-shadow: 6px 6px 0 var(--wagi-ink);
    color: var(--wagi-ink);
    font-size: 13px;
    line-height: 1.45;
    padding: 12px 14px;
    transform: translateY(8px) scale(.96);
    transform-origin: 80% 100%;
    transition: opacity .18s ease, transform .18s ease;
}

.wagi-pet__bubble::after {
    position: absolute;
    right: 25px;
    bottom: -13px;
    width: 20px;
    height: 20px;
    border-right: 3px solid var(--wagi-ink);
    border-bottom: 3px solid var(--wagi-ink);
    background: #fffdf8;
    content: "";
    transform: rotate(45deg);
}

.wagi-pet__bubble.is-right {
    right: auto;
    left: 0;
    transform-origin: 20% 100%;
}

.wagi-pet__bubble.is-right::after {
    right: auto;
    left: 25px;
}

.wagi-pet__bubble.is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.wagi-pet__bubble:not(.is-visible) {
    opacity: 0;
}

.wagi-pet__bubble-text {
    position: relative;
    z-index: 1;
    margin: 0;
}

.wagi-pet__composer {
    position: absolute;
    bottom: 12px;
    left: calc(100% + 22px);
    width: min(304px, 76vw);
    border: 3px solid var(--wagi-ink);
    background: #fffdf8;
    box-shadow: 7px 7px 0 var(--wagi-ink);
    padding: 12px;
}

.wagi-pet__composer.is-left {
    right: calc(100% + 22px);
    left: auto;
}

.wagi-pet__composer.is-below {
    top: calc(100% + 24px);
    right: auto;
    bottom: auto;
    left: var(--wagi-composer-left);
}

.wagi-pet__composer-label {
    display: block;
    color: var(--wagi-violet);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .04em;
    margin: 0 28px 8px 0;
    text-transform: uppercase;
}

.wagi-pet__composer-row {
    display: flex;
    gap: 7px;
}

.wagi-pet__composer input {
    min-width: 0;
    flex: 1;
    border: 2px solid var(--wagi-ink);
    border-radius: 0;
    color: var(--wagi-ink);
    font: inherit;
    font-size: 12px;
    outline-color: var(--wagi-coral);
    padding: 8px 9px;
}

.wagi-pet__composer-row button {
    min-width: 36px;
    padding: 5px;
}

.wagi-pet__composer-close {
    position: absolute;
    top: 7px;
    right: 7px;
    width: 23px;
    height: 23px;
    border: 0 !important;
    box-shadow: none !important;
    color: var(--wagi-violet) !important;
    font-size: 18px !important;
    font-weight: 800;
    line-height: 1;
    padding: 0 !important;
}

@media (max-width: 520px) {
    .wagi-pet__bubble {
        right: -10px;
    }
}
