/* Setup (one steady window pinned to the top), the tour, the setup bar on Today, and Buster the puppy.
   Every class here starts with bs- (setup) or bp- (puppy) so nothing collides with the app's own styles. */

/* ---------- the puppy ---------- */
.bp{position:relative;display:inline-block;line-height:0;transform-origin:50% 100%;vertical-align:bottom}
.bp-dog{display:block;overflow:visible;transform-origin:50% 100%}
.bp-dog .eye{transform-box:fill-box;transform-origin:center;animation:bpBlink 5.2s infinite}
.bp-dog.nap .eye{animation:none;transform:scaleY(.12)}
@keyframes bpBlink{0%,93%,100%{transform:none}95.5%{transform:scaleY(.1)}}
.bp.breathe .bp-dog{animation:bpBreathe 3.2s ease-in-out infinite}
@keyframes bpBreathe{50%{transform:scale(1.015,1.03)}}
.bp.hop{animation:bpHop .6s cubic-bezier(.2,.7,.2,1)}
@keyframes bpHop{0%{transform:none}30%{transform:translateY(-18px) scale(.97,1.04)}62%{transform:translateY(0) scale(1.06,.93)}100%{transform:none}}
.bp.wag{animation:bpWag .9s ease-in-out}
@keyframes bpWag{15%{transform:rotate(-5deg)}35%{transform:rotate(5deg)}55%{transform:rotate(-3deg)}75%{transform:rotate(2deg)}100%{transform:none}}
.bp.tilt{animation:bpTilt 2.4s ease-in-out infinite}
@keyframes bpTilt{0%,55%,100%{transform:none}65%,88%{transform:rotate(-10deg)}}
.bp.tilt1{animation:bpTilt1 .9s ease-in-out}
@keyframes bpTilt1{35%,70%{transform:rotate(-10deg)}}
.bp.shake{animation:bpShake .45s linear}
@keyframes bpShake{20%,60%{transform:translateX(-4px)}40%,80%{transform:translateX(4px)}}
.bp.droop{animation:bpDroop .9s cubic-bezier(.2,.7,.2,1)}
@keyframes bpDroop{30%,70%{transform:translateY(5px) rotate(-5deg) scaleY(.92)}}
.bp.sniffing .bp-dog{animation:bpSniff .15s ease-in-out infinite alternate}
@keyframes bpSniff{to{transform:translateY(2px) rotate(-1.5deg)}}
.bp.trot{animation:bpTrot 1.2s cubic-bezier(.2,.7,.2,1) both}
.bp.trot .bp-dog{animation:bpBob .16s ease-in-out 7 alternate}
@keyframes bpTrot{from{transform:translateX(-260px)}to{transform:none}}
@keyframes bpBob{to{transform:translateY(-4px)}}
.bp.zoom{animation:bpZoom 1.5s ease-in-out}
@keyframes bpZoom{0%{transform:none}22%{transform:translateX(80px)}23%{transform:translateX(80px) scaleX(-1)}55%{transform:translateX(-80px) scaleX(-1)}56%{transform:translateX(-80px)}82%{transform:translateX(8px)}100%{transform:none}}
.bp-bub{position:absolute;bottom:calc(100% + 8px);left:50%;translate:-50% 0;white-space:nowrap;background:#f4efe6;color:#1b1f1d;font-size:14px;font-weight:700;line-height:1;padding:8px 11px;border-radius:12px;pointer-events:none;z-index:6;transform-origin:50% 100%;animation:bpBub 1.6s cubic-bezier(.2,.7,.2,1) both}
.bp-bub::after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:#f4efe6}
.bp-bub.acc{background:var(--accent);color:var(--onAccent)}.bp-bub.acc::after{border-top-color:var(--accent)}
.bp-bub.warm{background:var(--warm)}.bp-bub.warm::after{border-top-color:var(--warm)}
.bp-bub.start{left:0;translate:none;transform-origin:20px 100%}.bp-bub.start::after{left:24px}
.bp-bub.end{left:auto;right:0;translate:none;transform-origin:calc(100% - 20px) 100%}.bp-bub.end::after{left:auto;right:12px}
.bp-bub.right{bottom:auto;top:8px;left:calc(100% + 10px);translate:none;transform-origin:0 50%}.bp-bub.right::after{top:50%;left:-12px;margin:-6px 0 0;border-top-color:transparent;border-right-color:#f4efe6}
.bp-bub.right.acc::after{border-top-color:transparent;border-right-color:var(--accent)}
.bp-bub.side{bottom:auto;top:50%;left:auto;right:calc(100% + 10px);translate:0 -50%;transform-origin:100% 50%}.bp-bub.side::after{top:50%;left:100%;margin:-6px 0 0;border-top-color:transparent;border-left-color:#f4efe6}
.bp-bub.side.acc::after{border-top-color:transparent;border-left-color:var(--accent)}
.bp-bub.below{bottom:auto;top:calc(100% + 10px);left:auto;right:0;translate:none;transform-origin:calc(100% - 20px) 0}.bp-bub.below::after{top:auto;bottom:100%;left:auto;right:12px;border-top-color:transparent;border-bottom-color:#f4efe6}
.bp-bub.below.acc::after{border-top-color:transparent;border-bottom-color:var(--accent)}
@keyframes bpBub{0%{opacity:0;transform:translateY(6px) scale(.7)}12%{opacity:1;transform:scale(1.06)}20%,82%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-4px)}}
.bp-puff{position:absolute;font-size:14px;font-style:italic;font-weight:600;color:var(--text2);pointer-events:none;white-space:nowrap;animation:bpPuff .9s ease-out forwards}
@keyframes bpPuff{0%{opacity:0;transform:translate(0,4px)}30%{opacity:1}100%{opacity:0;transform:translate(12px,-22px)}}

/* ---------- layers that sit over the app ---------- */
.bs-layer{position:absolute;inset:0;color:var(--text);font-family:inherit;-webkit-font-smoothing:antialiased}
.bs-layer *,.bs-layer *::before,.bs-layer *::after{box-sizing:border-box}
.bs-layer button{font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.bs-layer button:focus-visible{outline:3px solid var(--accentGlow);outline-offset:2px}
.bs-layer[hidden],.bs-layer [hidden]{display:none!important}
#bsFloat{pointer-events:none;z-index:70}
#bsFloat .bs-fl{position:absolute;line-height:0}
@keyframes bsIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes bsRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes bsDraw{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
@keyframes bsSpin{to{transform:rotate(360deg)}}
.bs-ic{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.bs-spin{width:18px;height:18px;border-radius:50%;border:2.5px solid currentColor;border-right-color:transparent;animation:bsSpin .8s linear infinite;flex-shrink:0}
.bs-tick{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--onAccent);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.bs-tick svg{width:16px;height:16px;stroke-width:3;stroke-dasharray:24;animation:bsDraw .45s cubic-bezier(.2,.7,.2,1) both}
.bs-eb{font-size:14px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accentInk)}
.bs-body{font-size:15px;line-height:1.5;color:var(--muted);margin:0}
.bs-small{font-size:14px;line-height:1.45;color:var(--muted);margin:0}
.bs-card{background:var(--card);border-radius:18px;padding:14px 16px}
.bs-well{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accentSoft);color:var(--accentInk)}
.bs-well.w{background:var(--warmSoft);color:var(--warmInk)}
.bs-pill{height:54px;border-radius:999px;border:0;padding:0 18px;font-size:17px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;transition:background-color .3s cubic-bezier(.2,.7,.2,1),color .3s cubic-bezier(.2,.7,.2,1)}
.bs-pill.pri{background:var(--accent);color:var(--onAccent)}
.bs-pill.pri:disabled{background:var(--raised);color:var(--muted);cursor:default}
.bs-pill.sec{background:var(--raised);color:var(--text2)}
.bs-pill.sm{height:40px;padding:0 16px;font-size:15px}
.bs-ghost{border:0;background:none;color:var(--accentInk);font-size:15px;font-weight:600;min-height:44px;padding:0 6px}

/* ---------- welcome ---------- */
#bsWel{z-index:91}
.bs-scrim{position:absolute;inset:0;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.bs-wcard{position:absolute;left:12px;right:12px;top:max(58px,calc(env(safe-area-inset-top) + 14px));background:var(--sheet);border:1px solid var(--line);border-radius:28px;padding:22px 22px 18px;display:flex;flex-direction:column;gap:15px}
.bs-enter{animation:bsIn .3s ease both}
.bs-wcard h2{margin:6px 0 0;font-size:26px;line-height:1.2;letter-spacing:-.02em}
.bs-wdog{height:92px;display:flex;align-items:flex-end;position:relative}
.bs-wm{display:inline-block;vertical-align:-6px;color:var(--text);line-height:0}
.bs-brow{display:flex;gap:14px;align-items:flex-start}
.bs-brow .tx{display:flex;flex-direction:column;gap:3px}
.bs-brow b{font-size:16px}
.bs-brow span.s{font-size:14px;line-height:1.45;color:var(--muted)}
.bs-wbtns{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.bs-wbtns .bs-pill{width:100%}
.bs-wbtns .meta{display:flex;justify-content:space-between;align-items:center}
.bs-wbtns .meta span{font-size:14px;color:var(--muted)}

/* ---------- the setup window ---------- */
#bsWin{z-index:90;background:var(--bg);display:flex;flex-direction:column;padding-top:max(46px,calc(env(safe-area-inset-top) + 4px))}
.bs-top{flex-shrink:0;padding:4px 20px 8px;display:flex;flex-direction:column;gap:8px}
.bs-row{display:flex;align-items:center;justify-content:space-between;height:34px}
.bs-row .wl{display:flex;align-items:center;gap:10px}
.bs-row b{font-size:15px;font-weight:600;color:var(--text2)}
.bs-row b span{color:var(--muted);font-weight:500}
.bs-chap{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
.bs-cb{display:block;height:4px;border-radius:2px;background:var(--raised);overflow:hidden}
.bs-cb i{display:block;height:100%;width:0;background:var(--accent);transition:width .4s cubic-bezier(.2,.7,.2,1)}
.bs-skip{border:0;background:none;color:var(--muted);font-size:15px;font-weight:500;height:34px;padding:0 2px;white-space:nowrap}
.bs-body-w{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 20px 20px;display:flex;flex-direction:column;scrollbar-width:none}
.bs-body-w::-webkit-scrollbar{display:none}
.bs-body-w>*{flex-shrink:0}
.bs-body-w h2{margin:0 0 8px;font-size:26px;line-height:1.2;letter-spacing:-.02em;text-wrap:balance}
.bs-foot{flex-shrink:0;padding:12px 20px max(26px,calc(env(safe-area-inset-bottom) + 12px));display:flex;align-items:center;gap:10px}
.bs-foot.stack{flex-direction:column;align-items:stretch;gap:4px}
.bs-foot .bs-pill.pri{flex:1.4}
.bs-foot .bs-pill.sec{flex:1}
.bs-foot.stack .bs-pill.pri{flex:none}
.bs-back{width:54px;height:54px;border-radius:50%;border:0;background:var(--raised);color:var(--text2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.bs-scene{display:flex;align-items:flex-end;justify-content:center;gap:22px;padding-top:40px;margin:0 0 18px;min-height:170px}
.bs-drawer{position:relative;line-height:0}
.bs-padlock{position:absolute;right:-12px;top:-12px;width:38px;height:38px;border-radius:50%;background:var(--accent);color:var(--onAccent);display:flex;align-items:center;justify-content:center;transform:scale(0);transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
.bs-padlock.on{transform:none}
.bs-ok{display:flex;align-items:center;gap:12px;min-height:56px;margin-top:14px}
.bs-ok .tx{display:flex;flex-direction:column;gap:2px}
.bs-ok b{font-size:16px;color:var(--text)}
.bs-ok span.s{font-size:14px;color:var(--muted)}
.bs-ok.warn b{color:var(--warmInk)}
.bs-note{display:flex;gap:12px;align-items:flex-start;margin-top:18px}
.bs-note .tx{display:flex;flex-direction:column;gap:3px}
.bs-note b{font-size:15px}
.bs-note span.s{font-size:14px;line-height:1.45;color:var(--muted)}
.bs-acct{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;min-height:70px;margin-top:14px}
.bs-acct .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.bs-acct b{font-size:16px}
.bs-acct .st{font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-acct .st.ok{color:var(--accentInk)}
.bs-acct .st.warn{color:var(--warmInk);white-space:normal}
.bs-acct .act{position:relative;flex-shrink:0}
.bs-dash{position:absolute;left:0;bottom:2px;pointer-events:none;line-height:0;animation:bsDash 1s linear forwards}
.bs-dash .bp-dog{animation:bpBob .14s ease-in-out infinite alternate}
@keyframes bsDash{from{transform:translateX(-90px)}to{transform:translateX(400px)}}
.bs-sw{display:flex;align-items:center;gap:12px;margin-top:10px}
.bs-sw .tx{flex:1;display:flex;flex-direction:column;gap:3px}
.bs-sw b{font-size:16px}
.bs-sw span.s{font-size:14px;line-height:1.4;color:var(--muted)}
.bs-toggle{position:relative;width:52px;height:32px;border-radius:999px;border:0;background:var(--raised);flex-shrink:0;transition:background-color .3s cubic-bezier(.2,.7,.2,1)}
.bs-toggle i{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
.bs-toggle[aria-checked="true"]{background:var(--accent)}
.bs-toggle[aria-checked="true"] i{transform:translateX(20px)}
.bs-slot{min-height:84px}
.bs-perms{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.bs-perm{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--text2)}
.bs-perm i{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accentSoft);color:var(--accentInk)}
.bs-perm i svg{width:13px;height:13px;stroke-width:3}
.bs-perm.no i{background:var(--raised);color:var(--muted)}
.bs-steps{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:16px}
.bs-steps li{display:flex;gap:12px;align-items:flex-start}
.bs-steps .n{width:28px;height:28px;border-radius:50%;background:var(--accentSoft);color:var(--accentInk);font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.bs-steps .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.bs-steps b{font-size:16px}
.bs-steps span.s{font-size:14px;line-height:1.45;color:var(--muted)}
.bs-code{margin-top:6px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font:14px/1.4 ui-monospace,"SF Mono",Menlo,monospace;color:var(--text);word-break:break-all;user-select:all;-webkit-user-select:all}
.bs-codebtns{display:flex;gap:8px;margin-top:8px}
.bs-wait{display:flex;align-items:center;gap:12px;min-height:56px;margin-top:16px;color:var(--text2);font-size:15px}

/* the sorting board */
.bs-srcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.bs-srcs span{height:30px;padding:0 10px;border-radius:999px;background:var(--card);color:var(--text2);font-size:14px;display:inline-flex;align-items:center;gap:6px}
.bs-srcs svg{width:15px;height:15px;color:var(--accentInk)}
.bs-tick-card{margin-top:14px;background:var(--card);border-radius:18px;padding:0 14px 0 12px;height:74px;display:flex;align-items:center;gap:10px}
.bs-tick-card .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.bs-tick-card .from{font-size:14px;color:var(--muted)}
.bs-tick-card .subj{font-size:16px;color:var(--text)}
.bs-tick-card .from,.bs-tick-card .subj{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-sdog{position:relative;flex-shrink:0;line-height:0}
.bs-flip{display:inline-block;transform:scaleX(-1)}
.bs-chip{flex-shrink:0;width:112px;height:30px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;background:var(--raised);color:var(--muted);white-space:nowrap}
.bs-chip.k{background:var(--accentSoft);color:var(--accentInk)}
.bs-chip.w{background:var(--warmSoft);color:var(--warmInk)}
.bs-chip.d{background:var(--accent);color:var(--onAccent)}
.bs-count{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;color:var(--text2);margin-top:14px;font-variant-numeric:tabular-nums}
.bs-count b{color:var(--text);font-weight:600}
.bs-count .pct{color:var(--muted)}
.bs-bar{height:6px;border-radius:3px;background:var(--raised);margin-top:8px;overflow:hidden}
.bs-bar i{display:block;height:100%;background:var(--accent);transform-origin:left;transform:scaleX(0);transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.bs-bins{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}
.bs-bin{height:52px;border-radius:14px;background:var(--card);display:flex;align-items:center;gap:10px;padding:0 12px;color:var(--accentInk)}
.bs-bin svg{width:18px;height:18px}
.bs-bin span{flex:1;font-size:14px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-bin b{font-size:19px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.bs-bin.w{color:var(--warmInk)}
.bs-bin.s{grid-column:1/-1;color:var(--muted)}
.bs-bin.s b{color:var(--muted);font-size:16px}
.bs-live{margin-top:12px;font-size:14px;line-height:1.45;color:var(--muted)}

/* check */
.bs-cnum{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:14px}
.bs-find{position:relative;margin-top:64px;padding:20px 18px;display:flex;flex-direction:column;gap:10px}
.bs-find h3{margin:4px 0 0;font-size:21px;line-height:1.25;letter-spacing:-.01em;overflow-wrap:anywhere}
.bs-find p{margin:0;font-size:15px;line-height:1.5;color:var(--text2);overflow-wrap:anywhere}
.bs-find .src{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:4px}
.bs-find .src svg{width:16px;height:16px}
.bp.peek{position:absolute;right:18px;bottom:calc(100% - 18px);z-index:-1}

/* you're set */
.bs-donetop{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;margin:0 0 12px}
.bs-drows{display:flex;flex-direction:column;gap:8px}
.bs-drow{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:var(--card);border:0;color:var(--text);text-align:left;width:100%;animation:bsRise .45s cubic-bezier(.2,.7,.2,1) both}
.bs-drow .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.bs-drow b{font-size:15px}
.bs-drow span.s{font-size:14px;color:var(--muted)}
.bs-drow>svg{color:var(--muted);width:18px;height:18px}
.bs-drow.w b{color:var(--warmInk)}

/* reward */
.bs-wheel{position:relative;width:210px;height:210px;margin:18px auto 0;border-radius:50%;cursor:pointer;touch-action:none}
.bs-wheel .hole{position:absolute;inset:32px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;pointer-events:none}
.bs-presets{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:18px}
.bs-presets button{border:0;background:none;padding:6px 0;display:flex;justify-content:center}
.bs-presets i{width:36px;height:36px;border-radius:50%;display:block}
.bs-presets button[aria-pressed="true"] i{outline:3px solid var(--text);outline-offset:3px}
.bs-fx{position:absolute;inset:0;pointer-events:none;z-index:5}

/* tour */
#bsTour{z-index:92}
.bs-spot{position:absolute;border-radius:20px;box-shadow:0 0 0 9999px rgba(0,0,0,.62);transition:all .35s cubic-bezier(.2,.7,.2,1);pointer-events:none}
.bs-coach{position:absolute;left:16px;right:16px;background:var(--sheet);border:1px solid var(--line);border-radius:20px;padding:16px 18px 12px;display:flex;flex-direction:column;gap:6px;box-shadow:0 20px 50px rgba(0,0,0,.5)}
.bs-coach b{font-size:19px}
.bs-coach p{margin:0;font-size:15px;line-height:1.5;color:var(--text2)}
.bs-coach .ft{display:flex;justify-content:space-between;align-items:center;margin-top:4px}
.bs-coach .hd{display:flex;align-items:center;gap:10px}

/* on Today (inside the app's own screen) */
.bs-setupbar{margin-top:12px;width:100%;border:1px solid var(--accentGlow);background:var(--card);border-radius:16px;padding:12px 14px;display:flex;align-items:center;gap:12px;text-align:left;color:var(--text)}
.bs-setupbar .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.bs-setupbar b{font-size:15px}
.bs-setupbar .s{font-size:14px;color:var(--accentInk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-setupbar .m{font-size:14px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}
.bs-minibar{height:4px;border-radius:2px;background:var(--raised);overflow:hidden;margin-top:4px}
.bs-minibar i{display:block;height:100%;background:var(--accent);border-radius:2px}
.bs-bud{position:relative;border:0;background:none;padding:0;line-height:0;flex-shrink:0}
.bs-zz{position:absolute;top:-10px;right:-4px;font-size:15px;font-weight:700;color:var(--text2);animation:bsZz 2.6s ease-in-out infinite}
@keyframes bsZz{0%{opacity:0;transform:translate(0,4px)}30%,60%{opacity:1}100%{opacity:0;transform:translate(6px,-10px)}}

@media (prefers-reduced-motion:reduce){.bs-layer *,.bs-layer *::before,.bs-layer *::after,.bp,.bp *{animation:none!important;transition:none!important}}

/* update 9: get to know you */
.bs-kn{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:4px}
.bs-kdog{line-height:0;display:flex;justify-content:center;min-height:104px;align-items:flex-end}
.bs-kc{display:flex;align-items:center;gap:12px;width:100%;margin-top:10px;border:0;text-align:left;color:var(--text);font:inherit;cursor:pointer}
.bs-kc .tx{display:flex;flex-direction:column;gap:2px}
.bs-kc b{font-size:16px}
.bs-kc .s{font-size:13px;color:var(--muted)}
.bs-kc:active{transform:scale(.98)}
.bs-say{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;margin-top:12px;border:0;border-radius:980px;background:var(--accentSoft);color:var(--accentInk);font:inherit;font-size:16px;font-weight:600}
.bs-say.on{background:var(--accent);color:var(--onAccent)}
.bs-say .bs-ic{width:18px;height:18px}

/* ---------- v1 living polish ---------- */
.bp{isolation:isolate;touch-action:manipulation}
/* No paint containment here: the living Buster sits in a 0x0 box over his drawing, and "contain: paint" clipped him to nothing (he vanished everywhere). */
.brig{will-change:transform}
.bp-listen .bp-dog{animation:bpListen 1.2s ease-in-out infinite}
@keyframes bpListen{0%,100%{transform:translateY(0)}45%{transform:translateY(-1px)}}
.bp-confetti{position:absolute;left:50%;top:28%;width:7px;height:11px;border-radius:2px;background:var(--accent);pointer-events:none;z-index:8;animation:bpConfetti 1.15s cubic-bezier(.16,.76,.26,1) var(--d) both;transform-origin:center}
.bp-confetti:nth-child(3n){width:5px;height:8px;border-radius:50%}
.bp-confetti:nth-child(4n){width:8px;height:5px}
@keyframes bpConfetti{
  0%{opacity:0;transform:translate(0,8px) rotate(0) scale(.5)}
  12%{opacity:1}
  100%{opacity:0;transform:translate(var(--x),110px) rotate(var(--r)) scale(1)}
}
@media (prefers-reduced-motion:reduce){
  .bp-dog .eye{animation:bpBlink 7s infinite}
  .bp-confetti,.bp-listen .bp-dog{animation:none}
  .bp-confetti{display:none}
}
