/* B387 · the live moments never rest on gray placeholder bars: what has not played yet is simply not there, then arrives */
.pl .sx-m:not(.on),.pl .sx-did li:not(.on),.pl .pl-hide:not(.on){opacity:0!important;transform:translateY(8px);transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}
.pl .sx-m.on,.pl .sx-did li.on,.pl .pl-hide.on{transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}
.okx:is(.s0,.s1,.s2,.s3,.s4) .okx-done{opacity:0!important;transition:opacity .45s}
.okx .okx-done{transition:opacity .45s}
/* phone reach: footer and row links answer a 44px touch, fields never zoom the page on iPhone */
@media (pointer:coarse){
  footer a:not(.cai-pill){padding-block:10px;margin-block:-10px}
  input,select,textarea{font-size:16px!important}
}
/* B388 · the OKR card too: an agent step or result that has not happened yet is not there, then arrives */
.okx.s0 .okx-steps li,.okx.s1 .okx-steps li:nth-child(n+2),.okx.s2 .okx-steps li:nth-child(n+3),.okx:is(.s0,.s1,.s2,.s3) .okx-ok{opacity:0!important;transform:translateY(6px);transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}
.okx .okx-steps li,.okx .okx-ok{transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}
/* B389 · the phone shell already gives the small footer links and the address links a 44px row (min-height); B387's
   padding with a matching negative margin made neighbours overlap them there, so in the shell they keep their own row */
@media (pointer:coarse){html.sh-on footer .ft-small a,html.sh-on footer address a{padding-block:0;margin-block:0}}
