.party-dock {
  --party-ink: #20322a;
  position: relative;
  isolation: isolate;
  width: 178px;
  height: 148px;
  margin: 0 clamp(16px, 2.5vw, 40px) 0 auto;
  padding-top: 25px;
  color: var(--party-ink);
  flex: none;
}
.party-dock.party-floating {
  position: fixed;
  right: var(--party-right, 16px);
  bottom: max(15px, env(safe-area-inset-bottom));
  margin: 0;
  z-index: 3;
}
.party-pair {display:flex;align-items:flex-end;justify-content:center;gap:6px;position:relative;z-index:1;}
.party-dock .party-toy {
  display: block;
  width: 82px;
  height: 100px;
  min-width: 44px;
  min-height: 44px;
  border: 0;
  border-radius: 15px;
  padding: 0;
  margin: 0;
  background: transparent;
  box-shadow: none;
  color: var(--party-ink);
  transition: background-color 130ms ease;
  transform: none;
  touch-action: manipulation;
}
.party-dock .party-toy:hover {background:#fffdf047;transform:none;}
.party-dock .party-toy:active {background:#fffdf080;transform:none;}
.party-dock .party-toy:focus-visible {outline:3px solid var(--party-ink);outline-offset:2px;box-shadow:0 0 0 5px #fffdf0;}
.party-dock .party-portrait {display:block;width:82px;height:100px;overflow:visible;stroke:var(--party-ink);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;fill:none;}
.party-ground {fill:var(--party-ink);stroke:none;opacity:.14;}
.party-green .party-flag {fill:#b7df35;}
.party-orange .party-flag {fill:#ffac64;}
.party-fold {fill:#fffdf0;stroke-width:1.8;}
.party-crease {stroke-width:1.5;opacity:.55;}
.party-marker-body {fill:#fffdf0;}
.party-marker-tip {fill:var(--party-ink);stroke-width:1.6;}
.party-marker-shine {stroke:#d8d9c5;stroke-width:3;}
.party-arm {stroke-width:2.8;transform-box:view-box;}
.party-arm-left {transform-origin:26px 57px;}
.party-arm-right {transform-origin:39px 57px;}
.party-legs {stroke-width:3;transform-origin:32px 82px;}
.party-flag-piece {transform-origin:26px 43px;}
.party-face {transform-origin:50px 32px;}
.party-eyes {stroke-width:3.8;transform-box:fill-box;transform-origin:center;animation:party-blink 8.2s linear infinite;}
.party-orange .party-eyes {animation-delay:2.7s;}
.party-brows {opacity:0;stroke-width:1.7;}
.party-cheek {stroke:#f5f2cd;stroke-width:2.2;}
.party-shrug-mouth {display:none;}
.party-creature {transform-origin:35px 96px;animation:party-idle 6.8s ease-in-out infinite;}
.party-orange .party-creature {animation-delay:-2.4s;}
.party-dock .party-toy:is(:hover,:focus-visible) .party-creature {animation-play-state:paused;}
.party-dock .party-toy:is(:hover,:focus-visible) .party-face {transform:translateY(-1px);}
.party-dock .party-toy:active .party-reaction {transform:translateY(3px) scaleY(.96);transform-origin:32px 96px;}
.party-toy[data-reaction] .party-creature {animation-play-state:paused;}
.party-toy[data-reaction=wave] .party-arm-right {animation:party-wave 1.1s ease-in-out both;}
.party-toy[data-reaction=wave] .party-flag-piece {animation:party-nod 1.1s ease both;}
.party-toy[data-reaction=cheer] .party-reaction {transform-origin:35px 96px;animation:party-cheer 1.4s cubic-bezier(.3,.7,.4,1) both;}
.party-toy[data-reaction=cheer] .party-arm-left {transform:rotate(110deg);}
.party-toy[data-reaction=cheer] .party-arm-right {transform:rotate(-100deg);}
.party-toy[data-reaction=cheer] .party-smile {stroke-width:3.4;}
.party-toy[data-reaction=shrug] .party-arm-left {animation:party-shrug-left 1.05s ease both;}
.party-toy[data-reaction=shrug] .party-arm-right {animation:party-shrug-right 1.05s ease both;}
.party-toy[data-reaction=shrug] .party-flag-piece {animation:party-tilt 1.05s ease both;}
.party-toy[data-reaction=shrug] .party-brows {opacity:1;}
.party-toy[data-reaction=shrug] .party-smile {display:none;}
.party-toy[data-reaction=shrug] .party-shrug-mouth {display:block;}
.party-toy[data-reaction=peek] .party-flag-piece {animation:party-peek 1.1s ease both;}
.party-note {font:700 10px/1.35 'Nunito Sans',Arial,sans-serif;text-align:center;margin:0 4px;max-width:170px;}
.party-status {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
.party-sparks {position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2;}
.party-dock .party-spark {position:absolute;width:13px;height:13px;stroke:var(--party-ink);stroke-width:1.4;overflow:visible;animation:party-spark 720ms ease-out both;}
.party-still *, .party-still *::before, .party-still *::after {animation:none!important;transition:none!important;}
.party-still .party-creature,.party-still .party-reaction,.party-still .party-face {transform:none!important;}
.party-still .party-sparks {display:none;}
body:has(dialog[open]) .party-dock {pointer-events:none;}
body:has(dialog[open]) .party-dock * {animation-play-state:paused!important;}
@keyframes party-idle {0%,25%,65%,100%{transform:translateY(0) rotate(0)}44%,49%{transform:translateY(-2px) rotate(1.6deg)}}
@keyframes party-blink {0%,47%,50%,100%{transform:scaleY(1)}48%,49%{transform:scaleY(.12)}}
@keyframes party-wave {0%,100%{transform:rotate(0)}20%{transform:rotate(-105deg)}35%,65%{transform:rotate(-132deg)}50%,80%{transform:rotate(-88deg)}}
@keyframes party-nod {0%,100%{transform:rotate(0)}25%{transform:rotate(-5deg)}55%{transform:rotate(4deg)}}
@keyframes party-cheer {0%,100%{transform:translateY(0) scale(1)}12%,58%{transform:translateY(2px) scale(1.04,.95)}30%{transform:translateY(-15px) rotate(-5deg) scale(.98,1.02)}44%{transform:translateY(0) scale(1.06,.94)}75%{transform:translateY(-9px) rotate(4deg)}88%{transform:translateY(0) scale(1.03,.97)}}
@keyframes party-shrug-left {0%,100%{transform:rotate(0)}25%,75%{transform:rotate(55deg)}}
@keyframes party-shrug-right {0%,100%{transform:rotate(0)}25%,75%{transform:rotate(-50deg)}}
@keyframes party-tilt {0%,100%{transform:rotate(0)}28%,70%{transform:rotate(-8deg)}}
@keyframes party-peek {0%,100%{transform:rotate(0)}28%,66%{transform:rotate(8deg)}}
@keyframes party-spark {0%{opacity:0;transform:translate(0,0) scale(.25)}15%{opacity:1}75%{opacity:1}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) rotate(var(--spark-turn)) scale(.75)}}
@media(max-width:760px) {
  .party-dock {width:152px;height:126px;padding-top:15px;margin:0 16px 0 auto;}
  .party-pair {gap:4px;}
  .party-dock .party-toy,.party-dock .party-portrait {width:70px;height:86px;}
  .party-note {font-size:9px;margin:0;}
}
@media(prefers-reduced-motion:reduce) {
  .party-dock *, .party-dock *::before, .party-dock *::after {animation:none!important;transition:none!important;}
  .party-dock .party-sparks {display:none;}
}
@media(forced-colors:active) {
  .party-dock .party-portrait {stroke:CanvasText;}
  .party-dock .party-flag,.party-dock .party-marker-body,.party-dock .party-fold {fill:Canvas;}
  .party-dock .party-toy:focus-visible {outline-color:Highlight;}
}
